1 #!/bin/bash 2 3 # THIS SCRIPT IS EQUIVALENT TO `mplayer -fs -ss 20 -shuffle *` 4 IFS=$'\n' 5 6 trap bashtrap INT 7 8 bashtrap() 9 { 10 echo "CTRL+C Detected !...executing bash trap !" 11 ps | sed -n -e 's|[[:space:]]\([0-9]*\).*smeshariki_rand|\1|p' | xargs kill 12 exit 13 } 14 15 16 a=($(ls ./*.avi)) 17 18 while true; do 19 mplayer -fs ${a[$((RANDOM % ${#a[@]}))]} -ss 20 20 done 21 22 IFS=" " 23 24 echo "Exit!!!"
banderlog → Random mplayer
banderlog → Массовое переименование старых файлов на новые
Случилось так, что я нащелкал серию фоток, часть из них оказалась запорота и их пришлось переснять. Но серия фоток была длинна и в ней был аццки важен порядок (ибо это была книга).
Пришлось переименовать все новые фотки именами старых, запоротых, фоток.
Вспомнил ruby и написал это:
1 require 'ftools' 2 old_1=`ls -1v old_bad/1`.split(/\n/) 3 new_1=`ls -1v dubl/1`.split(/\n/) 4 #new_1.size # => 24 5 0.upto(new_1.size-1){|i| File.copy("dubl/1/#{new_1[i]}", "./#{old_1[i]}")}
1 old_1=(`ls -1v old_bad/1/`) 2 new_1=(`ls -1v dubl/1/`) 3 # echo ${#new_1[@]} # => 24 4 # echo ${new_1[@]} Вывести содержимое всего массива 5 for ((i=0;i<${#new_1[@]};i++));do cp dubl/1/${new_1[$i]} ./${old_1[$i]};done
В баш оно как-то проще, понятнее и быстрее, ИМХО.
banderlog → googleart и ЧСВ
Тут превозносили прелести херово документированной либы питона и хвастались неимоверно низким потреблением памяти
При сохранении пикчи 7680 x 4096 скрипт зохавал 250 мегабайт ОЗУ.
Для начала та пикча нифига не 7690x4096, а 4096x4008. А дальше совсем чуть-чуть мешаем пайтон с говном.
grapicsmagick при выполнеии той же задачи зохавал 180Мб и справился за 3.2 сек
imagemagick сожрал 600Мб и пыхтел секунд 15.
opium.py пыхтел ни много ни мало — 32 секунды, а зохавал 200Мб
Выводы: gm таки быстрее, сильнее, дальше, а пайтон жрет таки меньше imagemagick
UPD: К gm и im надо добавить по 1.8 сек (время, за которое aria2с качает всю белиберду, ибо в много потоков). А opium.py качает в один. И кого это волнует? ^_^
1 #!/bin/bash 2 # CHECK 3 if [[ -z "$1" ]] || [[ -z "$2" ]] 4 then echo "give me a fucking link and bloody dir!!11" 5 exit 1 6 fi 7 8 # PARSER 9 param=${1##*=} 10 max_x=${param:1:1} 11 max_y=${param:4:1} 12 the_z=${param:7:1} 13 the_link=${1%%=*} 14 15 # SET COUNTERS TO ZERO 16 pix=0 17 piy=0 18 19 # CREATE LINK_FILE 20 echo "#" > gart_list_temp 21 22 # GENERATE LINKS 23 while `test $pix -le $max_x` 24 do 25 while `test $piy -le $max_y` 26 do 27 echo $the_link"=x"$pix"-y"$piy"-z"$the_z >> gart_list_temp 28 echo -e " out=x"$pix"-y"$piy"-z"$the_z >> gart_list_temp 29 ((piy++)) 30 done 31 ((pix++)) 32 piy=0 33 done 34 35 # CONFIRM 36 echo -e '\033[37;44m\n' "wrtd!!11" '\n\033[0m' 37 38 # DNLD PIECES 39 aria2c -i gart_list_temp -d "$2" 40 echo -e '\033[37;41m\n' "MNT@G!!11" '\n\033[0m' 41 42 # MONTAGE 43 gm montage -geometry 512x512+0+0 -tile 1x`expr $max_y + 1` "$2"/x[0-$max_x]-y[0-$max_y]-z$the_z miff:- | gm convert - +append -quality 95 "$2"/full.jpg 44 45 # OR 46 #montage x[0-5]-y[0-7]-z3 -tile 1x8 -geometry 512x512+0+0 miff:- | convert - +append -quality 95 test2.jpg 47 echo -e '\033[37;45m\n' "^_^ Nya-nya-nyA ^_^" '\n\033[0m'
banderlog → grep from google art project
Гугол запустил новую прикольную штуку - http://www.googleartproject.com
Тут же встал вопрос, как сохранить любимые пикчи на винт.
Гугол хранит пикчи порезанными на куски по 512x512 в jpeg.
Открываем свою любимую пикчу на требуемом уровне зума (как правило, на максимальном) в ФФ. Запускаем FireBug и идем в вкладку сеть.
Там ищем картинки типа _длинная_непонятная_ссылка=xA-yB-zC, где ABC это числа. Надо поймать нижний правый угол картинки с максимальными значениями x и y (z это уровень зума).
Потом генерим ссылки:
1 #!/bin/bash 2 pix=0 3 piy=0 4 5 # МАКСИМАЛЬНЫЕ ЗНАЧЕНИЯ ДЛЯ pix И piy ЭТО ПРАВЫЙ НИЖНИЙ УГОЛ КАРТИНКИ 6 while `test $pix -le 5` 7 do 8 while `test $piy -le 7` 9 do 10 # ТУТ МОГЛА БЫ БЫТЬ ВАША ССЫЛКА С ВАШИМ ЗНАЧЕНИЕМ z 11 echo "[url]http://lh4.ggpht.com/h9Z_ibvddfK3yHjJUvaRw7i3ws1tF0j-hfLy5N65g86ODCqEXK5fBBCVQAw=x[/url]"$pix"-y"$piy"-z3" 12 ((piy++)) 13 done 14 ((pix++)) 15 piy=0 16 done
Заворачиваем выхлоп в файл и натравливаем на него wget.
Получаем кучу файлов со страшными именами, которые надо переименовать до вида x-y-z.
Я переименовывал через RoxFiler, но можно юзать mc или rename.
Дальше надо собрать изображение с помощью imagemagick. Хотя можно и фотошоп заюзать, как в этой хабрастатье X)
Можно хитро изъебнуться и собрать вси имаджи сразу, но я собирал по вертикальным рядам, типа как:
1 montage x0-y[0-7]-z3 -tile 1x -geometry 512x512+0+0 v1.jpg 2 ... 3 # ТУТ БЫЛ ЦИКЛ 4 ... 5 montage x5-y[0-7]-z3 -tile 1x -geometry 512x512+0+0 v6.jpg
А потом вертикальные штуки в целую картину:
1 montage v[1-6].jpg -tile 6x -geometry 512x4096+0+0 full.jpg
По краям картины возможны черные поля - это гугол дорисовывает квадраты до 512x512.
Получил большую клевую пикчу, которую было бы нехило распечатать на большом листе фотобумаги под холст и прибить на стену.
ЗЫ:
Are the images on the Art Project site copyright protected?
Yes. The high resolution imagery of artworks featured on the art project site are owned by the museums, and these images are protected by copyright laws around the world. The Street View imagery is owned by Google. All of the imagery on this site is provided for the sole purpose of enabling you to use and enjoy the benefit of the art project site, in the manner permitted by Google’s Terms of Service.
The normal Google Terms of Service apply to your use of the entire site.
ЗЫЫ: зачем парсер в КОДЕ автоматически заворачивает урлы в тэги? brezerk
banderlog → <FAIL> Создание *.m4b аудиокниг для ip[oa]d в Linux </FAIL>
Все видели мой предыдущий пост с скриптом на 140 строк? Так вот, то все херня.
1 # ALL MP3 TO WAV 2 for i in `ls -1 *.mp3`; do mplayer -nocorrect-pts -vo null -vc null -ao pcm:fast:file="${i%%mp3}wav" "$i"; done 3 # CONCATE ALL WAV TO MP4 WITH AUTOMATIC CREATION OF CHAPTER MARKS 4 for i in `ls -1 *.wav`; do printf %s "-if \"$i\" ";done | xargs ../neroAacEnc -of test.mp4 5 # SET CORRECT TAGS 6 ../neroAacTag -meta:title="Pride and Prejudice" -meta:artist="Jane Austen" -add-cover:front:Austen.jpg test.mp4 7 # CONVERT CHAPTERS FOR IPOD 8 mp4chaps -convert --chapter-qt test.mp4
ЭТО ВЕСЬ КОД!!!111
Причем,он автоматом решает все 3 TODO:
- bash trap не нужен
- neroAacEnc может обработать гораздо больше 20 файлов
- Chapter names теперь вообще не проблема
1 # EXPORT CHAPTERS TO MP4FILE.CHAPTERS.TXT 2 mp4chaps -x test.mp4 3 # NOW YOU CAN DO ANYTHING WITH THEM AND 4 # IMPORT MODIFIED CHAPTERS BACK 5 mp4chaps -i test.mp4
Конечно, теперь на винте лежат не aac, а огромные wav, которые надо будет потом убить, да и через fifo как то элегантнее, но все стало намного проще.
Жаль не получается завернуть выхлопы mplayer'а в инпут neroAacEnc, так что бы он их принимал за отдельные файлы (иначе авторазметки не будет).
banderlog → Создание *.m4b аудиокниг для ip[oa]d в Linux
Зачем нужны аудиокниги m4b читаем тут
.m4b это файл AAC в контейнере mp4, но с закладками и переименованный.
Следовательно, необходимо зафигачить кучку .aac файлов, файл закладок (chapters) и запихнуть все это дело в mp4 контейнер.
Пост автора этой идеи
Под линухами есть только 1 нормальный AAC encoder - NeroAacEncoder. Код закрыт, но он халявен и работает. Альтернатива есть в ffmpeg, но она аццки сыра. Еще есть alac encoder\decoder, тоже в ffmpeg, так он вообще не контролирует битрейт. 10 метровый mp3 превращается в 100Мб монстра.
Запихивать в mp4 будем с помощью тузлы MP4Box, которая входит в пакет gpac. А размечать теги нам поможет libmp4v2, только надо обязательно использовать trunk-r355 snapshot, там много багфиксов, да и стабильная версия все равно не работает правильно.
Транка в портах нет, пришлось написать ебилд.
Дальше текст вперемешку с кодом