Move certain files when marked as viewed by Plex
See chat (this field can't be longer then 300 characters)unknown
perl
3 years ago
4.5 kB
11
Indexable
#!/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);
}Editor is loading...