#!/usr/bin/env python
# -*- coding: iso-8859-2 -*-
"""
mplayer.py
PJM 'kender' <dziubiak@civ.pl> 2004
Licencja: GPL v.2
Uruchomienie:
mplayer.py <nazwa_pliku_z_filmem> <opcje_mplayera>
Skrypt, jesli mają być wyświetlane napisy, dodaje pasek o wysokości 80 do okna odtwarzania w mplayerze, na ktorym ładnie wyświetlają się napisy nie zasłaniając obrazu.
Jeśli jest mu podana opcja -sub <plik z napisami>, pasek jest po prostu dodawany.
Jeśli nie jest podany plik z napisami, sprawdzany jest katalog z filmem. Jeśli zawiera dokładnie jeden plik filmowy (.avi, .mpg, .mpeg) i dokładnie jeden .txt, przyjmowane jest, ze ten plik tekstowy jest plikiem z napisami.
Przydatne, jeśli nie chcemy przemianowywać wszystkich naszych plików z napisami tak, żeby pasowały do filmów.
TODO:
- rozpoznawanie kodowania znaków w pliku z napisami i odpowiednia modyfikacja .mplayer/font
- radzenie sobie z wieloma plikami w jednym katalogu
- coś innego?
"""
MPLAYER_BIN = '`which mplayer`'
import os
import sys
import utils
endsWith = utils.endsWith
def bashit(str):
"Cytuje po bashowemu"
tablica = [
"'",
"\"",
"!",
";",
" ",
"&",
"[",
"]",
"(",
")",
"{",
"}",
"`",
]
for ch in tablica:
str = str.replace(ch, "\\%s" % ch)
return str
def liniaKomendDlaMplayera(args, mplayerPath=MPLAYER_BIN, autofindSubtitles=1,
latPath=None, cpPath=None):
SUB_FILE=None
autofindSubtitles = int(autofindSubtitles)
opcje = {}
argumentyBezMinusa = []
i = 0
for i in range(0, len(args)):
try:
arg = args[i]
except:
break
if arg[0] == '-':
try:
if args[i+1][0] == '-':
raise ""
except:
argumentyBezMinusa.append(arg)
else:
opcje[arg] = args.pop(i+1)
utils.debug(opcje)
else:
argumentyBezMinusa.append(arg)
sys.stderr.write(`opcje`)
plikNapisu = None
if opcje.has_key("-sub"):
plikNapisu=opcje["-sub"]
else:
try:
plikFilmu = argumentyBezMinusa[0]
except:
return None
katalog = os.path.dirname(plikFilmu)
if katalog == '':
katalog = '.'
listaPlikow = os.listdir(katalog)
filmowych = 0
napisowych = 0
if autofindSubtitles:
for plik in listaPlikow:
if endsWith(plik, [".avi", ".mpg", ".mpeg"]):
filmowych += 1
if endsWith(plik, [".txt", ".srt"]):
napisowych += 1
SUB = plik
if filmowych == 1 and napisowych == 1:
SUB = os.path.join(katalog, SUB)
plikNapisu = SUB
if plikNapisu and not opcje.has_key("-vop"):
opcje["-vop"] = "expand=0:-120:0:50"
wierszPolecenia = mplayerPath
for o in opcje.keys():
if o != "-sub":
wierszPolecenia += " %s %s" % (o, opcje[o])
else:
wierszPolecenia += " %s %s" % (o, bashit(opcje[o]))
for a in argumentyBezMinusa:
wierszPolecenia += " %s " % bashit(a)
if plikNapisu and not opcje.has_key("-sub"):
wierszPolecenia += " -sub %s" % bashit(plikNapisu)
return wierszPolecenia
if __name__ == '__main__':
args = sys.argv
x = liniaKomendDlaMplayera(args[1:])
os.system(x)
2004-11-22 11:39:16 CET