Move certain files when marked as viewed by Plex
See chat (this field can't be longer then 300 characters)unknown
perl
a year ago
4.5 kB
2
Indexable
Never
#!/usr/bin/perl -w use strict; use LWP::UserAgent; use File::Copy; use File::Basename; use HTML::Entities; my ($adres,$aflevering,$alle_series); my ($bestand,$bron,$brono); my ($doel,$doelo); my $episode; my $hoofdstuk; my $klaar; my $lh; my $per_seizoen; my ($season,$seizoen,$serie,$serienummer); my $werk; my ($zoek, $zoek1,$zoek2,$zoek_aflevering,$zoek_hoofdstuk,$zoek_serie); my $dirname = dirname(__FILE__) . '/movedata.ini'; my @install; open (my $fh,'<',$dirname) or die 'niet gevonden'; $werk= ($fh->getline()); $werk=~ s/[\x0A\x0D]//g; push (@install, $werk); $werk= ($fh->getline()); $werk=~ s/[\x0A\x0D]//g; push (@install, $werk); $werk= ($fh->getline()); $werk=~ s/[\x0A\x0D]//g; push (@install, $werk); $werk= ($fh->getline()); $werk=~ s/[\x0A\x0D]//g; push (@install, $werk); close $fh; # read library information my $url = "http://localhost:" . $install[1]. "/library/sections?X-Plex-Token=" . $install[0]; my $response = LWP::UserAgent->new() -> get("$url"); my $hoofdstukken = $response->content(); # $hoofdstukken contains all libraries do { $hoofdstukken = substr($hoofdstukken,index($hoofdstukken,"Directory allowSync")+10); $adres = substr($hoofdstukken,index($hoofdstukken,"type=")+6,4); $hoofdstuk=substr($hoofdstukken,index($hoofdstukken,"key")+5); substr($hoofdstuk,index($hoofdstuk,'</Directory>'))=""; if (index($hoofdstuk,$install[2]) > 0){ #Only process library where source files are to be treated substr($hoofdstuk, index($hoofdstuk,'"'))=""; if ($adres eq "show"){&gezien($hoofdstuk)}; } }until (index($hoofdstukken,"Directory allowSync") < 1); exit 0; sub gezien() { my ($hoofdstuk) = @_; #Read each series my $url = "http://localhost:".$install[1]."/library/sections/".$hoofdstuk."/all?X-Plex-Token=" . $install[0]; my $response = LWP::UserAgent->new() -> get("$url"); $alle_series = $response->content(); do { $zoek1 = index($alle_series, "Directory ratingKey"); $alle_series = substr($alle_series,$zoek1+21); $serienummer = substr($alle_series,0,index($alle_series,'"')); #Season information per series $url = "http://localhost:".$install[1]."/library/metadata/".$serienummer."/children?X-Plex-Token=" . $install[0]; $response = LWP::UserAgent->new() -> get("$url"); $serie = $response->content(); do { $zoek_serie = index($serie,"Directory ratingKey"); $serie = substr($serie, $zoek_serie+21); $seizoen = substr($serie,0,index($serie,'"')); #Read episodes $url = "http://localhost:".$install[1]."/library/metadata/".$seizoen."/children?X-Plex-Token=" . $install[0]; $response = LWP::UserAgent->new() -> get("$url"); $per_seizoen = $response->content(); do { $zoek_aflevering=index($per_seizoen,"Video ratingKey"); $per_seizoen= substr($per_seizoen,$zoek_aflevering+17); $episode = substr($per_seizoen,0,index($per_seizoen,'"')); #Information per episode $url = "http://localhost:".$install[1]."/library/metadata/".$episode."?X-Plex-Token=" . $install[0]; $response = LWP::UserAgent->new() -> get("$url"); $aflevering = $response->content(); $werk='file="'.substr($install[2],0,10); $adres = substr($aflevering,index($aflevering,$werk)+6); $werk=$install[2]; if (index($aflevering,"viewCount") gt 0 && substr($adres,0,length($werk)) eq $werk){ #Viewed! move file(s) substr($adres,index($adres,'"'))=""; $bestand = substr($adres,1+length($install[2])); decode_entities($bestand); $bron = $install[2] . '/' . $bestand; $brono = $bron; $doel = $install[3] . '/' . $bestand; $doelo=$doel; #Create series directory my $md=$install[3].'/'.substr($bestand,0,index($bestand,'/')); $bestand = substr($bestand,1+index($bestand,'/')); mkdir $md; #Maak season directory (if source has that as well if (index($bestand , '/') >0){ $md = $md . '/' . substr($bestand, 0,index($bestand,'/')); mkdir $md; $season = 1; } move ($bron,$doel); $bron = $brono ; substr($bron,rindex($bron,"."))= ".srt"; $doel = $doelo ; substr($doel,rindex($doel,"."))= ".srt"; if (-e $bron){move ($bron, $doel)} #Check to see is sourcedir can be deleted if ($season == 1){ $bron = $brono; substr($bron,rindex($bron,'/'))=""; $brono=$bron; rmdir $bron; $season = 0; } substr($brono,rindex($brono,'/'))=""; rmdir $brono; } }until($zoek_aflevering<1) }until ($zoek_serie <1) }until($zoek1 < 1); }