MTV Híradó lementése

Ma le akartam tölteni a tegnapi Híradót. Ezt látom:

Első reakcióm:

Második reakcióm: töltsük le, plugin nélkül, most már azért is, aztán blogoljuk le. Íme a megfejtés. Először is állítsuk át a böngészőnket iPadre: “Develop – User Agent – Safari iOS 7 iPad” Ez újratölti az oldalt, kattintsunk a Play gombra, aztán várjunk néhány másodpercet, mire elindul a videólejátszás.

Jobbklikk a videón, “Copy Video Address”. Ez visszaad valami hasonlót:

http://212.40.98.166/vod/_definst_/r/mtva/2014/10/16/hirado19_141016/index.smil/playlist.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542

Kiemeltem a hasznos részt, ezt akár elnevezhetjük BASEURL-nek is. Ha a videón “Download Video”-ra kattintunk, akkor letölti a playlistet, egy szövegfájlt. Ennek a tartalma valami ilyesmi:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1200000
chunklist_w1039334821_b1200000.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=1600000
chunklist_w1039334821_b1600000.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=3000000
chunklist_w1039334821_b3000000.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=400000
chunklist_w1039334821_b400000.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542
#EXT-X-STREAM-INF:PROGRAM-ID=1,BANDWIDTH=800000
chunklist_w1039334821_b800000.m3u8?keys=zNijwNRVt5fj3T93UY-bvQ&keyt=1413561542

Kiemeltem a hasznos részt, ami a streamek közül a legjobb minőségű és rámutat arra a fájlra, ami a videót felépítő fájlok listáját tartalmazza. Ezek .ts kiterjesztésű fájlok, azaz MPEG transport stream. A szekvenciálisan egymás után következő .ts fájlok sajátossága, hogy összefűzve őket is értelmes végeredményt kapnak. Nos, akkor lássunk is munkához! Először készítsük el az URL-t a fentiek alapján, ami megmutatja a videó darabjait (baseurl+playlist name):

http://212.40.98.166/vod/_definst_/r/mtva/2014/10/16/hirado19_141016/index.smil/chunklist_w1039334821_b3000000.m3u8

Ha ezt a fájlt bemásoljuk a böngészőbe, azonnal elindul a Híradó. Másoljuk inkább a címsorba és option-Enterrel töltsük le. Ennek tartalma valami ilyesmi:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:13
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:12.0,
media_w1039334821_b3000000_0.ts
#EXTINF:11.68,
media_w1039334821_b3000000_1.ts
#EXTINF:9.8,
media_w1039334821_b3000000_2.ts
#EXTINF:9.96,
media_w1039334821_b3000000_3.ts
...

Ebből egy fájlt megkapni például (baseurl+filename):

http://212.40.98.166/vod/_definst_/r/mtva/2014/10/16/hirado19_141016/index.smil/media_w1039334821_b3000000_3.ts

Vagyis a baseurlhez csapjuk az egyes .ts fájlokat. Ha letöltünk egy ilyet, VLC, vagy MPlayerX gyönyörűen megnyitja. Töltsük is le az összes darabot. Kézzel kissé nehéz lenne, ezért szedegessük ki Regexppel a fájlneveket, ragasszuk hozzá a baseurlt és dobjuk ki egy textfájlba (a WordPress széttöri, de a lenti mintában az idézőjel sima, nem ferde! Ráadásul két parancs a lenti!):

BASEURL=http://212.40.98.166/vod/_definst_/r/mtva/2014/10/16/hirado19_141016/index.smil
curl $BASEURL/chunklist_w1039334821_b3000000.m3u8 | sed -n "/ts\$/s,^,${BASEURL}/,p" > filelist.txt

Utána letölthetjük akár a fájlokat is:

wget --input-file=filelist.txt

Macen nincs alapból wget, ennek beszerzése fakultatív program csomagkezelővel vagy kézzel installálva. Ha letöltöttük őket, akkor össze kell őket fűzni egybe. Ez is könnyen megy, mert a transport stream sajátossága, hogy össze lehet őket másolni és lesz belőle egy nagy, folyamatos videó:

cat $(ls) > out.ts

A parancs feltételezi, hogy a mappában egymás után következnek a fájlok és nincs más a mappában. Ennek az eredményét már tárolhatjuk így is, de ha akarunk még rajta vágni, akkor fel kell már dolgoznunk. Én a Handbrake-kel konvertáltam át MP4-be, azt pedig egy tetszőleges programmal vágtam meg.

Nincs valakinek kedve ezek alapján csinálni egy Híradó letöltő scriptet? 😀