Skript för att spela upp svtplay-strömmar i mplayer
Kategoriregler
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Här ligger de utförliga instruktionerna vi kan tänkas behöva. Leta här om du tex behöver installera nåt program eller sätta upp någon funktion. Starta inte trådar utan att ha ett svar.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Några tips om hur man kan läsa ut rtmp-adressen från tv4play och de andra?
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Tack för det här, förstår inte varför man inte kan titta i firefox men laddar ner med scriptet
och den här raden i slutet istället:
system("rtmpdump -r $rtmp -o \"$shows{$show}->{name}.mp4\"");
Får göra en check om filen existerar och loopa igenom alla klipp senare....
och den här raden i slutet istället:
system("rtmpdump -r $rtmp -o \"$shows{$show}->{name}.mp4\"");
Får göra en check om filen existerar och loopa igenom alla klipp senare....
Re: Skript för att spela upp svtplay-strömmar i mplayer
Klar...
förstår bara inte raden :
for(keys(%{$foo}))
Ska det hantera flera kontaktenerade rss-filer eller?
Jag hade dubbelt upp av alla länkar så jag tog bort den raden rakt av.
förstår bara inte raden :
for(keys(%{$foo}))
Ska det hantera flera kontaktenerade rss-filer eller?
Jag hade dubbelt upp av alla länkar så jag tog bort den raden rakt av.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Såg till slut att RSS-en bara gick en begränsad tid tillbaka så jag parsade
en normal sida och lade ihop alla flikar med sparade klipp.
XML::Simple är så simpelt att alla alternativ hade varit bättre
Fram till rad 65 är koden för html-sidan, man kan klippa tillbaka rss-koden om man fixar
kontrollen för om filen existerar på disk.
Efter rad 65 fixade jag till den nya parametern 'all' som laddar alla filer som inte redan
finns med samma namn på disk redan.
en normal sida och lade ihop alla flikar med sparade klipp.
XML::Simple är så simpelt att alla alternativ hade varit bättre

Fram till rad 65 är koden för html-sidan, man kan klippa tillbaka rss-koden om man fixar
kontrollen för om filen existerar på disk.
Efter rad 65 fixade jag till den nya parametern 'all' som laddar alla filer som inte redan
finns med samma namn på disk redan.
Kod: Markera allt
#!/usr/bin/perl
# use module
use LWP::Simple;
use XML::Simple;
use Data::Dumper;
# Structure of a programs main page
#html
# body
# div id=wrapper
# div id=sb class="browser showbrowser"
# div class=content
# div class=margin
# div class=show-tab-container animation
# div class=tab-active
# ul class="list small {pagenum:7,rssLink:''}"
# li
# a href
# img src
# span
# *title*
# em
# *date*
my $baseurl = "http://svtplay.se/t/130445/olivia"; # ?cb,a1364151,1,f,-1/pb,a1364150,1,f,-1/pl,v,,2114687/sb,p130446,4,f,-1';
# read pages URL
my $url = XMLin(get($baseurl))->{body}{div}{wrapper}{div}{sb}{div}[0]{ul}{li}{h2}{a}{href};
$url =~ s/\d,f,?-?\d*$//; # remove page selection from internal link
my %shows = ();
my $j = 0;
my $page = 1;
my $pagenum = 1;
do {
my $data = XMLin(get($baseurl . $url. $page))->{body}{div}{wrapper}{div}{sb}{div}[1]{div}{div}{div}; #->{ul};
foreach my $li ( @{$data->[0]->{ul}->{li}})
{
my $name = $li->{a}->{span};
$name =~ s/^\s*//;
$shows{$j++} = {
name => $name,
pub => $li->{a}->{em},
uri => "http://svtplay.se" . $li->{a}->{href},
exists => ((-e "$name.mp4")? 1: 0),
};
#print $j . $li->{a}->{span} . $li->{a}->{em};
#print $j . " http://svtplay.se" . $li->{a}->{href};
#print "\n";
#$j++;
}
if( $data->[0]->{ul}->{class} =~ m/pagenum:(\d),/)
{
$pagenum = $1;
}
#next page
$page++;
} while ($page <= $pagenum);
my $show = shift;
if(!$show || !defined($shows{$show})) {
if ($show ne 'all')
{
usage();
}
else
{
for my $i(sort{$a <=> $b}(keys(%shows))) {
loadshow($i);
}
}
}
else
{
loadshow($show);
}
sub loadshow {
my $selectedshow = $_[0];
my $url = $shows{$selectedshow}->{uri};
my @content = split(/\n/,get("$url")) or die();
my $rtmp = undef;
for(@content) {
if($_ =~ s;.+(rtmp.+mp4-e-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
elsif($_ =~ s;.+(rtmp.+mp4-d-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
elsif($_ =~ s;.+(rtmp.+mp4-c-v1\.mp4).+;;) {
$rtmp = "'$1'";
last;
}
}
print ">>>> $rtmp <<<<\n\n";
if ($shows{$selectedshow}->{exists} == 1)
{
print "\n$shows{$selectedshow}->{name}.mp4 existed: $shows{$selectedshow}->{exists}\n";
}
else
{
print "\n$shows{$selectedshow}->{name}.mp4 did not exist: $shows{$selectedshow}->{exists}\n";
system("rtmpdump -r $rtmp -o \"$shows{$selectedshow}->{name}.mp4\"");
}
}
sub usage {
print << "USAGE";
USAGE: $0 ([show] | all )
\033[1mSHOWS\033[0m:
USAGE
for my $i(sort{$a <=> $b}(keys(%shows))) {
printf("[\033[1m%02d\033[0m] \033[30;1m%s %d\033[0m \033[33m%s\033[0m \n",$i,
$shows{$i}{pub}, $shows{$i}->{exists}, $shows{$i}{name});
}
exit(0);
}
Re: Skript för att spela upp svtplay-strömmar i mplayer
i rtmpdump paketet ingår rtmpsrv följ instruktionerna nedanwebaake skrev:Några tips om hur man kan läsa ut rtmp-adressen från tv4play och de andra?
http://www.sweclockers.com/forum/22-mic ... st10306840
Re: Skript för att spela upp svtplay-strömmar i mplayer
SVT verkar ha ändrat sina rutiner och ger numera inte ut rtmp-adresserna gratis längre. Man får leta reda på dem själv med samma metod som för TV4 Play som står beskriven i Sweclockers-tråden. Sammanfattat:
Det går fortfarande att ändra kvalitet manuellt. Jag vill ha 720p (2400 kbps) så länken
blir alltså
Nu är det bara att tuta och köra (om man vill ladda ner hela programmet):
Kod: Markera allt
$ sudo iptables -t nat -A OUTPUT -p tcp --dport 1935 -j REDIRECT
$ rtmpsrv
RTMP Server v2.3
(c) 2010 Andrej Stepanchuk, Howard Chu; license: GPL
Streaming on rtmp://0.0.0.0:1935
[...]
rtmpdump -r "rtmp://fl11.c91005.cdn.qbrick.com/91005/_definst_" -a "91005/_definst_" -f "LNX 10,2,152,27" -W "http://svtplay.se/flash/svtplayer-2011.3.swf" -p "http://svtplay.se/v/2321925/borgen/del_2_av_10?cb,a1364145,1,f,-1/pb,a1364142,1,f,-1/pl,v,,2321925/sb,p149647,1,f,-1" -y "mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-c-v1" -o PG-1134878-002A-BORGEN1EP1-01-mp4-c-v1.flv
[...]
^CCaught signal: 2, cleaning up, just a second...
$ sudo iptables -t nat -D OUTPUT -p tcp --dport 1935 -j REDIRECT
Kod: Markera allt
"mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-c-v1"
Kod: Markera allt
"mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-e-v1"
Kod: Markera allt
rtmpdump -r "rtmp://fl11.c91005.cdn.qbrick.com:1935/91005/_definst_" -a "91005/_definst_" -f "LNX 10,2,152,27" -W "http://svtplay.se/flash/svtplayer-2011.3.swf" -p "http://svtplay.se/v/2321925/borgen/del_2_av_10?cb,a1364145,1,f,-1/pb,a1364142,1,f,-1/pl,v,,2321925/sb,p149647,1,f,-1" -y "mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-e-v1" -o borgen.ep2-e.flv
Re: Skript för att spela upp svtplay-strömmar i mplayer
Man får fatt i rtmpe-adressen ur den aktuella sidans källkod. Sen är det väl bara att köra.
Kod: Markera allt
rtmpdump -o "blablabla.mp4" -r "rtmpe://blablabla.mp4"
Re: Skript för att spela upp svtplay-strömmar i mplayer
Jaså det var så enkelt. Jag märkte dock att SVT blivit bättre på att ta bort sina gamla program ordentligt. Tidigare kunde det finnas ett eller två avsnitt bakåt i tiden som inte visades på sidan men ändå fanns kvar om man kunde gissa sig till länken. Så det var ju tråkigt att de kom på det.
- Ganymedes
- Inlägg: 427
- Blev medlem: 18 sep 2009, 20:31
- OS: Ubuntu
- Utgåva: 20.04 Focal Fossa LTS
- Ort: Härnösand
Re: Skript för att spela upp svtplay-strömmar i mplayer
Tackar!
// Peter

// Peter
-
- Inlägg: 787
- Blev medlem: 18 jun 2007, 03:44
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
- Ort: malmö
- Kontakt:
Re: Skript för att spela upp svtplay-strömmar i mplayer
Pillade ihop ett litet bash-script som plockar ut rtmp-strömmen med högst kvalitet från serien/filmens svtplaysida, samt sätter igång en nedladdning av det med rtmpdump.
Kör scriptet genom att t.ex. spara ovanstående i en textfil och sedan:
Kod: Markera allt
#!/bin/bash
#
# svtplay.se program rip-script
# v.0.1
#
# by eyerouge with help from foodoo & ubuntu-se wiki.
#
# Worked on all longer svtplay programs as of 13:th of March 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.
echo " "
echo "1. The svtplay-URL to the program: "
read url
echo " "
echo "2. Output file: "
read filename
echo " "
echo "---------------------"
echo "Poetry in motion..."
echo "---------------------"
echo " "
rtmpdump -r $(wget -qO- "$url" | egrep -o rtmp[^,]+ | sort -r | uniq | head -n1) --resume -o "$filename.flv"
exit 0
Kod: Markera allt
bash ./filensnamn
-
- Inlägg: 787
- Blev medlem: 18 jun 2007, 03:44
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
- Ort: malmö
- Kontakt:
Re: Skript för att spela upp svtplay-strömmar i mplayer
Ändrat så man kan skriva in URL och filamnet på vart den ska sparas direkt efter kommandot.
Tips: När man anger målfilen/path kan det vara en god ide att sätta den i "-tecken för att lösa problem som hade uppstått med mellanrum annars.
Kod: Markera allt
# 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 13:th of March 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
Senast redigerad av 1 eyerouge, redigerad totalt 20 gånger.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Gött! Jag tror förresten att du kan ta bort --resume, det har nämligen aldrig fungerat för mig att återuppta en avbruten nerladdning
Re: Skript för att spela upp svtplay-strömmar i mplayer
@eyerouge; hur kan man ändra scriptet för att hämta en lägre kvalitet? Jag brukar hämta näst bästa - går lite fortare.
Annars fungerar det kanon!
Annars fungerar det kanon!
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Re: Skript för att spela upp svtplay-strömmar i mplayer
https://github.com/trapd00r/hacks/blob/ ... svtplay.pl
Kod: Markera allt
Options:
-d, --download download video to ./
-mp, --mplayer play video using mplayer
-l, --list pick a video from the most recent ones
-b, --bitrate choose bitrate?
-s, --subtitle choose subtitle?
-h, --help show the help and exit
-v, --version show version info and exit
-m, --man show the manual and exit
ǁ A: Because it obfuscates the reading.
ǁ Q: Why is top posting so bad?
ǁ Q: Why is top posting so bad?
-
- Inlägg: 787
- Blev medlem: 18 jun 2007, 03:44
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
- Ort: malmö
- Kontakt:
Re: Skript för att spela upp svtplay-strömmar i mplayer
m!rage
Ibland yrar den om skip, fast har inte fördjupat mig i vad problemet är - om det är svtplay eller felanvändning av mig.
webaake
Kommer ge dig en lista rangordnad, fallande, där högst kvalitet är överst.
Gör samma sak, men i och med head kommer enbart första (dvs den med bäst kvalitet oavsett vilken de kvaliteten är i sammanhanget) att listas
Kommer däremot a) plocka de två första raderna från lista och b) plocka en rad från slutet av den nya listan på två rader == den sista == alltid den i näst bäst kvalitet oavsett vilken den är.
Detta kommer dock slå fel ibland när svtplay inte tillhandahåller ett program i högsta kvaliteten (1280). Om de ger ut ett som är ett snäpp lägre kommer du med hjälp av ovanstående få det som är ännu ett snäpp lägre än det som finns där i och med att metoden är relativ till listpositionerna och inte faktisk upplösning på programmen.
Det kommer fungera för dig i de flesta fallen med ovanstående som undantag. Annars måste du skriva om det hela så att den söker reda på alla rtmp-länkar och sedan rycker ut bara den som har ett -d- i slutet av filnamnet, vilket är den i näst högst upplösing.
Kika t.ex. på följande exempel som vi får fram med ovanstående rader:
b är den med lägst upplösning och e den med högst. Dock så struntar sättet jag lade upp det på vilken upplösningen är - den plockar bara den som är överst i listan.
dmz
Tjusigt! Ditt?
Det är bekvämt och fint, men hänger inte med på hur jag kan ange bitraten.
Det har fungerat för mig vid kanske 1-2 tillfällen. Generellt sett instämmer jag dock: Det är absolut inget att förlita sig på, men ser å andra sidan inte att det skulle skada att ge det ett försök heller.m!rage skrev:Gött! Jag tror förresten att du kan ta bort --resume, det har nämligen aldrig fungerat för mig att återuppta en avbruten nerladdning

Ibland yrar den om skip, fast har inte fördjupat mig i vad problemet är - om det är svtplay eller felanvändning av mig.
webaake
Kod: Markera allt
eyerouge@eyerouge:~$ wget -qO- "http://svtplay.se/t/151811/premiar_for_smartare_an_en_femteklassare" | egrep -o rtmp[^,]+ | sort -r | uniq
Kod: Markera allt
wget -qO- "http://svtplay.se/t/151811/premiar_for_smartare_an_en_femteklassare" | egrep -o rtmp[^,]+ | sort -r | uniq | head -n1
Kod: Markera allt
wget -qO- "http://svtplay.se/t/151811/premiar_for_smartare_an_en_femteklassare" | egrep -o rtmp[^,]+ | sort -r | uniq | head -n2 | tail -1
Detta kommer dock slå fel ibland när svtplay inte tillhandahåller ett program i högsta kvaliteten (1280). Om de ger ut ett som är ett snäpp lägre kommer du med hjälp av ovanstående få det som är ännu ett snäpp lägre än det som finns där i och med att metoden är relativ till listpositionerna och inte faktisk upplösning på programmen.
Det kommer fungera för dig i de flesta fallen med ovanstående som undantag. Annars måste du skriva om det hela så att den söker reda på alla rtmp-länkar och sedan rycker ut bara den som har ett -d- i slutet av filnamnet, vilket är den i näst högst upplösing.
Kika t.ex. på följande exempel som vi får fram med ovanstående rader:
Kod: Markera allt
rtmpe://fl11.c90909.cdn.qbrick.com/90909/_definst_/kluster/20110319/PG-1155944-001A-VARNOJE2011S-01-mp4-e-v1.mp4
rtmpe://fl11.c90909.cdn.qbrick.com/90909/_definst_/kluster/20110319/PG-1155944-001A-VARNOJE2011S-01-mp4-d-v1.mp4
rtmpe://fl11.c90909.cdn.qbrick.com/90909/_definst_/kluster/20110319/PG-1155944-001A-VARNOJE2011S-01-mp4-c-v1.mp4
rtmpe://fl11.c90909.cdn.qbrick.com/90909/_definst_/kluster/20110319/PG-1155944-001A-VARNOJE2011S-01-mp4-b-v1
dmz
Tjusigt! Ditt?
Det är bekvämt och fint, men hänger inte med på hur jag kan ange bitraten.
Re: Skript för att spela upp svtplay-strömmar i mplayer
@eyerouge; tack! Jag satsar på head -n2 | tail -1. Det är ju sällan man sparar dessa filer ändå.
Iofs kan man ju lägga alla träffarna (4) i en array och välja i scriptet. Skall fila på det...
PS Har filat och det bidde ingen array, dock blev det:
Tack vare din fina kod räcker det med webadressen (URL1) för att söka ut och sedan lista alternativen. Funkar fint för mig.
Iofs kan man ju lägga alla träffarna (4) i en array och välja i scriptet. Skall fila på det...
PS Har filat och det bidde ingen array, dock blev det:
Kod: Markera allt
echo "Skriv in URL:"
read URL1
wget -qO- "$URL1" | egrep -o rtmp[^,]+ | sort -r | uniq
echo "Kopiera och klistra in rtmpe adressen: "
read URL2
echo "Skriv in filnamnet:"
read FILNAMN
rtmpdump -r "$URL2" --resume -o "$FILNAMN.mp4"
exit 0
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
-
- Inlägg: 787
- Blev medlem: 18 jun 2007, 03:44
- OS: Ubuntu
- Utgåva: 18.04 Bionic Beaver LTS
- Ort: malmö
- Kontakt:
Re: Skript för att spela upp svtplay-strömmar i mplayer
Går garanterat att dumpa varje grej i listan som en variabel (lite på ditt array-spår), sedan helt enkelt bara ange en siffra som i sin tur anger vilken variabel som ska användas istället för att klippa och klistra fram URL2... syftet är att slippa klistrandet helt.webaake skrev: Tack vare din fina kod räcker det med webadressen (URL1) för att söka ut och sedan lista alternativen. Funkar fint för mig.
dmz kör just en sådan lista, men gör det i annat än BASH.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Fixade en array;
Nu skall jag se vad jag kan göra med den...
Kod: Markera allt
N=0
for i in $(wget -qO- "$URL1" | egrep -o rtmp[^,]+ | sort -r | uniq) ; do
testarray[$N]="$i"
echo "$N = $i" #to confirm the entry
let "N= $N + 1"
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Re: Skript för att spela upp svtplay-strömmar i mplayer
Mitt färdiga script med array:
Scriptet listar alltså alla tillgängliga varianter av ett program. Man väljer sedan genom att skriva in 0 eller 1 osv.
Kod: Markera allt
echo "Skriv in URL:"
read URL1
N=0
for i in $(wget -qO- "$URL1" | egrep -o rtmp[^,]+ | sort -r | uniq) ; do
testarray[$N]="$i"
echo "$N = $i" #to confirm the entry
let "N= $N + 1"
done
echo "Välj 0,1,2 .... ;"
read VAL
URL2=${testarray["$VAL"]}
echo "Du har valt:"
echo "$URL2"
echo "--------"
echo "Skriv in filnamnet:"
read FILNAMN
rtmpdump -r "$URL2" --resume -o "/home/mrmedia/VIDEO/$FILNAMN.mp4"
exit 0
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Re: Skript för att spela upp svtplay-strömmar i mplayer
rtmpdump uppdaterad:
git clone git://git.ffmpeg.org/rtmpdump rtmpdump241
cd rtmpdump241
make SYS=posix
sudo make install
Fler protokoll m m.
Tips: Har du installerat från nåt repo - avinstallera först
och kanske sudo apt-get build-dep rtmpdump.
git clone git://git.ffmpeg.org/rtmpdump rtmpdump241
cd rtmpdump241
make SYS=posix
sudo make install
Fler protokoll m m.
Tips: Har du installerat från nåt repo - avinstallera först
och kanske sudo apt-get build-dep rtmpdump.
Xubuntu på flera maskiner. Men inte Unity!
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.
Mer Terminalanvändande i Ubuntu vore bra. Och Xfce. Och Mate.