При таком подходе у меня часто возникает проблема, чего я уже смотрел, а чего - нет. За пару месяцев легко забыть не только номер серии, но и её сюжет :) Поэтому я решил накропать небольшой велосипед, который бы сам запоминал что я уже отсмотрел.
Ну и вот:
#!/bin/bash if [[ $1 == '-q' ]]; then cd ~/.track-movies for d in *; do if [[ $2 != "" ]]; then fgrep -i $2 $d/path > /dev/null 2>&1 [[ $? != 0 ]] && continue fi # calc view time CURT=0 SUM=0 for t in $(cat $d/times); do DIFF=$(( ($t - $CURT) / 60 )) CURT=$t [[ $DIFF -gt 10 ]] && continue SUM=$(( $SUM + $DIFF )) done printf "%s %4d min\n" "$(cat $d/path)" $SUM done exit ALL=$(find ~/.track-movies/ -name path | xargs cat) if [[ $2 == "" ]]; then echo "$ALL" else echo "$ALL" | grep -i --color=auto $2 fi exit fi PLAYER_PIDS=$(ps ax --format %c\|%p\|%a | grep ^mplayer | sed -re 's/.*\|[ ]*([0-9]+)\|.*/\1/') function get_movies { for pid in ${PLAYER_PIDS}; do lsof -p $pid | sed -nre 's/[^\/]*(\/.*\.(avi|mkv|mpg|mpeg))$/\1/ p' done | sort | uniq } MOVIES=$(get_movies) [[ $MOVIES == "" ]] && exit IFS=' ' [[ ! -d ~/.track-movies ]] && mkdir ~/.track-movies cd ~/.track-movies for m in $MOVIES; do HASH=$(echo $m | md5sum | cut -d' ' -f 1) if [[ ! -d $HASH ]]; then mkdir $HASH echo $m > $HASH/path echo > $HASH/times fi date +%s >> $HASH/times done
В целом всё просто. При запуске скрипта без параметров:
1. находим все PID mplayer (я только им пользуюсь, но можно добавить и другие плееры)
2. берём вcе файлы открытые процессом, фильтруем по расширению, сортируем, убираем дубликаты (smplayer зачем-то запускает 2 копии mplayer)
3. Для каждого пути вычисляем хеш, это будет директория, где будем хранить инфу о фильме
4. Сохраняем полный путь к фильму, если надо
5. Сохраняем текущее время.
Дальше запихиваем скрипт в крон, каждые 5 минут:
*/5 * * * * /home/sazarkevich/bin/track-movies.sh
Ну и всё. Теперь все ходы записываются, ладью мы не потеряем.
Ну а что-бы посмотреть, на какой серии я остановился запускаем скрипт с аргументом -q и необязательным параметром для фильтрации путей фильмов.
# track-movies.sh -q bang | sort /home/torrents/The Big Bang Theory, Season 4/The.Big.Bang.Theory.S04E01.mkv 20 min /home/torrents/The Big Bang Theory, Season 4/The.Big.Bang.Theory.S04E02.mkv 20 min /home/torrents/The Big Bang Theory, Season 4/The.Big.Bang.Theory.S04E03.mkv 20 min /home/torrents/The Big Bang Theory, Season 4/The.Big.Bang.Theory.S04E04.mkv 5 minНу, теперь всё ясно. Последняя полностью просмотренная серия - 3, а 4-ую я смотрел всего 5 минут.
Вот только печалька... Раньше телевизор я подключал вместо монитора и запускал фильмы на компе, но сразу же как я написал этот скрипт, пришлось переключить комп с телевизора на монитор. Теперь смотрим всё на телевизоре напрямую(с флешки), и скрипт получается не нужен :( Как бы его всунуть на телек....
Комментариев нет:
Отправить комментарий