У меня есть большая библиотека документов в формате PDF (документы, лекции, раздаточные материалы), по которым я хочу быстро перемещаться. Для этого мне нужны миниатюры.
В то же время, однако, я вижу, что ~/.thumbnails
папка накапливается большими пальцами, которые мне не нужны. Удаление ненужных миниатюр без удаления важных пальцев невозможно. Если бы я удалил их, мне пришлось бы перейти в каждую папку с важными документами PDF и позволить восстановиться кешу миниатюр.
Я хотел бы иметь возможность автоматизировать этот процесс. Можно ли как-то сказать nautilus предварительно кэшировать большие пальцы для набора заданных каталогов?
Примечание : я нашел набор сценариев bash, которые, кажется, делают это для изображений и видео, но не для каких-либо других документов. Может быть, кто-то более опытный в написании сценариев сможет настроить их для документов PDF или, по крайней мере, указать мне правильное направление на то, что мне придется изменить, чтобы это работало и с документами PDF.
Редактировать :
Ответ на этот вопрос был довольно ошеломляющим. Позвольте мне сначала поблагодарить всех, кто участвовал в решении этого. Вопрос, его ответы и все дискуссии вокруг него являются отличным примером того, как совместные усилия многих сторон могут привести к оптимальному решению. Это именно то, что делает Linux и Open Source такими замечательными.
Все предоставленные ответы заслуживают награды, которую я изначально выставил за этот вопрос. Тем не менее, есть только одна награда за вознаграждение. Всем будущим читателям я обязан выбрать ответ, который решит проблему наиболее эффективным способом. Чтобы определить, какое это решение, я выполнил последний тестовый тест, сравнивая три сценария на совместимость, скорость и качество вывода. Вот результаты:
Thumbnailer 1 , от rosch:
Совместимость : ✔ пробелы в имени файла; ✔ пробелы в имени каталога; ✘ Freedesktop совместимый
Скорость : 95 PDF за 12,6 сек.
Качество : сток наутилус качество
Дополнительные привилегии : 1.) автоматически пропускает файлы с существующими большими пальцами; 2.) Никаких дополнительных пакетов не требуется
Thumbnailer 2 , автор Martin Orda:
Совместимость : ✔ пробелы в имени файла; ✔ пробелы в имени каталога; ✘ Freedesktop совместимый
Скорость : 95 PDF за 70,0 сек.
Качество : значительно лучшее масштабирование, чем стоковые изображения.
Дополнительные привилегии : 1.) автоматически пропускает файлы с существующими большими пальцами 2.) совместима с широким спектром графических форматов, кроме PDF 3.) не зависит от платформы, не зависит от GNOME-компонентов
Thumbnailer 3 , Джеймсом Хенстриджем:
Совместимость : ✔ пробелы в имени файла; ✔ пробелы в имени каталога; ✔ Freedesktop совместимый
Скорость : 95 PDF за 10,8 сек.
Качество : сток наутилус качество
Дополнительные привилегии : 1.) автоматически пропускает файлы с существующими превью 2.) совместим со всеми форматами файлов, которые определены предустановленными миниатюрами
Все три сценария превосходны. Каждый из них имеет свой набор преимуществ и недостатков. Решение Rosch работает «из коробки» и может быть правильным выбором для пользователей с минимальной установкой.
Мартин Орда создал очень универсальный скрипт, который работает с различными форматами файлов и не зависит от DE. Превосходно по качеству миниатюр, но делает это за счет скорости.
В конце концов, именно решение от James лучше всего подходит для моего варианта использования. Это быстрый, универсальный и предлагает варианты пропустить файлы с существующими миниатюрами.
Абсолютный победитель: Джеймс Хенстридж
Дополнительная информация : Все три скрипта полностью совместимы с nautilus-скриптами . Вы можете легко установить их, следуя этому руководству .
Редактировать 2 : Обновлен обзор с улучшенным скриптом от rosch.
источник
Ответы:
Процедуры миниатюры Наутилуса на самом деле происходят из
libgnome-desktop
библиотеки, поэтому можно запускать те же миниатюры вне файлового менеджера.API немного сложен, но следующий скрипт Python должен помочь:
Сохраните это в файл и отметьте его как исполняемый. Вам также может понадобиться установить
gir1.2-gnomedesktop-3.0
пакет, если он еще не установлен.После этого просто вызовите скрипт с файлами или папками, которые вы хотите использовать в качестве аргументов. Миниатюры будут сохранены
~/.thumbnails
там, где такие приложения, как Nautilus, ожидают их найти.источник
48eebea785a185cdfc9d8f1a2ed34400.png
). На данный момент, однако, кажется, что он не поддерживает каталоги. Есть ли какой-нибудь способ сделать так, чтобы он проходил через каталоги рекурсивно?Сценарий ниже должен сделать эту работу. Он использует
evince-thumbnailer
который - насколько я знаю - поставляется с каждой установкой gnome и является стандартным thumbnailer.Сохранить как
pdfthumbnailer.sh
и сделать его исполняемым.Использование :
pdfthumbnailer.sh dir1 [dir2, ...]
Ограничение :
evince-thumbnailer
это происходит. Другими словами ... до тех пор, пока nautilus не регенерирует миниатюры, сценарий можно использовать для работы.Примечания :
evince-thumbnailer
иconvert
(из imagemagick): 3 секунды дляevince-thumbnailer
и 14 секунд дляconvert
.perl
, присутствует в установке по умолчаниюevince-thumbnailer
просто выведут ошибку - приглушено2>/dev/null
/usr/share/thumbnailers/evince.thumbnailer
чтобы увидеть список обработанных типов файлов~/.cache/thumbnails
.Более надежные пути использования
readlink
.Вдохновение :
http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=683394
источник
2a43dc2774e3dfe45a4337e0304e5b0a.png
. Это как же уменьшенное назван Наутилус:48eebea785a185cdfc9d8f1a2ed34400.png
. Я также заметил, что большие пальцы, созданные с помощью вашего скрипта, имеют размер 128x171px, в то время как встроенный миниатюра создает только миниатюры 96x128px.evince-thumbnailer
добавления тегов PNG, то это правильно: код, который вызывает внешние миниатюры, на самом деле переписывает изображения для включения тегов. Вы сможете убедиться в этом, запустивstrings -a
одну из миниатюр, созданных Nautilus.На какое-то время отвлекся и Рош победил меня :) Я не знал, что evince-thumbnailer существует (я не пользователь Gnome), но в любом случае, так как я уже написал это, вот оно. Требуется установленный imagemagick, проверьте и установите, если его там нет:
Сохраните как
mkthumb.sh
(например)chmod +x mkthumb.sh
и выполните его с абсолютными путями в качестве аргументов (вы можете использовать -s в качестве первого параметра для пропуска создания уже существующих миниатюр), то есть:Скрипт (я немного изменил его для поддержки большинства изображений, вы можете добавить больше расширений, если они вам нужны):
Он обрабатывает файлы с пробелами в их именах без проблем.
источник
2a43dc2774e3dfe45a4337e0304e5b0a.png
то время как nautilus называет его так48eebea785a185cdfc9d8f1a2ed34400.png
. Размеры, однако, соответствуют вашему сценарию. Вот сравнениеimagemagick
также, кажется, справляется с масштабированием намного лучше чемevince-thumbnailer
(см. сравнение выше для справки).Спецификация миниатюр включает в себя общие репозитории миниатюр, которые позволяют предварительно генерировать миниатюры, которые будут распространяться вместе со связанными файлами, вместо того, чтобы каждый пользователь генерировал свой собственный эскиз. Таким образом, теоретически вы можете сгенерировать миниатюры, а затем добавить их в общий репозиторий, что избавит вас от необходимости создавать их в будущем, если вы очистите свой каталог с миниатюрами или перенесете их все на другой компьютер или что-то еще.
http://specifications.freedesktop.org/thumbnail-spec/thumbnail-spec-latest.html#DIRECTORY
Эта страница Ask Ubuntu появилась в результатах поиска, когда я пытался выяснить, поддерживает ли какое-либо приложение общие репозитории миниатюр. К сожалению, кажется, что ни одно приложение не поддерживает их.
источник
Я написал пакет, который модифицировал скрипт Джеймса, включив в него многопроцессорность и возможность рекурсивного генерирования миниатюр. Пакет может быть установлен
pip
. Проверьте здесь для инструкций по установке.Пример использования:
-r
: рекурсивно генерировать миниатюры-w
: количество ядер для использованияисточник