Heb vandaag een php-scriptje geschreven die bij een aflevering de bijbehorende subtitle download.
Ik gebruik 'm als post processing script in sabnzbd. Eerste argument = map, tweede argument = naam. Ik sla al m'n afleveringen op onder de naam <show> S[0-9]E[0-9] zonder leading zero, dus geen S02E05 maar S2E5 (wel leading zero? gebruik dan ltrim($var, '0')).
Hopelijk heeft iemand er iets aan
Code (php):
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 |
<?php ini_set('user_agent', 'Programmanaam/1.0'); //per 8 april verplicht $savefile = 'C:\path\opgeslagen_series.txt';
$map = $argv[0]; $serie = $argv[1];
//opgeslagen series laden $series_file = file_get_contents($savefile); $series = array(); foreach(explode("#",$series_file) as $line) { $data = explode('=', $line); $series[strtolower($data[0])] = $data[1]; }
//serie zoeken preg_match("#(.+?) S([0-9]+)E([0-9]+)#i", $serie, $matches); $naam = strtolower($matches[1]); $seizoen = $matches[2]; $aflevering = $matches[3];
if(!$series[$naam]) { $xml = simplexml_load_file('http://api.bierdopje.com/APIKEY/GetShowByName/'.$naam); $showid = $xml->response->showid; file_put_contents($savefile, '#'.$naam.'='.$showid, FILE_APPEND); } else { $showid = $series[$naam]; }
$xml = simplexml_load_file('http://api.bierdopje.com/APIKEY/GetEpisodesForSeason/'.$showid.'/'.$seizoen); foreach($xml->response->results->result as $episode) { if($episode->episode == $aflevering) { $episodeid = $episode->episodeid; } }
$subs = simplexml_load_file('http://api.bierdopje.com/APIKEY/GetAllSubsForEpisode/'.$episodeid.'/nl'); print_r($subs); if(empty($subs->response->results[0]) || ($subs->response->status == 'false')) { //geen nl subs? dan engels print 'Engels.'; $subs = simplexml_load_file('http://api.bierdopje.com/APIKEY/GetAllSubsForEpisode/'.$episodeid.'/en'); }
//scannen van gedownloade map en subtitle downloaden $bestanden = scandir($map); foreach($bestanden as $bestand) { if(preg_match("#(mkv|avi|mp4)#i",$bestand)) { $bestandsnaam = preg_replace("/\\.[^.\\s]{3,4}$/", "", $bestand); //versie zoeken $expl = explode('-', $bestandsnaam); $versie = $expl[count($expl)-1]; foreach($subs->response->results->result as $sub) { if(preg_match('#'.$versie.'#i', $sub->filename)) { echo 'bingo! '.$sub->downloadlink; $srt = file_get_contents($sub->downloadlink); file_put_contents($map.'/'.$bestandsnaam.'.srt', $srt); echo 'opgeslagen'; } } } }
?>
|
Burnside wijzigde dit bericht op 01-04-2012 om 23:17, totaal 2 keer bewerkt