Bonjour
Je récupère des vidéos avec TVDownloader
http://forum.ubuntu-fr.org/viewtopic.php?id=409313&p=1
Je copie ensuite ces vidéos sur ma Dune
http://hdland.fr/lang-en/lecteurs-multimedias/111-dune-hd-max-lecteur-multimedia-avec-lecteur-bluray-489703134012.html
qui lit tous les formats, sauf le mp4
Comme j'oublie régulièrement de convertir mes vidéos, j'ai écrit un petit script tout simple, qui utilise pyinotify pour surveiller le répertoire ~/TVDownloader
Quand je lance TVDownloader et qu'un fichier .mp4 y est complètement écrit (surveillance de l'évènement IN_CLOSE_WRITE), une commande de conversion
ffmpeg -i fichier.mp4 -y -vcodec copy -acodec copy fichier.mkv
est lancée
le -y sert à forcer la création du fichier .mkv si un fichier partiel existait déjà.
Remplacer dans le script /home/gg/TVdownloader par votre répertoire d'installation de TVDownloader (ou un autre répertoire que vous voulez surveiller)
Le fichier
/tmp/pyinotify.pid
contient le pid du process daemon
Le code
# Example: daemonize pyinotify's notifier.
# Requires Python >= 2.5
import functools
import sys
import pyinotify
import subprocess
class Counter(object):
"""
Simple counter.
"""
def __init__(self):
self.count = 0
def plusone(self):
self.count += 1
class EventHandler(pyinotify.ProcessEvent):
def process_IN_CLOSE_WRITE(self, event):
print "Close_write:", event.pathname
fichier = event.pathname
if fichier[-4:].lower() == '.mp4':
process = subprocess.call(['ffmpeg', '-i', fichier, '-y', '-vcodec', 'copy' , '-acodec', 'copy', fichier[:-4] + '.mkv'])
def on_loop(notifier, counter):
"""
Dummy function called after each event loop, this method only
ensures the child process eventually exits (after 5 iterations).
"""
sys.stdout.write("Loop %d\n" % counter.count)
counter.plusone()
handler = EventHandler()
wm = pyinotify.WatchManager()
notifier = pyinotify.Notifier(wm, handler)
wm.add_watch('/home/gg/TVDownloader', pyinotify.IN_CLOSE_WRITE)
on_loop_func = functools.partial(on_loop, counter=Counter())
try:
notifier.loop(daemonize=True, callback=on_loop_func,
pid_file='/tmp/pyinotify.pid', stdout='/tmp/stdout.txt')
except pyinotify.NotifierError, err:
print >> sys.stderr, err