astrXbian/www/jukebox/utils/podcastupgrade.php

150 lines
6.6 KiB
PHP
Raw Permalink Normal View History

2020-12-12 03:06:33 +01:00
<?php
$pods = glob("prefs/podcasts/*");
foreach($pods as $pod) {
if (is_dir($pod)) {
if (file_exists($pod.'/info.xml')) {
logger::log("SCHEMA_18", "Importing Podcast ".$pod);
$x = simplexml_load_file($pod.'/info.xml');
$feedurl = htmlspecialchars_decode($x->feedurl);
$lastupdate = $x->lastupdate;
$image = $x->image;
$title = htmlspecialchars_decode($x->album);
$artist = htmlspecialchars_decode($x->albumartist);
switch($x->refreshoption) {
case 'never':
$refreshoption = REFRESHOPTION_NEVER;
break;
case 'hourly':
$refreshoption = REFRESHOPTION_HOURLY;
break;
case 'daily':
$refreshoption = REFRESHOPTION_DAILY;
break;
case 'weekly':
$refreshoption = REFRESHOPTION_WEEKLY;
break;
case 'monthly':
$refreshoption = REFRESHOPTION_MONTHLY;
break;
default:
logger::log("SCHEMA_18", " Unknown Refresh option".$x->refreshoption);
$refreshoption = REFRESHOPTION_NEVER;
break;
}
switch($x->sortmode) {
case 'newestfirst':
$sortmode = SORTMODE_NEWESTFIRST;
break;
case 'oldestfirst':
$sortmode = SORTMODE_OLDESTFIRST;
break;
default:
logger::log("SCHEMA_18", " Unknown Sortmode option".$x->sortmode);
$sortmode = SORTMODE_NEWESTFIRST;
break;
}
$hidedescriptions = ($x->hidedescriptions == 'true') ? 1 : 0;
switch($x->displaymode) {
case 'all':
$displaymode = DISPLAYMODE_ALL;
break;
case 'new':
$displaymode = DISPLAYMODE_NEW;
break;
case 'unlistened':
$displaymode = DISPLAYMODE_UNLISTENED;
break;
case 'downloadednew':
$displaymode = DISPLAYMODE_DOWNLOADEDNEW;
break;
case 'downloaded':
$displaymode = DISPLAYMODE_DOWNLOADED;
break;
default:
logger::log("SCHEMA_18", " Unknown Displaymode option".$x->displaymode);
$displaymode = DISPLAYMODE_ALL;
break;
}
$daystokeep = $x->daystokeep;
$numtokeep = $x->numtokeep;
$keepdownloaded = ($x->keepdownloaded == 'true') ? 1 : 0;
$autodownload = ($x->autodownload == 'true') ? 1 : 0;
$dayslive = $x->daysLive;
$description = htmlspecialchars_decode($x->description);
if (sql_prepare_query(true, null, null, null,
"INSERT INTO Podcasttable
(FeedURL, LastUpdate, Image, Title, Artist, RefreshOption, SortMode, HideDescriptions, DisplayMode, DaysToKeep, NumToKeep, KeepDownloaded, AutoDownload, DaysLive, Description)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
$feedurl, $lastupdate, $image, $title, $artist, $refreshoption, $sortmode, $hidedescriptions, $displaymode, $daystokeep, $numtokeep, $keepdownloaded, $autodownload, $dayslive, $description))
{
$newpodid = $mysqlc->lastInsertId();
foreach($x->trackList->track as $item) {
$title = htmlspecialchars_decode($item->title);
$artist = htmlspecialchars_decode($item->artist);
$duration = $item->duration;
$pubdate = strtotime($item->pubdate);
$filesize = $item->filesize;
$description = htmlspecialchars_decode($item->description);
$link = htmlspecialchars_decode($item->link);
$listened = ($item->listened == 'no') ? 0 : 1;
$new = ($item->new == 'yes') ? 1 : 0;
$deleted = ($item->deleted == 'yes') ? 1 : 0;
$key = $item->key;
if ($item->origlink) {
$origlink = $item->origlink;
} else {
$origlink = "NO_ORIGINAL_LINK";
}
if (is_dir($pod.'/'.$key)) {
$downloaded = 1;
} else {
$downloaded = 0;
}
if (sql_prepare_query(true, null, null, null,
"INSERT INTO PodcastTracktable
(PODindex, Title, Artist, Duration, PubDate, FileSize, Description, Link, OrigLink, Downloaded, Listened, New, Deleted)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)",
$newpodid, $title, $artist, $duration, $pubdate, $filesize, $description, $link, $origlink, $downloaded, $listened, $new, $deleted))
{
logger::log("SCHEMA_18", " Imported Track ".$title);
$newtrackid = $mysqlc->lastInsertId();
if (is_dir($pod.'/'.$key)) {
logger::log("SCHEMA_18", " Renaming ".$pod.'/'.$key." to ".$pod.'/'.$newtrackid);
rename($pod.'/'.$key, $pod.'/'.$newtrackid);
if ($origlink != "NO_ORIGINAL_LINK") {
$fname = basename($link);
$newname = get_base_url().'/prefs/podcasts/'.$newpodid.'/'.$newtrackid.'/'.$fname;
if (sql_prepare_query(true, null, null, null, "UPDATE PodcastTracktable SET Link=? WHERE PODTrackindex=?",$newname,$newtrackid)) {
logger::log("SCHEMA_18", " Updated local link for ".$fname);
} else {
logger::log("SCHEMA_18", "ERROR updating local link for ".$fname);
}
}
}
} else {
logger::log("SCHEMA_18", " ERROR importing track ".$title);
}
}
} else {
logger::log("SCHEMA_18", "ERROR Inserting Podcast ".$title." into database!");
}
unlink($pod.'/info.xml');
if (preg_match('#^prefs/podcasts#', $image)) {
$image = 'prefs/podcasts/'.$newpodid.'/'.basename($image);
if (sql_prepare_query(true, null, null, null, "UPDATE Podcasttable SET Image=? WHERE PODindex=?",$image,$newpodid)) {
logger::log("SCHEMA_18", " Updated image link");
} else {
logger::log("SCHEMA_18", "ERROR updating image link");
}
}
rename($pod, "prefs/podcasts/".$newpodid);
}
}
}
?>