Howtos/Rippa från SVT Play

Från Ubuntu Sverige

Hoppa till: navigering, sök

Innehåll

[redigera] Introduktion

SVT Play är en bra tjänst, men det händer att man även vill spara det man ser. Ett antal olika format på videoströmmarna har genom tiden använts. Det vanligaste just nu (2011) verkar vara det som strömmas med protokollet rtmp och inkluderar alla program som SVT köpt in från andra produktionsbolag samt även en del av SVTs egna program. Dessa strömmar kan sparas med hjälp av programmet rtmpdump. Protokollet mms var tidigare det vanligaste, ibland ihop med asx-spelningslistor, men används numera inte alls. Dessa kunde sparas med hjälp av programmet mplayer. Till vissa av SVTs egna produktioner, exempelvis Melodifestivalen, används numera protokollet http. Dessa kan sparas med vilken webbläsare som helst, alternativt med kommandot wget.

[redigera] RTMP

Du behöver programmet rtmpdump för detta. Från och med 10.10 Maverick Meerkat finns detta paket i Ubuntus ordinarie förråd och kan enkelt installeras i Synaptic, programcentralen eller genom kommandot

sudo apt-get install rtmpdump

[redigera] Identifiering av strömmar

SVT ger numera (2011) inte ut länkarna till strömmarna på hjälp-sidan men de finns fortfarande i själva HTML-koden för sidan. Antingen undersöker man HTML-koden manuellt efter en sträng liknanden denna:

rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110226/PG-1147518-001A-DOKINGENERATIO-01-mp4-e-v1.mp4

som sedan rtmpdump kan använda i nästa steg. Alternativet är att använda olika filter för att automagiskt plocka ut adressen. Detta fungerade den 4 mars 2011:

wget -qO- [länk till svtplay.se] | egrep -o rtmp[^,]+ | sort -r | uniq

Detta ger alla fungerande rtmp-adresser för det aktuella programmet, ordnade efter kvalitet och upplösning (högst kvalitet överst och lägst underst). Ett exempel:

$ wget -qO- http://svtplay.se/v/2344751/borgen/del_5_av_10 | egrep -o rtmp[^,]+ | sort -r | uniq
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-e-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-d-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-c-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-b-v1

[redigera] Nerladdning

rtmpdump kan sedan användas för att spara strömmarna. Synaxen är:

rtmpdump -r rtmp-länk -o Fil-att-spara-till

Ett exempel:

rtmpdump -r rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-e-v1.mp4 -o Borgen.S01E05.720p.2400kbps.flv

Uppmärksamma läsare noterade kanske att filändelsen flv valdes istället för mp4. Detta beror på att filen är av typen "Macromedia Flash Video", vilket kan undersökas med hjälp av kommandot file. Den ursprungliga filändelsen mp4 är således fel, även om detta har liten betydelse för moderna filmuppspelningsprogram som istället identifierar filen baserat på magiska nummer.

[redigera] HTTP

För detta behövs inga speciella program som inte ingår i Ubuntus standardsortiment.

[redigera] Identifiering av strömmar

Även i detta fall fås länkarna från sidans HTML-kod. Antingen undersöker man HTML-koden manuellt efter en sträng liknanden denna:

http://www0.c00928.cdn.qbrick.com/00928/kluster/20110219/Mel-Bidrag7-SaraVarga.flv

Alternativet är att även i detta fallet använda olika filter för att automagiskt plocka ut adressen. Detta fungerade den 4 mars 2011 för Melodifestivalen:

wget -qO- [länk till svtplay.se] | egrep -o http.*.flv | uniq

Här finns endast en enda ström att ta hänsyn till. Ett exempel:

$ wget -qO- http://svtplay.se/v/2331612/melodifestivalen/spring_for_livet_med_sara_varga?sb,k151375,1,f,-1 | egrep -o http.*.flv | uniq
http://www0.c00928.cdn.qbrick.com/00928/kluster/20110219/Mel-Bidrag7-SaraVarga.flv

[redigera] Nerladdning

Denna adress kan nu helt enkelt klistras in i valfri webbläsare för att få en fil att ladda ner. Ett alternativ, när man ändå är i terminalen är att använda wget:

wget http://www0.c00928.cdn.qbrick.com/00928/kluster/20110219/Mel-Bidrag7-SaraVarga.flv

Eftersom det bara finns en enda ström går det att kombinera dessa till ett enda kommando som laddar ner filen direkt:

wget -qO- [länk till svtplay.se] | egrep -o http.*.flv | uniq | wget -i-

[redigera] MMS (föråldrad)

Du behöver programmet mplayer för detta. mplayer finns i Ubuntus ordinarie förråd och kan enkelt installeras i Synaptic, programcentralen eller genom kommandot

sudo apt-get install mplayer

Leta upp videon på www.svtplay.com. Klicka på Inställningar och sen på Windows Media (asx) under Länk för extern spelare. Öppna asx-filen i en textredigerare, exempelvis gedit. Markera länken som börjar med mms:// och slutar med .wmv för att kopiera den. Öppna en terminal och bläddra till den mapp dit du vill spara filen (cd sökväg). Skriv mplayer -dumpstream och klicka på mushjulet (har du inget mushjul kan du trycka ner vänster och höger musknapp samtidigt) för att klistra in länken och tryck sedan enter. Hela raden bör se ut ungefär som följande:

mplayer -dumpstream mms://wm0.c90901.cdn.qbrick.com/90901/kluster/20091124/PG-1130135-004A-MORDENFDGRAVEN.wmv

Mplayer spottar ur sig en hel del information och stannar sen vid Stream not seekable! Därefter börjar den ladda ner och spara strömmen, utan att ge någon som helst indikation hur långt det är kvar. När allt är klart visas

Everything done. Thank you for downloading a media file containing proprietary and patented technology.
Core dumped ;)

Exiting... (End of file)

och mplayer avslutas. Du bör nu ha din fil i mappen du står i, redo för uppspelning.

I vissa fall kommer mplayer att gå in i en oändlig slinga. Detta ska enligt uppgift avhjälpas om följande parameter läggs till:

-user-agent NSPlayer/8.0.0.4477

[redigera] Undersökning av länkar och filformat

I exemplet med Borgen erhölls följande länkar:

rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-e-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-d-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-c-v1.mp4
rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/20110302/PG-1134878-005A-BORGEN1EP1-02-mp4-b-v1

Den kan brytas ner i följande delar:

  • rtmp:// - protokollet, som alltid är samma.
  • fl11.c91005.cdn.qbrick.com/91005/_definst_/kluster/ - adress till servern. 91005 är förmodligen SVTs kundnummer som ändras då och då.
  • 20110302 - datumet det aktuella programmet sändes, i detta fallet onsdagen den 2 mars 2011.
  • PG - anger att strömmen är ett TV-program (till skillnad från vad?).
  • 1134878 - unikt ID för det aktuella programmet.
  • 005A - aktuellt avsnitt, i detta fallet avsnitt 5. A verkar inte ändras mellan olika säsonger (behöver fastställas).
  • BORGEN1EP1 - programmets namn, som verkar vara samma genom hela säsongen.
  • 02 - något nummer som kan ändras mellan olika avsnitt (men inte alltid) och verkar kunna anta 01, 02 eller 03.
  • mp4 - alltid samma, vilket antas bero på SVTs missbruk av filändelsen mp4.
  • e - det enda som skiljer olika kvaliteter och upplösningar åt. e är 1280x720 @ 2400 kbps. d är 640x360 @ 1400 kbps. c är 640x360 @ 850 kbps. b är 340 kbps.[1] Tidigare fanns även a, som var ännu lägre kvalitet.
  • v1.mp4 - alltid samma, vilket även det antas bero på SVTs missbruk av filändelsen mp4.

[redigera] Filformat

Avsnitt 5 av serien Borgen (2011) som var med i rtmp-exemplet är 58:32 långt. Filen blev 1003,5 MB stor, vilket motsvarar 2340 kbps eller cirka 17 MB per minut. Upplösningen är 1280x720 och kodekarna är H.264/AVC för videon och AAC (48 kHz) för ljudet. Det går att spola både framåt och bakåt i videon. Avsnitt 3 av serien Morden (2009), som tidigare kunde sparas från en mms-ström, är 57:52 långt och filen blev 432,3 MB stor. Det motsvarar cirka 7.5 MB per minut. Upplösningen är 640x360 och kodekarna är Windows Media 9 (25fps) för videon och WMA 8 (32 kHz) för ljudet. Det går bra att spola framåt och bakåt i videon, något som inte går om mplayer avbryts mitt i strömningen (genom ctrl-c).

[redigera] Övrigt

Om inte rtmpdump går att hitta i aptitude/apt-get så går det bra att använda windowsversionen av rtmpdump genom wine istället så slipper man kompilera linuxversionen från källkod: wine rtmpdump -r [klistra in länken curl tagit fram här utan hakparanteserna] > ~/dumpad_svtplayvideo.flv Videon sparas då förhoppningsvis korrekt i din hemkatalog. (Källa till rtmpinstruktionen är användaren FEL ( http://ubuntu-se.org/phpBB3/viewtopic.php?p=362224#p362224 )

[redigera] svtplay-ripscript

Någon som känner sig händig med BASH eller annat får gärna skriva ett script där man i terminalen helt enkelt bara anger a) url:en till programmet på svtplay b) vilken kvalitet man vill rippa i genom att ange en bokstav (a till f osv) och c) outputpathen.

Scriptet tar infon, matar RTMPDump, och alla blir glada förutsatt att folket stöttar svt i och med att man plundrar dem annars och försämrar utbudet genom att inte betala sin tv-avgift. Här är ett exempel på ett fungerande sådant som plockar ner programmet i högsta tillgängliga kvalitet.

# svtplay.se program rip-script
# v.0.2
#
# by eyerouge with help from foodoo & ubuntu-se wiki.
#
# Worked on all longer svtplay programs as of 5:th of October 2o11.
# Is not intended to work on short clips as svtplay doesnt use rtmp for them, and they're easier to rip anyhow.
# Visit http://ubuntu-se.org/wiki/Howtos/Rippa_fr%C3%A5n_SVT_Play for more loving.
#
# [info] You need only thre thigs: a) rtmpdump installed, b) the svtplay-URL to the specific program/episode and c) the path and name of the destination file. 
#
# Syntax:
# $ bash ./scriptname URLtoSVTPlayProgramsSite NameAndPathOfDestinationFile
#
# Output:
# NameAndPathOfDestinationFile.flv
echo " "
rtmpdump -r $(wget -qO- "$1" | egrep -o rtmp[^,]+ | sort -r | uniq | head -n1) --resume -o "$2.flv"
exit 0


#!/usr/bin/ruby
# Ett Rubyskript för att ladda ner från SVT. Ruby och rtmpdump måste vara installerat för att det ska fungera.
# Spara skriptet någonstans i Ubuntus PATH och ge det rättighet att köras.
# Användning:
# namn_på_skript url_till_enskilt_avsnitt
# Du måste ändra Path och Quality nedan till dina önskade värden.
# Skriptet skapar sen mappar för program och döper varje avsnitt automatiskt.
#
# v.0.1.1 - ändrade tempfilnamnet så att det blir unikt för varje fil så att man kan rippa flera avsnitt samtidigt genom att köra flera instanser av skriptet på samma gång. /eyerouge
require 'fileutils'
temp = Time.now.to_f
Path = '/home/eyerouge/Video/svtplay/' # Mapp där avsnitt ska sparas
Quality = 'e' # Kvalité på video (a-e)
http = ARGV[0]
html = `wget -qO- #{http}`
rtmp = html.scan(/rtmp[^,]+/).select {|r| r.include? "-#{Quality}-"}.uniq.to_s
title = html.match /\<title.*\/title/m
matches = title.to_s.match /(title\>)(.*)( \- )(.*)( \|)/m
if matches.nil?
  puts "Kunde inte hitta program och avsnitts information"
  exit
end
avsnitt = matches[2].strip
program = matches[4].strip
puts "Program: #{program}"
puts "Avsnitt: #{avsnitt}"
FileUtils.cd '/home/eyerouge/Video/svtplay', :verbose => true
FileUtils.mkdir program, :verbose => true unless File.exists? program
`rtmpdump -r "#{rtmp}" -o #{Path}#{temp} --resume`
FileUtils.mv "#{Path}#{temp}", "#{Path}#{program}/#{avsnitt}"

[redigera] Referenser och övriga länkar

rtmpdump

Diskussionstråd i ämnet i Ubuntu-SEs forum

  1. [1]
Personliga verktyg