Come visualizzare correttamente le icone nei preferiti di Safari (ovvero le favicon)?


6

Sto usando Safari su macOS Sierra. Ho aggiunto diversi siti di uso comune alla mia sezione dei preferiti, in questo modo:

My favorites icons

(ci sono 10 icone e tutte tranne 2 sono visualizzate come l'icona corretta e corretta dal sito.Ad esempio, l'icona di Wikipedia ha l'icona W grande.Tuttavia, per Google Drive e Gmail, le icone sono solo grandi, brutti, G generici)

Vorrei che i due siti di Google mostrassero correttamente anche le loro icone. All'inizio, pensavo che fosse perché tutti e 8 i siti "correttamente visualizzati" avevano configurato correttamente le loro "Impostazioni Safari" o qualcosa del genere, mentre Google non ci riusciva (anche se questo non sembra troppo plausibile).

Tuttavia, se preferisco andare al menu principale in Safari, fai clic su Segnalibri & gt; Mostra segnalibri, ottengo il seguente:

My bookmarks list

Stranamente, Questo tempo, i due siti di Google fare hanno correttamente visualizzato le icone, mentre è invece tre altro siti (su 10) che non vengono visualizzati: vale a dire Wikipedia, Amazon e New York Times.

Quindi sembra che ci siano Due set di icone, "grande" e "piccolo", e per icone grandi, Google Drive e Gmail non vengono visualizzati correttamente, mentre gli altri 8 sono, e d'altra parte, per piccolo icone, Google Drive e Gmail siamo visualizzato correttamente, mentre sono Wikipedia, Amazon e NYTimes non .

In realtà non mi importa troppo delle icone piccole, ma mi piacerebbe davvero che tutte le icone grandi fossero visualizzate correttamente. Come lo posso fare?

Risposte:


1
#!/bin/zsh
# Fix Safari Favorites Icons

LSD="Library/Safari"; TIC="Touch Icons Cache"; TAB="cache_settings"; DIR="/$HOME/$LSD/$TIC/"
DBF="$DIR/${${TIC// /}%s*}${${(C)TAB}/_/}.db"; SQL=$(sqlite3 "$DBF" "SELECT host FROM $TAB")
diff <(ls "$DIR/Images") <(for i in "${=SQL}"; do echo ${(U)$(md5 -qs $i)}.png; done | sort)
sqlite3 "$DBF" "UPDATE $TAB SET ${${${(L)TIC// /_}#*_*}/s/_is_in}=1,download_status_flags=1"
for file in "$1"/*.png; do URL="$(plutil -convert xml1 -o - "$HOME/$LSD/Bookmarks.plist" | \
awk -F '[</>]' -v f="${${file##*/}%%.*}" '{if($3~f){for(i=0;i<3;i++)getline;print $5}}')"; \
cp -fv "$file" "$HOME/$LSD/Touch Icons Cache/Images/${(U)$(md5 -q -s $URL)}.png"; done; exit

Da qui: https://gist.github.com/dardo82/f7cc7c5c864fb5afa04bb12ecbcf3a9f

Il mio script prende una cartella con le icone di tocco mancanti come unico argomento.

I file devono avere lo stesso nome del segnalibro associato.

chflags uappnd ~/Library/Safari/Touch\ Icons\ Cache/Images

ti consente di conservare tutte le favicon svuotando il resto della cache di Safari.

Ho migliorato l'essenza:

#!/bin/zsh

# Fix Safari Missing Touch Favicons

HLSD="$HOME/Library/Safari"; SCD="$HLSD/Touch Icons Cache/Images"

typeset -A BMA; BMA=($(plutil -p "$HLSD/Bookmarks.plist" \
| sed -n '/title/{h;n;n;H;x;p'$'\n''}' \
| awk -F'"' '{name=$4; getline; if($0~/\"[a-z]+:\/\//){print name" "$4}}'))

for bmn in ${(k)BMA[@]}; do
cp -v "$1/$bmn.png" "$SCD/${(U)$(md5 -qs ${${${BMA[$bmn]}#*//}%%/*})}.png"; done

1
questa è una soluzione semplice e veloce. Ero confuso su come usare lo script in un primo momento prima di leggere questa risposta con più attenzione, ma descriverò esplicitamente un esempio per quelli di noi come me che raramente eseguono script di shell: se, ad esempio, il segnalibro denominato "Gmail" non viene visualizzato un'icona, scarica qualsiasi icona adatta, come questo , mettilo in una cartella come ~ / Desktop, cd in quella cartella, rinomina il file "Gmail.png" e poi "zsh fixicon", dove fixicon è un file di testo contenente lo script sopra, ed è stato "chmod + x "ed.
xdavidliu

Sì, hai ragione, grazie per avermi dedicato del tempo più verboso di me ...
dardo82

2

Ecco un trucco che funziona molto bene (richiede una quantità moderata di semplice manipolazione dell'immagine.) Inoltre, vedi una nota alla fine di questa risposta per non perdere completamente questa correzione e doverla ripetere). sembra che il problema è che le icone fornite dai siti Web sono state progettate per il segnalibro bar , che ha icone più piccole e non il safari preferiti schermo, che ha icone più grandi (almeno 144 x 144).

Le icone stesse sono memorizzate in ~ / Library / Safari / Touch Icons Cache / Images /, con nomi molto lunghi (qualcosa come "908F6BBF6DA814ABAF917C4E7BB9E36F.png"). Quando viene aggiunto un nuovo Preferito (ad esempio New York Times, nel caso della domanda originale) e l'icona viene visualizzata correttamente nella schermata Preferiti, nella cartella Cache sopra indicata viene visualizzato un file 144 x 144, e tutto è buono e spiffy . Tuttavia, se, ad esempio, viene aggiunto Gmail, e al posto della bella icona di Gmail viene visualizzata una grossa e non descrittiva G, significa che una piccola png (progettata per un segnalibro bar invece della schermata preferita) è apparso nella cartella Cache. (in alternativa, se non compare nemmeno un png minuscolo errato in quella cartella, preferisce semplicemente un altro sito "esca" che fa fare apparire un file png, eseguire quanto segue e quindi modificare il nome e l'URL del preferito in un secondo momento).

Quindi per correggere l'icona, crea semplicemente un altro png che abbia la risoluzione corretta di 144 x 144 (vedi nota sotto), quindi usa quel png creato per sostituire il piccolo file "errato" nella cartella Cache delle icone di tocco, assicurandoti di mantenere il nome file lungo costante. Esci da Safari (Comando-Q) e riavvia, e l'icona appare perfettamente, in questo modo:

Fixed favorites screen

Nota che Gmail e Google Drive ora hanno le icone corrette. Dovevo fare la stessa cosa anche per The Economist, dato che anche quel sito non forniva una favicon 144 x 144 corretta.

Per un modo molto semplice di creare un'icona 144 x 144 utilizzando solo l'anteprima, è sufficiente scaricare un'immagine ad alta risoluzione dell'icona (Gmail, Google Drive) o qualsiasi altra cosa, aprire in anteprima, quindi strumenti-> & gt; regolare le dimensioni su 144 larghezza . Ora metti da parte questa immagine e chiamala "immagine A". Nota che la trasparenza a volte causa problemi alle favicon di safari (ad esempio se una regione di un'immagine è incolore, il colore effettivamente visualizzato in quelle regioni potrebbe essere incoerente). Se ciò accade, possiamo creare uno sfondo bianco. Per fare questo, basta fare il comando-shift-4 e trascinare una porzione rettangolare di qualsiasi porzione bianca dello schermo, quindi prendere lo screenshot risultante e ridimensionarlo a 144 x 144. Infine, prendere "immagine A" di prima, e copiare e incollare su questo spazio bianco. Questo di solito crea un'icona molto bella.

Nota importante: se ti capita di avere la voce di menu "Sviluppatore" (ad esempio nella parte superiore dello schermo, vicino a "Segnalibri" e "Finestra") abilitata nelle preferenze di Safari, assicurati di non selezionare "Cancella cache", altrimenti questo cancellerà tutte le icone che hai fatto anche tu. Inoltre, semplicemente Clearing History fa la stessa cosa. In alternativa, se vuoi veramente cancellare la cronologia o svuotare la cache per avere più spazio sul disco, salva le icone personalizzate che hai creato prima di svuotare; in questo modo puoi rimetterli in seguito senza doverli creare nuovamente.

Le cache possono anche essere cancellate automaticamente a volte, quindi è una buona pratica creare backup di icone.


2
Ti suggerisco di fare i backup delle icone che fai, dato che le cartelle della cache possono essere cancellate in qualsiasi momento, a volte per sbaglio
Skeleton Bow

"Nota che la trasparenza causa problemi alle favicon del safari" Sembra funzionare bene per me. Sembra funzionare anche per te, come per la tua icona di Google Drive, giusto?
Skeleton Bow

1
Ah, buon punto Skeleton Bow, hai ragione riguardo all'icona di Google Drive, entrambi con uno sfondo trasparente e che stanno benissimo. Tuttavia, il motivo per cui ho aggiunto quella nota è perché la mia icona di Economist aveva una barra rossa sul testo "trasparente" e talvolta mostrava il testo come bianco o nero, l'ultimo dei quali sembra davvero strano. Ho dovuto inserire uno sfondo bianco per visualizzare correttamente il testo. Ho leggermente modificato la mia risposta per riflettere quanto sopra.
xdavidliu

Grazie! Ma oh! Sto vivendo i problemi che hai menzionato. Cercherò di scoprire cosa causa esattamente questo problema di trasparenza ...
Skeleton Bow

0

Una soluzione a lungo termine sarebbe contattare l'editore del tuo sito Web per aggiungere le icone corrette in modo appropriato.

Ad esempio, possiedo un sito web su Wix, ed è solo questione di aggiungere alcune righe di Codice di intestazione con collegamenti all'immagine della mia icona, quindi l'icona del sito sembra funzionare come previsto. Quindi dovrebbe essere facile convincere i tuoi editori preferiti ad aggiungere l'icona.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.