2011-12-22 3 views
6

Я написал этот небольшой скрипт на днях. Это небольшая программа, которая в основном находит флеш-ролики, запущенные в браузере, и загружает их. код выходит что-то вроде этого ..Определите, когда видео завершило буферизацию

код:

path=$(stat -c %N /proc/*/fd/* 2>&1|awk -F[\`\'] '/lash/{print$2}') 
pid=$(echo $path | cut -d/-f3) 
name=$(ps --no-header -o comm -p $pid) 
mid=$(wmctrl -l | grep -i $name) 
filename=`echo $mid | cut -c 21-$(($(echo $mid | wc -c)-16))` 
cp $path /home/Downloads/"$filename.avi" 

это только часть code.The первой строки коды получает путь к удаленной температуре file.The второй линия получает pid. В-третьих, имя процесса. Закройте идентификатор окна и заголовок окна. Пятая строка манипулирует выходом wmctrl для извлечения имени воспроизводимого видео (большую часть времени название видео включено в заголовок окна ... например, youtube)

Теперь, когда этот скрипт запускается после буферизации всего видео, он работает безупречно (этот скрипт работает для google chrome) .. и копирует файл из папки/proc // fd в папку загрузок и меняет его имя для извлеченного имени файла.

Теперь вот трюк part.I хочу автоматизировать этот код, как, для меня, чтобы запустить этот код, на данный момент мне нужно дождаться, когда видео закончит буферизацию (скажем, youtube).

Я хочу, чтобы этот скрипт определял, когда видео закончило буферизацию, а затем продолжит копирование без необходимости вручную запускать его в конце видео.

Так можно ли узнать, когда видео завершено буферизацией?

Я: beginner.Any предложения по улучшению кода приветствуются

+0

Интересная идея. Вам нужно беспокоиться о том, что tmp-файл исчезает после того, как он будет воспроизводиться или является частью кеша браузера, который иногда удаляется? Кроме того, для раздела filename = section, почему вы используете обратные ссылки, вся красота $ (...) для cmd-замены заключается в том, что вы можете вложить их без каких-либо проблем с кавычками. Удачи. – shellter

+0

@shellter: Спасибо, друг! Я понял это окончательно. Файл исчезает только тогда, когда процесс убит. То есть файл остается в каталоге до закрытия браузера. Это видно из того факта, что видео (главным образом с youtube) не загружаются, когда мы повторите их, они будут воспроизведены из кеша (или аналогичного). И обратные шаги, ну, я получал непредвиденную ошибку. Логика заключается в том, что размер файла (загружаемого видео) продолжает изменяться до тех пор, пока буферизация не будет завершена. Поэтому мы проверяем размер файла до тех пор, пока он не станет постоянным, а затем запускаем функцию загрузки. –

+0

Извините, там не было символов.код monitor_size() { one = 'du -L" $ path "| awk '{print $ 1}' ' sleep 5 two =' du -L "$ path" | AWK '{печать $ 1}' ' если [$ один -eq $ два] затем загрузить еще monitor_size фантастическом } , в котором функция загрузки содержит ранее code.Btw, я думаю, вы были правы об исчезновении файла tmp. Поток отличается. Youtube просто загружает файлы на ваш компьютер. : sigh: –

ответ

0

, чтобы получить размер файла, вы можете использовать:

stat -c %s $filename 

с этим вы можете настроить время цикла, чтобы проверить, если файл все еще меняется

CURSIZE=0 
LASTSIZE=1 
while ([ $CURSIZE -ne $LASTSIZE ]) do 
    LASTSIZE=`stat -c %s $filename` 
    sleep 1 
CURSIZE=`stat -c %s $filename` 
done 

после этого, вы должны быть в состоянии скопировать его при условии подключения к интернету не икать для больше, чем значение сна

Смежные вопросы