воскресенье, 2 октября 2011 г.

Просмотр flash-video в нормальном плеере

Вообщем надоели мне вечно тормозящие онлайн сериалы на слабенькой машине моих родителей в Сумах и написал я такой себе "малюсенький" скриптик что б смотреть их в smplayer (как известно с недавнего времени flv как бы не оседают в /tmp при кешировании, но это только так кажется ;)

UPDATED 7.11.2011
Теперь просмотр и сохранение в одном флаконе  ;)
зависимость: zenity
http://dl.dropbox.com/u/10343418/getFlash



#!/bin/bash
# getFlash v.0.3
#by silentlexx@gmail.com
PLAYER="smplayer"
if ! test -e $(which $PLAYER)
then
if ! test -e $(which mplayer)
then
gksu apt-get install mplayer
fi
PLAYER="mplayer"
fi
if test -z ${1} 
then
SAVEDIR=$HOME
else
SAVEDIR=${1}
fi
error(){
zenity --error --text "Видимо вы не просматриваете в Flash никакого видео сейчас\!" --title "Нечего проигровать"
exit 1
}
getfiles(){
file * | grep "/tmp/Flash" | awk '{print $1}' | sed s/\://
}
PDIR=$(lsof -X | grep "/tmp/Flash" | awk '{print $2}' | head -n 1)
test -z $PDIR && error
DIR="/proc/$PDIR/fd/"
cd $DIR
PFILE=$(getfiles)
LINES=$(getfiles | wc -l)
echo $LINES
if [ "$[$LINES>1]" = "1" ]; then 
COL=$(echo $PFILE | awk '{print $1 " " $1 " " $2 " " $2 " " $3 " " $3 " " $4 " " $4 " " $5 " " $5 " " $6 " " $6 " " $7 " " $7 " " $8 " " $8 " " $9 " " $9}')
PFILE=$(zenity  --list --title "Список файлов-дескрипторов" --text "Обнаруженно болеe одного открытых видео.\nВыберете одно из них:" --radiolist  --column "Файл" --column "ID" $COL)
fi 
test -z $PFILE && exit 3
MODE_P="Смотреть"
MODE_D="Сохранить"
MODE=$(zenity  --list  --title "Список действий" --radiolist  --column " " --column "Действие" True $MODE_P False $MODE_D)
test -z $MODE && exit 0
FILE=$DIR/$PFILE
if [ "$MODE" = "$MODE_P" ]; then
$PLAYER $FILE
fi
if [ "$MODE" = "$MODE_D" ]; then
COUNT=1
OUT="$SAVEDIR/FlashVideo-$COUNT.flv"
while test -e $OUT 
do
COUNT=$[COUNT+1]
OUT="$SAVEDIR/FlashVideo-$COUNT.flv"
done
OUTFILE=$(zenity --file-selection --save --confirm-overwrite --title "Сохранить Flash видео..." --filename $OUT)
test -z $OUTFILE && exit 0
FIN=$(dd if=$FILE of=$OUTFILE |& tail -n 1)
if test -e  $OUTFILE 
then
zenity --question --title "Проиграть?" --text "Сохранение завершенно!\n\nФайл $OUTFILE\n$FIN\n\nЗапустить просмотр?" && $PLAYER $OUTFILE
exit 0
else 
zenity --error --text "Видимо что то не так\! Проверте права доступа..." --title "Ошибка сохранения"
exit 2
fi
fi

Комментариев нет: