Como pesquisar os Favoritos do Firefox?

4

É possível fazer uma pesquisa de texto completo (ou até melhor regexp) automaticamente em todos os sites que eu tenho na minha lista de marcadores?

Editar

Existe algum outro navegador onde isso é possível?

    
por student 08.03.2011 / 21:17

2 respostas

1

Talvez você possa usar o backup .json encontrado dentro do ~/.mozilla/firefox/'profile name'/bookmarkbackups/ para pesquisar os sites e, em seguida, procurar expressões dentro desses sites.

    
por Felipe 09.03.2011 / 00:55
1

O script a seguir acessará o backup automático mais recente de seus favoritos e emitirá uma solicitação para cada link HTML , que é um texto simples formatado. Ele usa um navegador da web chamado Terminal.links (está no repositório do Ubuntu) ... Ele também usa um editor de texto leve chamado leafpad , para que você possa modificar, adicionar, alterar os links desejados (ele também está no repositório do Upunto) ...

Ele não busca links ... apenas te dá a página que o link conecta a ...

A saída da página web capturada é gravada em um arquivo de texto que é aberto em gedit (mas você pode modificá-lo para usar grep, sed, awk, vim, menos ... etc ...)

Aqui está o script: (Provavelmente tem alguns bugs, mas ele não grava no seu arquivo de histórico de favoritos, ele apenas os lê ...

#!/bin/bash 
#
# mame: ffhtmllinks
#
# requires:  firefox ...(The source of the bookmarks, using the auto backup list)
#                            TODO: use current list (but where is it?) 
#            leafpad ...(It acts as an editable dialog)
#            links   ...(Terminal web browser, which can write formatted document to stdout)

bname=$(basename $0)
ffdir="$HOME/.mozilla/firefox"
[[ ! -e "$ffdir" ]] && { echo "ERROR: Could not find Firefox config directory:" ; echo "$ffdir" ; exit 1 ; } 
echo  -e "\n# Profile Name\tDirectory\n= ============\t================"
< "$ffdir/profiles.ini" sed -n \
-e "/^\[Profile[0-9]\]$/,/^Path=/{
     :top
         s/^Name=\(.*\)//; t holdname 
         s/^Path=\(.*\)//; t havepath 
         n; b top
     :holdname
         h; n; b top 
     :havepath
         x; G; s/\(.*\)\n\(.*\)/:\t/p
}" | nl -w 1 -s ' ' > "$ffdir/$bname.names"
cat "$ffdir/$bname.names"
echo  -e "\nType the Name (or line number) of the Profile" \
         "\n         whose bookmarks you want to search"
read name
name="${name%% /}"
name="${name## /}"
<"$ffdir/$bname.names" sed -n "/^\($name .*\)\|\([0-9]\+ $name\)$/ p" > "$ffdir/$bname.sel"     
selct=$(<"$ffdir/$bname.sel" wc -l)
(( selct != 1 )) && { echo "ERROR: Could not find Profile:" ; echo "$name" ; exit 2 ; }

profdir="$ffdir/$(<"$ffdir/$bname.sel" sed -n "s/^[0-9]\+ [^"$'\t'"]\+"$'\t'"\(.*\)$//p")"
bbakdir="$profdir/bookmarkbackups"     
[[ ! -e "$profdir"  ]] && { echo "ERROR: Could not find Firefox Profile directory:" ; echo "$profdir" ; exit 3 ; } 
[[ ! -e "$bbakdir"  ]] && { echo "ERROR: Could not find Firefox Bookmark Backup directory:" ; echo "S$bbakdir" ; exit 4 ; }
bbakjson="$(for f in "$bbakdir/bookmarks"* ; do echo "$f" ; done | sed -n \$p)"
[[ ! -e "$bbakjson" ]] && { echo "ERROR: Could not find Firefox Bookmark Backup .json file:" ; echo "  $bbakjson" ; exit 4 ; }
bbakhtml="$ffdir/$bname.bbakhtml"     
<"$bbakjson" sed -n "s/,\"uri\":\"http/\n"$'\x01'===$'\x01'"http/gp" \
            |sed -n "s/^"$'\x01'"==="$'\x01'"\([^"\""]\+\)\".*/\n\n/p" \
            |sed "/^$/ d" \
            >"$bbakhtml"
echo "===="
echo "INFO: About to open the list of bookmark links in a text editor (leafpad)..."
echo "      You can modify, add or remove links as you like..."
echo "      It is only a temporary file, so you won't loose your bookmarks..."
echo "  NB: You must actually EXIT 'leafpad' before this process can proceed."
echo
echo -n "Press Enter to open the bookmarks list in 'leafpad'... "
read x
echo
div="####################################################################################"     
pagedump="$ffdir/$bname.bbakdump" ; cp /dev/null "$pagedump"
linkcnt=$(<"$bbakhtml" wc -l); linklnb=1
<"$bbakhtml" leafpad 2>/dev/null
echo "======================================="
( while IFS= read -r link ; do
  echo -e "\n\n$div\n$div\n$div\n# \n# Link $((linklnb++)) of $linkcnt\n# \n"
  links -dump "$link"  
done <"$bbakhtml" ) |tee >( sed -n p >>"$pagedump" ) | sed -n p
wait 2 # TODO need a wait loop here for asynchronous process-substitution (sleep will have to do for now)
gedit "$pagedump"
exit
#
    
por Peter.O 08.04.2011 / 12:36