Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Hej!
Mam telewizor z możliwością odtwarzania filmów z pena, czyta też napisy. Tylko że są one źle zsynchronizowane. Doczytałem, że trzeba im zmienić framerate z 24fps na 25fps. Radzę sobie przez gaupol, ale zacząłem się zastanawiać, czy nie można zastosować jakiegoś zgrabnego skryptu, który bym sobie później podpiął do menu kontekstowego?
Offline
Proponuję wyeliminować problem w zarodku — pobieraj napisy za pomocą [deb]qnapi[/deb].
Offline
Tak właśnie je pobieram.
Offline
polecam http://sourceforge.net/projects/subconv/
Używam do konwersji z TXT na SRT
Offline
mplayer + opcja -subfps
Wycinek kodu ze starego skryptu txt2srt Michała Kowalczuka.
iconv -f cp1250 -t utf8 < "$SUB" > "$SUB_UTF8" echo q | $MPLAYER -sub "$SUB_UTF8" $SUBFPS -subcp utf8 -dumpsrtsub "$MOVIE" 2>&1 iconv -f utf8 -t cp1250 < dumpsub.srt > "$SRT" rm -f "$SUB_UTF8" dumpsub.srt
Powinieneś sobie poradzić, od razu otrzymasz srt ;-)
Offline
na sieci jest skrypt napi.py (do pobierania napisów), dodałem w niem jedną linijkę do pobierania okładki. Jako że Pythona nie znam prawie wcale to w bashu napisałem prosty skrypt pobierający napisy przez napi.py następnie z mediainfo pobieram ilość FPS. Wynik podstawiaony jest do subconv w wyniku czego jak są napisy to dostaje je z okładką w formacie TXT i SRT ... a i jeszcze enca do przekodowania na UTF-8 :)
Wszystko pod konsolą :)
Offline
@pasqdnik - dzięki za kod
@life - podzielisz się? :)
Offline
pasqdnik@freedom:~$ cat bin/napi.py #!/usr/bin/python # reversed napi 0.16.3.1 # # by gim,krzynio,dosiu,hash 2oo8. # # # # last modified: 6-I-2oo8 # # 4pc0h f0rc3 # # do dzialania potrzebny jest p7zip-full (tak sie nazywa paczka w debianie) # # POZDRAWIAMY NASZYCH FANOW! import md5,sys,urllib,os def f(z): idx = [ 0xe, 0x3, 0x6, 0x8, 0x2 ] mul = [ 2, 2, 5, 4, 3 ] add = [ 0, 0xd, 0x10, 0xb, 0x5 ] b = [] for i in xrange(len(idx)): a = add[i] m = mul[i] i = idx[i] t = a + int(z[i], 16) v = int(z[t:t+2], 16) b.append( ("%x" % (v*m))[-1] ) return ''.join(b) if(len(sys.argv)==1): print "wy*dalaj na stadion po film" sys.exit(2) d = md5.new(); d.update(open(sys.argv[1]).read(10485760)) str = "http://napiprojekt.pl/unit_napisy/dl.php?l=PL&f="+d.hexdigest()+"&t="+f(d.hexdigest())+"&v=other&kolejka=false&nick=&pass=&napios="+os.name open("napisy.7z","w").write(urllib.urlopen(str).read()) nazwa=sys.argv[1][:-3]+'txt' if (os.system("/usr/bin/7z x -y -so -piBlm8NTigvru0Jr0 napisy.7z 2>/dev/null >\""+nazwa+"\"")): print "nie ma napisa do filmu" os.remove(nazwa) else: print "napisy pobrano, milordzie!" pasqdnik@freedom:~$
Offline
Do pobrania okładki przed
print "napisy pobrano, milordzie!"
daj to
cov = "http://www.napiprojekt.pl/okladka_pobierz.php?id="+d.hexdigest()+"&oceny=-1" open("okladka.jpg","w").write(urllib.urlopen(cov).read())
a skrypt do pobierani i konwersji wygląda tak:
#!/bin/bash SUB=/usr/local/bin/subconv.py MOVIE="$1" if [ "$1" = "" ]; then echo "Podaj nazwe pliku z filmem." else NAPIE=`/usr/local/bin/napi.py "$MOVIE"` if [ "$NAPIE" != 'nima' ]; then FRATE=`mediainfo "$MOVIE" | grep 'Frame rate' | awk '{print $4}'` BASE="`echo "$1" | rev | cut -d . -f 2- | rev`" SRT="$BASE.srt" TXT="$BASE.txt" # dopasowanie sed -e 's/\[/{/g' "$TXT" > "$SRT" sed -e 's/\]/}/g' "$SRT" > "$TXT" echo "" > "$SRT" $SUB -i "$TXT" -r microdvd -o "$SRT" -f "$FRATE" -w subrip /usr/bin/enca -c "$SRT" echo "Pobralem i przerobilem napisy Milordzie!" else echo "Zong nima napisa Milordzie!" fi fi
przy czym w napi.py zmieniłem to że zwraca "nima" gdy nie znajdzie napisów. Problem jest też z tym że napisy w napiprojekcie są w różnych formatach i skrypt nie zawsze zadziała poprawnie.
Offline
Dzięki :)
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00105 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='18.188.107.57' WHERE u.id=1 |
0.00074 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '18.188.107.57', 1732493489) |
0.00061 | SELECT * FROM punbb_online WHERE logged<1732493189 |
0.00052 | SELECT topic_id FROM punbb_posts WHERE id=164920 |
0.00191 | SELECT id FROM punbb_posts WHERE topic_id=18271 ORDER BY posted |
0.00058 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=18271 AND t.moved_to IS NULL |
0.00005 | SELECT search_for, replace_with FROM punbb_censoring |
0.00082 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=18271 ORDER BY p.id LIMIT 0,25 |
0.00088 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18271 |
Total query time: 0.0073 s |