XXXX XXXX XXXX XXXX
X X X X X
XXX X X XXXX XXXX
X X X X X
X XXXX XXXX XXXX
[Notifies|Tracker]
Blogs tracker → Search results for tag: "bash"

banderlogRandom mplayer

 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!!!"

[] 0 [] | banderlog @ 05.09.2011 15:33 | Комментарии: 8

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

В баш оно как-то проще, понятнее и быстрее, ИМХО.

[] 1 [] | banderlog @ 30.06.2011 00:13 | Комментарии: 15 (page 2)

banderloggoogleart и ЧСВ

Тут превозносили прелести херово документированной либы питона и хвастались неимоверно низким потреблением памяти

При сохранении пикчи 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'

[] -2 [] | banderlog @ 07.02.2011 17:00 | Комментарии: 7

banderloggrep 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

Метки: bash, google, art, imagemagick
[] 1 [] | banderlog @ 02.02.2011 20:03 | Комментарии: 6

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, так что бы он их принимал за отдельные файлы (иначе авторазметки не будет).

[] 1 [] | banderlog @ 05.01.2011 23:57 | Комментарии: 2

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, там много багфиксов, да и стабильная версия все равно не работает правильно.
Транка в портах нет, пришлось написать ебилд.

Дальше текст вперемешку с кодом

Метки: linux, ipod, bash, audiobook, postmarkup
[] 1 [] | banderlog @ 04.01.2011 15:26 | Комментарии: 2
Information: About & Site rules
W3C: Valid HTML 4.01 & Valid CSS 2.1