Sida 2 av 3

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 17 jul 2010, 05:42
av webaake
Några tips om hur man kan läsa ut rtmp-adressen från tv4play och de andra?

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 23 aug 2010, 18:18
av pacc
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....

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 23 aug 2010, 21:40
av pacc
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.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 24 aug 2010, 19:02
av pacc
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.

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

Postat: 30 sep 2010, 07:09
av klager
webaake skrev:Några tips om hur man kan läsa ut rtmp-adressen från tv4play och de andra?
i rtmpdump paketet ingår rtmpsrv följ instruktionerna nedan

http://www.sweclockers.com/forum/22-mic ... st10306840

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 13 feb 2011, 15:06
av m!rage
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:

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
Det går fortfarande att ändra kvalitet manuellt. Jag vill ha 720p (2400 kbps) så länken

Kod: Markera allt

"mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-c-v1"
blir alltså

Kod: Markera allt

"mp4:kluster/20110209/PG-1134878-002A-BORGEN1EP1-01-mp4-e-v1"
Nu är det bara att tuta och köra (om man vill ladda ner hela programmet):

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

Postat: 13 feb 2011, 16:30
av Hylas
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

Postat: 13 feb 2011, 19:03
av m!rage
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.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 13 feb 2011, 21:12
av Ganymedes
Tackar! :)

// Peter

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 14 mar 2011, 00:29
av eyerouge
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.

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
Kör scriptet genom att t.ex. spara ovanstående i en textfil och sedan:

Kod: Markera allt

bash ./filensnamn

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 16 mar 2011, 21:58
av eyerouge
Ändrat så man kan skriva in URL och filamnet på vart den ska sparas direkt efter kommandot.

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
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.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 18 mar 2011, 00:02
av m!rage
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

Postat: 18 mar 2011, 12:48
av webaake
@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!

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 18 mar 2011, 15:37
av dmz
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

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 20 mar 2011, 15:30
av eyerouge
m!rage
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
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. ;)

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
Kommer ge dig en lista rangordnad, fallande, där högst kvalitet är överst.

Kod: Markera allt

wget -qO- "http://svtplay.se/t/151811/premiar_for_smartare_an_en_femteklassare" | egrep -o rtmp[^,]+ | sort -r | uniq | head -n1
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

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
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:

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
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.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 20 mar 2011, 16:18
av webaake
@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:

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
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.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 22 mar 2011, 09:11
av eyerouge
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.
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.

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

Postat: 22 mar 2011, 17:03
av webaake
Fixade en array;

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"
Nu skall jag se vad jag kan göra med den...

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 22 mar 2011, 17:20
av webaake
Mitt färdiga script med array:

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
Scriptet listar alltså alla tillgängliga varianter av ett program. Man väljer sedan genom att skriva in 0 eller 1 osv.

Re: Skript för att spela upp svtplay-strömmar i mplayer

Postat: 02 aug 2011, 10:20
av webaake
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.