Move certain files when marked as viewed by Plex

See chat (this field can't be longer then 300 characters)
mail@pastecode.io avatar
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);
}