Я хочу добавить эмблему по умолчанию к видео, которые я просмотрел. Есть ли простой, не ручной способ запуска сценария, если и точно, если видео закончилось воспроизведение? Может быть для любого видеоплеера Linux (Mint / Ubuntu).

1 ответ1

0

С тех пор как я спросил, я подумал, что поделюсь быстрым хакером на основе обёртки, который я придумал, который делает это. Я создал следующую обёртку vlc и настроил видео файлы, чтобы открывать в ней, а не напрямую vlc. Он поддерживает только один файл за раз. Если вещь, которая перемещается в vlc во время воспроизведения файла, проходит до конца, она выполнит команду tag watched в конце, если было просмотрено около 60% видео.

#!/bin/bash
#This depends on the cli interface having been activated in the preferences
# This while loop feeds the `get_length` vlc cli command to cli every 0.1 s
(while :; do echo get_length; sleep 0.1 ; done) | 
#Pass all arguments to vlc and set it up to be fed from the `get_length` while loop
/usr/bin/vlc "$@" |
ruby  -n -e '
    BEGIN { 
    cons_empty=0
    nlines_read=0
  }
    #Strip vlc cli noise
    $_=$_.sub(/^[> ]*/,"")
    #Watch consecutive (cons) empty lines
    if $_.match(/^\s*$/) 
      cons_empty += 1
    else
      #Assume each nonempty stdin line is the duration
      duration = $_.chomp.to_i
      cons_empty = 0
      nlines_read += 1
    end
    #On 10 consecutive empty lines, assume the file has finished playing
    if cons_empty == 10
      time_watched = nlines_read * 0.1
      p time_watched: time_watched, duration: duration
      ret = (time_watched > 0.6 * duration) ? 1 : 0
      exit ret
    end
    ' ||
tag watched "$@" #1 exit means finished watching

Это работает, а не красивый код, но это только быстрое решение для раздражения.

зависимости:

bash, ruby, + заменяет tag watched с вашей фактической командой тегирования.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .