Руководство по допиливанию для новичка- от новичка

Автор el guahiro, июля 26, 2015, 17:02:01

« предыдущая - следующая »

el guahiro

марта 09, 2020, 02:43:19 #1455 Последнее редактирование: марта 21, 2020, 15:05:00 от el guahiro
Освобождаем место на Android смартфоне средствами Linux
Внезапно Google попросил у меня купить платную подписку Google Drive - типо место закончилось.
У меня за короткий период времени скопилось на  смартфоне около 15 Gb фоток, хотя я не фанат фотографии. И хотя осталось ещё достаточно места, подумалось, что неплохо бы:
a) Удалить тяжёлые фотки и видео из Google аккаунта (чтобы не включать платный);
б) Сделать коллекцию фоток полегче, что удобно во многих отношениях, прежде всего от переполнения харда смартфона где-нибудь за границей или в турпоходе, где чистить данные штатными средствами Android некогда и долго.
Посему решаю переконвертировать все фоты в webp и видео в webm - это в 10 раз легче при правильно подобранных параметрах.
1) Делаю ПКМ Thunar на команду (!! Внимание, там где фотографий больше сотни, лучше запускать команду в терминале, частями, см.ниже):
find . -regex  '.*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\).*' -print0  | xargs  -0 -L1 file --mime-type |sed -n 's#: *image/[^ :]*$##p' | parallel 'cwebp -q 50 -m 6 -z 9 {} -o {.}.webp' ; find . -regex ".*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)$" -execdir copy_date_from_file.sh {} \+ ; find . -regex  '.*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\).*' -delete;  notify-send "Закончено!"Условие появления ПКМ: Каталоги.
Здесь скрипт copy_date_from_file.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for f in *.tif *.TIF *.jpg *.JPG *.jpeg *.JPEG *.png *.PNG ; do touch -r "$f" "${f%.*}".webp ;  done
Ему надо дать права на исполнение и забросить в ~./local/bin
Объединённая команда иногда не успевает зацепить дату, поэтому делаем команды по порядку:
find . -regex  '.*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\).*' -print0  | xargs  -0 -L1 file --mime-type |sed -n 's#: *image/[^ :]*$##p' | parallel 'cwebp -q 50 -m 6 -z 9 {} -o {.}.webp'
find . -regex ".*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\)$" -execdir copy_date_from_file.sh {} \+;
find . -regex  '.*\(jpg\|JPG\|jpeg\|JPEG\|png\|PNG\).*' -delete;  notify-send "Закончено!"
Вышеприведённая группа команд позволяет преобразовать рекурсивно все картинки в webp в глубово вложенных директориях на серьёзном для домашнего юзера объёме файловой системы - я проделал это на рабочем ноуте в папке с проектами весом100+ Gb.
Проверить, какие картинки остались в папке:
find . -type f -exec file {} \; | awk -F: '{if ($2 ~/image/) print $1}' Проверить дату получившихся webp файлов:
find . -regex ".*\(webp\)$" -exec stat --format '%Y :%y %n' "{}" \;  | sort -r
Поскольку файлов у меня много, для первого раза, скопировав файлы с устройтсва, запустил в папке с фотками вышеуказанную длинную команду. Надо же видеть, что происходит...
В результате работы команды исходные файлы, заменяемые на webp, удаляются,  в конце вылезает уведомление что всё готово.
Однако при копировании файлов по MTP протоколу (по шнурку) на Android с  ноутбука, реальная дата создания файлов теряется, и устанавливается текущая.
В альбоме с фотографиями и видео наступает хаос, т.к. все фоты не рассортированы по годам и месяцам, как мы привыкли..
Не беда! Поможет установка ADB:
sudo apt-get update
sudo apt-get install android-tools-adb
sudo apt-get install android-tools-fastboot
Когда ADB установлен, включаем отладку по USB на Adnroid девайсе , подключаем его по шнурку к ноутбуку и делаем в терминале:
adb devicesтерминал мне выдал
List of devices attached
SBXDU19416005529 device
Ok, смартфон виден компьютеру.
Копировать файл или директорию с устройства можно командой:
adb pull /sdcard/директория_в_смартфоне/файл /директория_в_ноутено проще через копирование Thunar. У меня оно дату создания не сбивает (связка телефон Huawei - ноут Dell).
При копировании по adb это выглядит так (команды adb копируют файлы с конкретным названием, не поддерживая *, поэтому копирую папку с фотками):
user@device:~$ adb pull /sdcard/DCIM/Camera/ '/home/user/Рабочий стол/фото смартфон Huawei P 30 Lite/'
/sdcard/DCIM/Camera/: 1996 files pulled. 24.5 MB/s (13894621963 bytes in 541.105s)
Чтобы послать файл на смартфон. используем команду в терминале ноутбука:
adb push /директория_в_ноуте/файл /sdcard/директория_в_смартфонеАдрес "директория_в_смартфоне" можно посмотреть в файловом менеджере на смартфоне.
Потом, выключаю синхронизацию папки с Google Photo в настройках Android : Google Photo> Настройки>Автозагрузка и синхронизация, через файловый менеджер на телефоне удаляю папку DCIM/Camera и создаю её заново.
Через интерфейс Google Photo удаляю все фоты с аккаунта Google.
Также в папке на ноуте сжимаю видео в webm. В один поток (медленно)::
find ./  "$VIDEOS" -maxdepth 1 -name '*.mp4' -exec sh -c 'ffmpeg -i "$0" -c:v libvpx -crf 10 -b:v 1M -c:a libvorbis "${0%%.mp4}.webm"' {} \;..иногда выдаёт ошибку, сжатие не максимальное.
Поэтому лучше так, с помощью gnu parallel (быстро):
parallel -j 4 'ffmpeg -v 0 -i "{}" $vp9_params $opus_params -f webm "{.}.webm"' \</dev/null ::: *.mp4Потом беру метку времени у первоначальных файлов
for i in *.mp4 ; do touch -r "$i" "${i%.*}".webm; doneИ в завершение удаляю исходные файлы:
rm ./*mp4
Потом, отправляю файлы обратно в смартфон с помощью команды:
for f in *.webp ; do adb push "$f" '/sdcard/DCIM/Camera' ; done
for f in *.webm ; do adb push "$f" '/sdcard/DCIM/Camera' ; done
Включаю синхронизацию папки с Google Photo в настройках Android : Google Photo> Настройки>Автозагрузка и синхронизация.
Предварительно через интерфейс файлового менеджера смартфона удаляю фотки со смартфона.
Все файлы, скопированные таким методом, сохранили в смартфоне свою реальную дату создания, расположившись в Галерее смартфона в точно таком же порядке, как и оригинальные фотки.
Коллекцию фоток описанным методом сжали в 7 раз.
К сожалению, webp похоже не поддерживает геотеги, но разработчики обещают.
В завершение, ночная панорама заволжских видов около г. Нижний Новгород, вид от памятника Чкалову, около Кремля. Размер 9908x3299 px. Сшит с фоток, снятых "с руки" на Huawei P 30 Lite в программе Hugin.Файл весит всего 462 kB...правда, при загрузке на сервис https://ibb.co они зачем-то его преобразовали в jpeg 11 mb.


PS. от 23 марта. Поправил команду, т.к. чистил свой ноут и уже по опыту ошибок добавил рекурсивный запуск сразу в больших глубоко вложенных директориях. Директорию с проектами на 100 Gb чистил минут 30, выбрав и преобразовав все картинки в webp. Сэкономил 15 Gb.

Надеюсь, кому-то поможет. Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

марта 18, 2020, 22:36:47 #1456 Последнее редактирование: марта 19, 2020, 13:02:20 от el guahiro
Иногда бывает необходимость посмотреть последние изменённые файлы или директории. Особенно, если файловая структура большая и память уже подводит. Можно воппользоваться gnome-search-tool или mate-search-tool (последняя удобней, я об этом писал) и задать поиск по последним файлам за период.
Мне лично забивать даты влом, поэтому сочинилось действие ПКМ Thunar под названием "Последние 25 файлов/директорий" на команду:
zenity  --width 1400 --height 700 --info --title="Последних 25" --text="$(find %f -type f -printf '%%TY-%%Tm-%%Td %%TT %%p\n' | sort -r | head -25)"; zenity  --width 1400 --height 700 --info --title="Последних 25" --text="$(find %f -type d -printf '%%TY-%%Tm-%%Td %%TT %%p\n' | sort -r | head -25)"Условие появления: Каталоги.
Иконка: любая
Можно ширину width  и высоту height  изменить под разрешение своего экрана.
Теперь, при нажатии на этот ПКМ вылезает табличка с последними 25-ю изменёнными файлами, в при нажатии Ok на этой табличке - вылезает табличка с последними 25-ю изменёнными директориями. Очень удобно.

Всем не болеть. И не падать духом. Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

марта 18, 2020, 23:36:25 #1457 Последнее редактирование: марта 19, 2020, 09:03:16 от el guahiro
#Restore photo creation dates from your Android, IOS, Windows Phone camera
В результате бестолковых бэкапов, переноса видео- и фотоколлекции с харда на хард образовалась коллекция видео и фото со сбитыми датами создания. Это мешает сортировке фотоколлекции, особенно если забросить в в Google Photo, то получается каша.
Исправляю это.
1. Сначала в тех папках, где я ещё не конвертнул изображения в webp:
exiv2 -T rename *.jpgУтилита exiv2 есть в репах, ставится без проблем.
Получилось не везде. Извлекаю даты из имён файлов.
Вытираю с помощью find все буквы, тире и нижние подчёркивания:
rename 's/_|-|img|IMG|WP//gi' ./*Если есть другие буквы, впишите вместо WP (вряд ли у вас был Windows Phone).
Потом выставляю время в часах и минутах
for i in *.mp4; do touch -t ${i:0:12} $i; done;for i in *.MOV; do touch -t ${i:0:12} $i; done;for i in *.webp; do touch -t ${i:0:12} $i; done;for i in *.jpg; do touch -t ${i:0:12} $i; done;for i in *.JPG; do touch -t ${i:0:12} $i; done;Если с именами что-то не так (какая-то мыльница у сына в спортлагере), то делаю:
for i in *.webp; do touch -t ${i:0:8} $i; done;
Время выставляется в днях, остальное будет по нулям
for i in *.mp4; do touch -t ${i:0:8}С секундами пробовал
for i in *.webp; do touch -t ${i:0:12}.${i:13:14} $i; done; что-то не выходит. Да и ладно, секунды не очень нужны.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

марта 24, 2020, 20:14:47 #1458 Последнее редактирование: марта 26, 2020, 12:33:56 от el guahiro
Сэкономил много места при упорядочивании архивов проектов командой:
replace_duplicates2hardlink.shЗапускается в директории, где хотим заменить дубликаты на хардлинки.
Скрипт чутка доделан аффтором этих строк и вобщем-то вполне понятен (сравнивает файлы  и затем делает хардинки вместо дубликатов):
#!/bin/bash
#from https://unix.stackexchange.com/questions/3037/is-there-an-easy-way-to-replace-duplicate-files-with-hardlinks
find "$PWD" -type f -exec md5sum {} \; | sort > /tmp/sums-sorted.txt
OLDSUM=""
IFS=$'\n'
for i in `cat /tmp/sums-sorted.txt`; do
 NEWSUM=`echo "$i" | sed 's/ .*//'`
 NEWFILE=`echo "$i" | sed 's/^[^ ]* *//'`
 if [ "$OLDSUM" == "$NEWSUM" ]; then
  echo ln -f "$OLDFILE" "$NEWFILE"
 else
  OLDSUM="$NEWSUM"
  OLDFILE="$NEWFILE"
 fi
done
Этот скрипт освободил мне несколько Gb на SSD.

PS Утилиты FSlint, которая делает тоже, только в GUI, никто не отменял.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

марта 29, 2020, 17:27:01 #1459 Последнее редактирование: апреля 11, 2020, 15:54:21 от el guahiro
Сшить панораму в один клик за 10 секунд
Stitch a panorama in one click in 10 seconds
С недавнего времени у меня сломался сшиватель панорам Hugin. Никакие усилия по чистке конфигов и кэша, по перустаноке и настройке к результатам не привели. Возможно, я исчерпал лимит доверия у китайских товарищей, т.к. слишком часто пользовался программой.
Можно, конечно, клеить панорамы в  dermandar.com http://www.dermandar.com/create/, но это надо браузер открывать. К тому же приложухха требует включения Adobe Flash Player, что как-бы сейчас уже не приветствуется.
Панорамы склеивает Google Photo, но когда оно вам её склеит, одному Гуглу известно.
Пришлось запилить Действие ПКМ по склейке панорам офлайн самому.
Действие основано на программке OpenPano отюда, лицензированного опенсорсной MIT лицензией.
На сайте автора есть толковая инструкция, что делать. Качаю архив по ссылке с сайта автора, распаковываю, компилирую программку, потом бросаю готовый архив в домашнюю директорию и делаю ПКМ Thunar на команду:
cp /$HOME/OpenPano-master/src/config.cfg "$PWD" ; image-stitching %F | zenity --progress --width=300 --height=100 --title="Сшиваю панораму" --text "...надо было ровней камеру держать!" --auto-close --pulsate; touch -r %f out.jpg ; mv out.jpg pano_%n && rm config.cfgУсловие появления: Изображения, каталоги
Иконка: Любая.
Перед этим надо отправить исполняеммый файл в директорию, где у вас находятся исполняемые файлы, командой:
ln -s  /home/user/OpenPano-master/build/src/image-stitching $HOME/.local/binИ да, надо доставить из репов zenity. Можно обойтись и без zenity, но тогда будет чуть менее интерактивно, а команда будет выглядеть так:
cp /$HOME/OpenPano-master/src/config.cfg "$PWD" ; image-stitching %F ; touch -r %f out.jpg ; mv out.jpg pano_%n && rm config.cfgТеперь, при выделении группы картинок и нажатии ПКМ "Сшить панораму" через двадцать-тридцать секунд в  текущей директории появляется сшитая панорама со временем создания, как у группы исходных фото, что важно для организации коллекции фотографий например в Google Photo.
Ссылка на архив с уже скомпилированной под Xubuntu 18 программой: https://mega.nz/#!MBoURIyB!ccTQ8koTK73g062tDuLwlG1Gs80rpjArmJsrYL6V104
Видео как это работает:
Щёлкнул с балкона серию снимков, в результате получилась такая панорамка:

Сделаю картинку порезче:
for file in *.jpg; do mogrify -normalize -level 10%,90% $file; doneСделаю чёрно белый карандашный набросок:
for f in *jpg; do convert "$f" -negate -lat 15x15+5% -contrast-stretch 0 -negate  -colorspace Gray pencil_"$f" ; doneМожно даже сделать скрипт white_n_black_IMG.sh, чтоб прицепить эту функцию к ПКМ Thunar:
IFS=$'\#'
for f in "$@"  ; do
fn=$(basename "$f")
convert "$f" -negate -lat 15x15+5% -contrast-stretch 0 -negate  -colorspace Gray pencil_"$fn" ; done

Команда :
white_n_black_IMG.sh %FУсловие появления: Изображения.
Небо только в Нижнем новгороде серое, увы, поэтому:
for f in *.jpg; do convert "$f" -fuzz 50% -fill lightblue +opaque gray bluesky_"$f"; doneили больше неба
for f in *.jpg; do convert "$f" -fuzz 45% -fill lightblue +opaque gray bluesky_"$f"; doneПолучилось красиво

Вы скажете: "El guahiro, ведь есть же в камерах смартфонов встроенная функция съёмки панорамы!"
Отвечу: Да, есть. И неплохо снимает. Но попробуйте снять панораму ночью. Я в таких случаях включаю режим "Ночь" на смартфоне, а потом сшиваю снимки в панораму с помощью image-stitching.
Вот например, фото вечером:

А вот фото, снятое ночью, на жд станции, где и освещения нормального то нет:


P.S. Скрипт сшивки панорамы и все команды прекрасно работают и для других типов файлов: *.png, *.jpeg, даже *.webp.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

марта 31, 2020, 11:36:22 #1460 Последнее редактирование: марта 31, 2020, 11:38:24 от el guahiro
Действие ПКМ "Добавить дату к названию".
Оказалось, что удобнее для сортировки названий в сложной файловой системе добавлять дату в начале названия папки (директории), причём в формате Год.Месяц.День. Команда:
[ -f %f ] && rename-with-date.sh %f ; [ -d %f ] &&  for i in %n; do mv -v  "$i" "`date +"%%Y.%%m.%%d"`_$i "; doneУсловия появления: галки ставим везде
Файлы датируются после названия, перед расширением. Содержание скрипта rename-with-date.sh я давал в этой теме форума.
Для любителей bash - обратите внимание на построение команды ПКМ  - тут дана альтернатива if-else-fi, мне она кажется проще.

Всем здоровья. Искренне ваш, el guahiro.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 06, 2020, 22:46:26 #1461 Последнее редактирование: апреля 08, 2020, 12:36:37 от el guahiro
# large office files 10x compression
Сегодня хочу рассказать о сжатии в 10 раз офисных файлов большого размера.
Основной скрипт в конце, т.к. решение пришло по мере написания.
Зачастую при создании офисных файлов, таких как дипломы, пояснительные записки к проектам, отчёты с картинками и т.п. юзеры запихивают в эти файлы большие тяжёлые картинки, не сжимая их.
Учитывая, сколько весит сейчас картинки, выходные файлы получаются 10,20, 30 и более mb.
И если при передаче по по частным сетям такие файлы с трудом, но проходят, то при пересылке в корпоративных сетях, особенно в госсекторе, электронное письмо, содержащие такой файл, не дойдёт.
В добавок открывается этот файл тяжело, пролистывается также тяжело.
Если в операционной системе Windows в M$ Office имеется встроенный инструмент сжатия офисных файлов, то в Linux такого инструмента нет.
Исправляем эту ошибку. Пишем скрипт, применительно к формату файлов *.DOC и *.DOCX, как наиболее распространенному в данный момент и наиболее часто перегруженным лишним контентом внутри файла.
Когда ты на этом форуме я писал, как это делается в Linux. Теперь, когда появилось немного времени, сочинил скрипт под названием compressDoc.sh такого содержания:
#!/bin/bash
IFS=$'\n'
for i in "$@";
do mv "$i" "${i%.*}.zip";
done
unzip "${i%.*}.zip" -d "${i%.*}"
cd "${i%.*}"/word/media/
mogrify -resize 500x500 ./*
cd "${i%.*}"
zip -r "${i%.*}.zip" ./*
cd ../
mv "${i%.*}.zip" "$i"
rm -R "${i%.*}"
Скрипту этому даём права на исполнение и отправляем в ~/.local/bin/:
chmod +x compressDoc.sh && cp compressDoc.sh ~/.local/bin/После этого пишем действие правой кнопки мыши Thunar (thunar custom-action) под названием "Сжать офисный файл"
Команда:
bash -c "source compressDoc.sh %f"Условие появления: Другие,
Маска файлов: *.docx;*.doc;*.DOCX;*.DOC
Иконка - любая, но лучше значок libreoffice, не ошибетесь.
Теперь, при нажатии ПКМ Thunar на тяжёлый офисный файл, происходит его автоматическое сжатие в 5-10 раз.
Видео, как это работает
---
Но бывает иногда, что файл не сжимается. Это происходит, когда он имеет другую структуру. В случае таком делом следующий трюк, сконвертировав сначала наш файл в формат ODT через libreoffice:
libreoffice --headless --convert-to odt file.doc..а затем выполнив команду:
source compressODT.sh file.odt
Здесь скрипт имеет такое содержание:
#!/bin/bash
# to convert doc 2 odt : libreoffice --headless --convert-to odt file.doc
IFS=$'\n'
for i in "$@";
do mv "$i" "${i%.*}.zip";
done
unzip "${i%.*}.zip" -d "${i%.*}"
mogrify -resize 500x500 "${i%.*}"/Pictures/*
cd "${i%.*}"
zip -r "${i%.*}.zip" ./*
cd ../
mv "${i%.*}.zip" "$i"
rm -R "${i%.*}"
Потом получившийся сжатый файл file.odt можем сконвертировать опять в file.doc:
unoconv --format=doc file.odtВ ИТОГЕ ПИШЕМ ЕДИНЫЙ СКРИПТ сжатия ODT и DOC DOCX:
#!/bin/bash
# to convert doc 2 odt : libreoffice --headless --convert-to odt file.doc
IFS=$'\n'
for i in "$@";
do libreoffice --headless --convert-to odt "$i"
done
mv "${i%.*}.odt" "${i%.*}.zip"
unzip "${i%.*}.zip" -d "${i%.*}"
mogrify -resize 500x500 "${i%.*}"/Pictures/*
cd "${i%.*}"
zip -r "${i%.*}.zip" ./*
cd ../
mv "${i%.*}.zip" "${i%.*}.odt"
unoconv --format=doc "${i%.*}.odt"
rm -R "${i%.*}"
 if [ -f "${i%.*}.doc" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.DOC" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.docx" ]; then
rm "${i%.*}.odt"
fi
 if [ -f "${i%.*}.DOCX" ]; then
rm "${i%.*}.odt"
fi
И делаем действие ПКМ Thunar подп названием " Сжать офисный файл" на команду:
Команда:
bash -c "source compressDocODT.sh %f"Условие появления: Другие,
Маска файлов: *.docx;*.doc;*.DOCX;*.DOC;*.ODT;*.odt
Иконка - любая, но лучше значок libreoffice, не ошибетесь.

Надеюсь что было интересно. Искренне ваш, el guahiro.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 12, 2020, 09:46:47 #1462 Последнее редактирование: апреля 12, 2020, 10:35:30 от el guahiro
Расстроил Dissender Browser. После обновления перестал открываться страница Speed Dial. Зашел на страницу помощи браузера Brave, поискал - там та же проблема.
Поставил Яндекс браузер, тем более вышла новая версия 20.3.2.
После настройки открывается как стартовая Speed Dial.
Грузится быстро, лёгкий, отслеживание можно выключить (для надёжности можно удалить файл ~/.config/yandex-browser-beta/Consent To Send Stats), много дополнений, включая дополнение "открыть в браузере Tor". Не знаю, поддерживает ли VPN, у меня он другому реализован. Плюс к этому автоматически переводит страницы, сразу предлагает вернуться к родному языку страницы - всплывающее сообщения на верхней панели.
Чтобы добавить расширения Google в Яндекс браузер, надо открыть в этом браузере страницу - https://chrome.google.com/webstore/category/apps и просто установить расширение, а магазин приложений Google Chrome добавить в закладки.
Dissender оставил, так как у него есть определённые плюшки, включая расширенную поддержку Tor.
Для поддержки VPN можете поставить браузер Опера, там по умолчанию она включена.
Единственное, что расстроило, что при наличии отличного движка распознавания русской речи, Яндекс до сих пор не пустит его "в народ". Жлобствуют, предлагают корпоративный тариф для подключения. Приходится переводить речь в текст с помощью сервисов Google. Есть, правда, обходной путь чтобы использовать Яндекс диктовку, но как любой обходной путь, он связан со сложностями и когда-нибудь его закроют.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

Добавить штамп, водяной знак на все листы PDF.
#Add watermark to pdf file
Действие основано  на работе скрипта stamp.sh такого содержания:
#!/bin/bash
IFS=$'\#'
for f in $@; do  pdftoppm -jpeg "$f" /tmp/1 ;
done
for i in /tmp/1*.jpg ; do convert "$i" -gravity SouthEast stamp.png -composite "$i" ;
done
 convert  /tmp/1*.jpg  "$f"
 rm /tmp/1*.jpg
Чтобы работало, надо установить утилиту pdftoppm и imagemagick
Скрипт кидаем в ~/.local/bin, предварительно дав ему права на выполнение.
Положение надписи регулируем размером пустого поля вокруг неё (делаем поля вокруг надписи, функция. "размер холста"). Положение в каком углу располагается картинка, указываем в скрипте. У меня указано ЮгоВосток (по английски).
Дествие ПКМ Thunar на команду:
stamp.sh %n | zenity --progress --width=400 --height=100 --title=Делаю watermark  --text  работаю.  --auto-close --pulsate ; mpv /usr/share/sounds/sound-icons/percussion-28.wav ; notify-send "Добавили штамп"Можно короче:
stamp.sh %n или для множества файлов, если компьютер мощный:
stamp.sh %NУсловие появления ПКМ Thunar:
Галка на Другие, маска файлов: *.pdf;*.PDF
Как это работает:

искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 18, 2020, 17:00:26 #1464 Последнее редактирование: июня 14, 2020, 09:28:18 от el guahiro Причина: контент дополнил
Сегодня опять сломался youtube-dl, выдавал ошибку.
Простой и универсальный способ исправить youtube-dl, это сделать в терминале:
sudo curl -L https://yt-dl.org/downloads/latest/youtube-dl -o /usr/local/bin/youtube-dl
sudo chmod a+rx /usr/local/bin/youtube-dl
После этого всё заработало. Всегда помогает.
Для особо пытливых скажу, что в новых версиях разработчики добавляют исправление багов, часто просто конкретный конфиг для скачки по конкретным youtube адресам. Всего лишь.
Файлы скачались с каким-то набором букв после тире в конце каждого имени файла. Исправляем:
rename -n 's/-[^-]*\././' *Нашёл на Youtube целые концерты. Например концерт Никольского (Воскресенье)
Делаю ПКМ, чтобы скачать аудиотрек с Youtube
Команда:
youtube-dl --rm-cache-dir ; youtube-dl -x $(xclip -o) ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././' ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'Условия появления: Каталоги.
Иконка - любая
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 19, 2020, 18:54:39 #1465 Последнее редактирование: апреля 19, 2020, 18:57:02 от el guahiro
Недавно обнаружил, что некоторые файлы сделанные коллегами с помощью Adobe PDF Transformer+ (не сомневаюсь, что крякнутого) при трансформациях, например, повороте с помощью утилиты pdfjam, переводится к одному размеру - A4.
Таким образом они альбом чертежей где были листы формата A4, A3, A1 и A0 превратился в альбомчик A4, негодный к дальнейшему использованию. Печалька.
Вспомнилось, что можно поворачивать с помощью утилитки qpdf. Почитав мануал здесь соорудил скрипт под названием q_rotate_pdf.sh такого содержания:
#! /bin/bash
IFS=$'\#'
for a in "$@" ; do
degree=`zenity  --list --text="Повернуть PDF" --radiolist --column "Выбрать" --column "Угол"  TRUE "90"   FALSE "270"  FALSE "180"  FALSE "не поворачивать"  --height=350`; qpdf --rotate=$degree:1-z "$a" ".$a" ; mv .$a $a ; notify-send "повернули  файл PDF"
done
Скрипту дал права на исполнение и забросил в ~/.local/bin
ПКМ Thunar для поворота PDF файлов выглядит так:
touch -r %f .1 ; q_rotate_pdf.sh %N; touch -r .1 %f ; rm ./ .1 ;  touch -d "$(date -R -r %n) - 1 seconds" %n или проще, для кого не важна исходная дата создания/сохранения файла:
q_rotate_pdf.sh %N Условие появления: Другие
Маска *.pdf;*PDF
Скрипт работает без натуги, всю внутреннюю структуру PDF сохраняет.
Авось кому-то пригодится.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 20, 2020, 22:43:19 #1466 Последнее редактирование: апреля 21, 2020, 19:15:37 от el guahiro
Сегодня хочу рассказать немножечко про структуру файлов PDF.
Файлы PDF представляет из себя контейнер, содержащий графику, текст и векторное соединение между ними.
Если файл pdf сканированный, то как правило это просто картинки, привязанные к странице файла pdf.
Другое дело, когда файлы PDF получены помощью преобразования из различных программ. Наименьшие проблемы приносят файлы, которые с конвертированы из офисных форматов, а наибольшие проблемы файлы, преобразованные из различных форматов CAD софта, особенно отечественного и ломанного.
В этом случае при работе с файлами PDF вас могут ожидать интересные неожиданности, например все листы многостраничного файла с листами A0, A1 и A3 внезапно приведутся к формату A4, либо при оптимизации/аннотации PDF со страниц пропадёт шрифтов и т.п.
Аффтор этих строк пробовал много способов и утилит (xpdf, qpdf. mutool, PyPDF2 и т.п), стараясь почистить чертежи формата PDF, кои мне поставляют в большом количестве именитые проектные организации, имеющие на нижней ступеньке пищевой цепочки студентов строительных ВУЗов из глубинки с ломаным CAD софтом (Компасом или Zwcad`ом) в компе.
В итоге пришёл к выводу, что вопрос может решить только добрый старый ghostscript, а лучше его продвинутая версия - утилита ps2pdf.
Команда ПКМ Thunar оптимизации PDF по запросу выглядит так:
zenity --question --text="Предварительно оптимизировать?"  --ok-label="да"  --cancel-label="нет"  ; case $? in   0) opticlean.sh %f ;; 1)   ;; esacСкрипт оптимизации opticlean.sh, который должен базироваться где -нибудь в $PATH, например в ~/.local/bin, выглядит так:
#!/bin/sh
IFS=#
for i in "$@" ; do ps2pdf -dUseFlateCompression=true -dOptimize=true -dProcessColorModel=/DeviceRGB -dUseCIEColor=true -r72 -dDownsampleGrayImages=true -dAutoFilterColorImages=false -dDownsampleColorImages=true -dDownsampleMonoImages=true -dGrayImageDownsampleType=/Bicubic "$i" "$i".2 ; mv -v "$i".2 "$i"; done
Теперь я добавляю запрос на оптимизацию к командам ПКМ на поворот файлов PDF и на нанесение динамических водяных знаков/печатей/штампов на файлы PDF. О нанесении динамических водяных знаков я ещё не рассказывал. У меня это реализовано друмя способами - на PyPDF2 и на qPDF - работает мгновенно. Но об этом в следующий раз.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 25, 2020, 13:12:22 #1467 Последнее редактирование: апреля 25, 2020, 19:54:19 от el guahiro
Сокращалка названий файлов для более коротких путей и возможности прочтения полного названия в "половинном" окне файлового менеджера.
Сокращалка по тематике: строительство и инвестиции. Пилится постепенным вписываем ненужных окончаний в скрипт sokraschalka.sh,
часть сокращений стырена с ГОСТ Р 7.0.12-2011" Библиографическая запись.  Сокращение слов и словосочетаний"
Содержание скрипта:
#!/bin/bash
IFS=$'\n'
for i in "$@";
do rename 's/\([^\)]\)//gi' ./* ; rename 's/|«|»|"|,|№|Fwd|поручение|Поручение|Яндекс.Почта|:|//gi' ./* ; rename 's/Письмо/e-mail/gi' ./* ; rename 's/ -- / /gi' ./* ; rename "s/\s{2}/ /gi" ./* ; rename "s/одных |ании |амент |амента |аментом |уникаций |ерных |аменте |авским |авскими |адскими |ажними |азскими |айскими |альними |альскими |анними |анскими |арскими |атскими |ейскими |ельними |ельскими |енними |енскими |ентальними |ерскими |ескими |иальними |ийскими |инскими |ионними |ирскими |ительними |ическими |ними |ованними |овскими |одскими |ольскими |орскими |скими |ской |ческими |авского |адского |ажного |азского |айского |ального |альского |анного |анского |арского |атского |ейского |ельного |ельского |енного |енского |ентального |ерского |еского |иального |огоского |инского |ионного |ирского |ительного |ического |ного |ованного |овского |одского |ольского |орского |ского |ской |ческого |адским |ажным |азским |айским |альным |альским |анным |анским |арским |атским |ейским |ельным |ельским |енным |енским |ентальным |ерским |еским |иальным |ийским |инским |ионным |ирским |ительным |ическим |ным |ованным |овским |одским |ольским |орским |ским |ском |ческим |авская |адская |ажная |азская |айская |альная |альская |анная |анская |арская |атская |ейская |ельная |ельская |енная |енская |ентальная |ерская |еская |иальная |ийская |инская |ионная |ирская |ительная |ическая |ная |ованная |овская |одская |ольская |орская |ская |ской |ческая |авских |адских |ажных |азских |айских |альных |альских |анных |анских |арских |атских |ейских |ельных |ельских |енных |енских |ентальных |ерских |еских |иальных |ийских |инских |ионных |ирских |ительных |ических |ных |ованных |овских |одских |ольских |орских |ских |скох |ческих |авский |адский |ажный |азский |айский |альный |альский |анный |анский |арский |атский |ейский |ельный |ельский |енный |енский |ентальный |ерский |еский |иальный |ийский |инский |ионный |ирский |ительный |ический |ованный |овский |одский |ольский |орский |ский |ской |ческий ения |альникам |ить |атам |итарным |ативном |одства |еры |укция |укцию |ований |овить |иалы |овывающие |ени |ойство |озкам |имости |обности |ельство |ельства |ионеров |ики |ители |онов |ормах |ации |иятия |ору |иятий |юдения |ормы |ика |овка |арами |отать |овку |афии |ание |аниям |ация |ых |ическое |ические |ования |изма |аний |арно |ная |ортной |ядке|елей |ованию |ому |олю |амма |екса |ального |ике |одственным |иятия |анию |ане |овья |ению |ости |овании |амме |ол |ания |иалам |ионном |орму |ацию |оде |ивание |ода |ение |ения |ающих |овое |остей |ное |овке|ора |ый |ости |ского |вной |ые |оянии |овать |иятиям |емы |яция |атель |ылки |ельн[а-я] |ение |ении |ование |арный |ая |ении /. /gi" ./*; rename "s/одных[.]|ядке[.]|ельства[.]|измом[.]|елей[.]|ому[.]|амме[.]|олю[.]|амма[.]|ол[.]|ости[.]|ией[.]|иалам[.]|ионном[.]|ания[.]|ивание[.]|ода[.]|ение[.]|ения[.]|ающих[.]|овое[.]|остей[.]|ное[.]|ора[.]|ый[.]|ости[.]|ского[.]|вной[.]|ые[.]|оянии[.]|овать[.]|ика[.]|атель[.]|ылки[.]|ельная[.]|ение[.]|ении[.]|ование[.]|арный[.]|ая[.]|ении[.]/./gi" ./* ; rename "s/\.PDF/\.pdf/gi" ./*; rename "s/\.DOCX/\.docx/gi" ./*.DOCX ; find . -exec rename "s/\.DOC/\.doc/gi" ./*.DOC ; rename "s/\.XLS/\.xls/gi" "{}" ./*.XLS ; rename "s/\.XLSX/\.xlsx/gi" ./*.XLSX ; rename -v "s/\s{2}/ /gi" ./* ; rename "s/ Наталья Павловна | Андрей Валерьевич| Михаил Владимирович| Андрей |_//gi" ./*.pdf ; rename  "s/Тех. номер/тн/gi" ./*.pdf; rename s'/[(]|[)]//gi' ./* ; rename  "s/рабочей группы/РГ/gi" ./* ; rename  "s/рабочая группа/РГ/gi" ./* ; rename  "s/Тех. номер/тн/gi" ./* ; rename  "s/участке/уч-ке/gi" ./*
done
Скрипту даём права на выполнение и бросаем в ~/.local/bin
ПКМ на команду:
sokraschalka.sh %fЧтобы рекурсивно в подкаталогах:
sokraschalka.sh ./* или
sokraschalka.sh ./**/*Условие появления - галка на Каталоги

искренне ваш, el

PS. Кстати, поставьте себе и коллегам FireChat, а также на выбор Voxer, Two Way или Zello - пригодиться, а скачать будет негде.
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

апреля 28, 2020, 08:43:39 #1468 Последнее редактирование: апреля 29, 2020, 19:07:31 от el guahiro
Допил Libreoffice, чтоб не менял дату модификации каталога
Пост исключительно для тех, кто много работает в GUI Xubuntu.
Функция поиска и сортировки файлов и каталогов (папок) по дате - одна из ключевых функций файлового менеджера.
У меня в в каталогах бывает и по 30-50 подкаталогов. И когда ты работаешь над большим проектом, то открываешь каталог с проектом, сортируешь по дате, ищешь верхний подкаталог и попадаешь в то место, где ты был недавно.
Беда, если ты пользуешься Libreffice и справочные материалы лежат в том же каталоге, что рабочий каталог. К концу дня все каталоги, в которых ты открывал файлы libreoffice, имеют дату доступа и модификации сегодняшнего дня, и поиск по дате уже не прокатывает.
Особенно это раздражает, если названия каталогов ни о чём не говорят - это какие-нибудь номера писем и входящих документов. Приходится дополнительно напрягаться, чтобы попасть в тот каталог, в котором ты недавно работал.
Для того, чтобы этого не происходило, необходимо открыть Libreoffice, затем Сервис (на верхней панели)>Параметры (нижняя вкладка)>Расширенные возможности>Открыть экспертные настройки>org.openoffice.Office.Common>Misc>тыкнуть на UseLocking>true сменится на false.
Надеюсь, что кому то поможет.
Иллюстрация

как сделать ссылку на скриншот

Искренне ваш, el
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions

el guahiro

мая 01, 2020, 08:30:25 #1469 Последнее редактирование: мая 09, 2020, 09:09:38 от el guahiro
ПКМ Thunar "Скачать с YouTube в этот каталог"
Команда:
youtube-dl --rm-cache-dir ; youtube-dl  $(xclip -o) ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././' ; ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'Условия появления: галка на Каталоги.
Иконка - любая, я поставил лого Youtube dl GUI (есть такая программка на Linux)
Как работает: копируем URL видео с YouTube>Тыкаем мышкой в выбранный каталог>ПКМ  "Скачать с YouTube в этот каталог"> в каталоге появляется видео.
Здесь команда:
ls -tp | grep -v /$ | head -1|rename 's/-[^-]*\././'служит, чтобы удалить непонятный набор букв, который присутствует в именах файлов, скачанных с YouTube
Искренне ваш
См. скрипты для ПКМ Thunar здесь https://github.com/el-guahiro/thunar_custom_actions