Sites-Camelia/branches/divan-dit-vent/rss.php

267 lines
9.7 KiB
PHP
Raw Normal View History

2021-10-20 15:45:19 +00:00
<?php
// Chargement des données
require_once('donnees_generales.php');
// Chemin vers la librairie GETID3
require_once('scripts/getid3/getid3.php');
function cleanText($intext) {
return htmlspecialchars(stripslashes($intext), ENT_COMPAT | ENT_HTML401, "utf-8");
}
if(isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on') {
$link = "https";
}else{
$link = "http";
}
$link .= "://";
$link .= $_SERVER['HTTP_HOST'];
$link .= $_SERVER['REQUEST_URI'];
$file = basename($link);
if(strpos($file, '.xml') or strpos($file, '.php')) {
$link = str_replace($file, '', $link);
}
$dir = getcwd();
if($diradd) {
$dir = $dir.'/'.$diradd;
}
2021-10-20 17:01:55 +00:00
function scan_dir($dirscan, $dirscanadd) {
$files = array();
2021-10-20 17:01:55 +00:00
foreach (scandir($dirscan) as $file) {
if(strpos($file, ".mp3")) {
2021-10-20 17:01:55 +00:00
if($dirscanadd) {
$file = $dirscanadd.'/'.$file;
}
$files[$file] = filectime($file);
}
}
arsort($files);
$files = array_keys($files);
return ($files) ? $files : false;
}
2021-10-20 17:01:55 +00:00
$array = scan_dir($dir, $diradd);
$lastpubli = date('D, d M Y H:i:s', filectime($array[0]));
// Début de la génération du XML
header("Content-Type: text/xml");
2021-10-20 15:50:45 +00:00
$xml = '<?xml version="1.0" encoding="UTF-8"?>'."\n";
$xml .= '<?xml-stylesheet type="text/xsl" href="scripts/rss.xslt" ?>'."\n";
$xml .= '<rss
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:googleplay="http://www.google.com/schemas/play-podcasts/1.0"
xmlns:content="http://purl.org/rss/1.0/modules/content/"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:spotify="http://www.spotify.com/ns/rss"
xmlns:psc="http://podlove.org/simple-chapters/"
version="2.0">'."\n";
$xml .= '<channel>'."\n";
$xml .='<title>'.$titre.'</title>'."\n";
$xml .='<link>'.$url.'</link>'."\n";
if($urlfacebook and $urlfacebook != 'https://' and $urlfacebook != 'http://') {
$xml .='<facebook>'.$urlfacebook.'</facebook>'."\n";
}
if($urltwitter and $urltwitter != 'https://' and $urltwitter != 'http://') {
$xml .='<twitter>'.$urltwitter.'</twitter>'."\n";
}
if($urlinstagram and $urlinstagram != 'https://' and $urlinstagram != 'http://') {
$xml .='<instagram>'.$urlinstagram.'</instagram>'."\n";
}
$xml .='<atom:link rel="self" type="application/rss+xml" href="'.$link.'rss.php"/>'."\n";
$xml .='<description>'.$description.'</description>'."\n";
$xml .='<language>'.$language.'</language>'."\n";
$xml .='<copyright>'.$auteur.'</copyright>'."\n";
$xml .='<lastBuildDate>'.$lastpubli.' GMT</lastBuildDate>'."\n";
$xml .='<pubDate>'.$lastpubli.' GMT</pubDate>'."\n";
$xml .='<webMaster>contact@badgeek.fr (BadGeek)</webMaster>'."\n";
$xml .='<generator>BadGeek (https://www.badgeek.fr)</generator>'."\n";
$xml .='<managingEditor>'.$mailauteur.'</managingEditor>'."\n";
$xml .='<spotify:countryOfOrigin>'.$pays.'</spotify:countryOfOrigin>'."\n";
$xml .='<itunes:author>'.$auteur.'</itunes:author>'."\n";
$xml .='<itunes:owner>
<itunes:name>'.$auteur.'</itunes:name>
<itunes:email>'.$mailauteur.'</itunes:email>'."\n";
$xml .='</itunes:owner>'."\n";
$xml .='<itunes:summary>'.$description.'</itunes:summary>'."\n";
$xml .='<itunes:explicit>'.$explicit.'</itunes:explicit>'."\n";
$xml .='<itunes:block>'.$appleblock.'</itunes:block>'."\n";
$xml .='<itunes:type>episodic</itunes:type>'."\n";
$xml .='<itunes:subtitle>'.$titre.'</itunes:subtitle>'."\n";
$xml .='<googleplay:author>'.$auteur.'</googleplay:author>'."\n";
$xml .='<googleplay:email>'.$mailauteur.'</googleplay:email>'."\n";
$xml .='<googleplay:description>'.$description.'</googleplay:description>'."\n";
$xml .='<googleplay:explicit>'.$explicit.'</googleplay:explicit>'."\n";
$xml .='<googleplay:block>'.$googleblock.'</googleplay:block>'."\n";
$categorie = str_replace('&', '&amp;', $categorie);
$xml .= '<category>'.$categorie.'</category>'."\n";
if(strstr($categorie, ' > ')) {
$theme_add = explode(" > ", $categorie);
$premiertheme = trim($theme_add[0]);
$secondtheme = str_replace($premiertheme.' > ', '', $categorie);
$xml .= '<itunes:category text="'.$premiertheme.'"/>'."\n";
$xml .= '<itunes:category text="'.$premiertheme.'">'."\n";
$xml .= '<itunes:category text="'.$secondtheme.'"/>'."\n";
$xml .= '</itunes:category>'."\n";
$xml .= '<googleplay:category text="'.$premiertheme.'"/>'."\n";
$xml .= '<googleplay:category text="'.$premiertheme.'">'."\n";
$xml .= '<googleplay:category text="'.$secondtheme.'"/>'."\n";
$xml .= '</googleplay:category>'."\n";
}else{
$xml .= '<itunes:category text="'.$categorie.'"/>'."\n";
$xml .= '<googleplay:category text="'.$categorie.'"/>'."\n";
}
$xml .= '<image>'."\n";
$xml .= '<url>'.$link.$logo.'</url>'."\n";
$xml .= '<title>'.$titre.'</title>'."\n";
$xml .= '<link>'.$url.'</link>'."\n";
$xml .= '</image>'."\n";
$xml .= '<itunes:image href="'.$link.$logo.'"/>'."\n";
$xml .= '<googleplay:image href="'.$link.$logo.'"/>'."\n";
2021-10-20 15:50:45 +00:00
if(is_array($array)) {
// Scan des fichiers et recherche des tags
for ($i = 0; $i < count($array); $i++) {
$getID3 = new getID3;
$tags = $getID3->analyze($dir."/".$array[$i]);
2021-10-20 16:20:39 +00:00
if($diradd) {
$mp3_url = $link.$diradd.'/'.$array[$i];
}else{
$mp3_url = $link.$array[$i];
}
$mp3_poids = filesize($array[$i]);
$mp3_date = date('D, d M Y H:i:s', filectime($array[$i]));
setlocale(LC_TIME, "fr_FR");
$mp3_date_fr = utf8_encode(strftime("%a %d %b", strtotime($mp3_date)));
getid3_lib::CopyTagsToComments($tags);
$mp3_titre = cleanText($tags['comments']['title'][0]);
$mp3_description = cleanText($tags['comments']['comment'][0]);
$mp3_artist = cleanText($tags['comments']['artist'][0]);
$mp3_duree_min = round(intval($tags['playtime_seconds'] / 60));
if($mp3_duree_min == 0) { $mp3_duree_min = "moins de 1 "; }
$mp3_duree_heures = intval($tags['playtime_seconds'] / 3600);
if($mp3_duree_heures < 10) { $mp3_duree_heures = "0".$mp3_duree_heures; }
$mp3_duree_minutes = intval(($tags['playtime_seconds'] % 3600) / 60);
if($mp3_duree_minutes < 10) { $mp3_duree_minutes = "0".$mp3_duree_minutes; }
$mp3_duree_secondes = intval((($tags['playtime_seconds'] % 3600) % 60));
if($mp3_duree_secondes < 10) { $mp3_duree_secondes = "0".$mp3_duree_secondes; }
$mp3_duree = $mp3_duree_heures.":".$mp3_duree_minutes.":".$mp3_duree_secondes;
$permalink = filectime($array[$i]).$mp3_poids.'badgeek'.str_replace(".", "", $tags['playtime_seconds']);
$mp3_numero = cleanText($tags['comments']['track_number'][0]);
if($mp3_numero and !is_numeric($mp3_numero)){
$numerotationcomplete = explode("E", str_replace(' ', '', $mp3_numero));
$numerodesaison = ltrim(preg_replace("/[^0-9.]/", "", $numerotationcomplete[0]), "0");
$numerodepisode = ltrim(preg_replace("/[^0-9.]/", "", $numerotationcomplete[1]), "0");
}
// Suite de la génération du XML
$xml .='<item>'."\n";
$xml .='<title>'.$mp3_titre.' ('.$mp3_duree_min.'min)</title>'."\n";
$xml .='<guid isPermaLink="false">'.$permalink.'</guid>'."\n";
$xml .='<description><![CDATA[';
$xml .= $mp3_description;
$xml .=']]></description>'."\n";
$xml .='<content:encoded><![CDATA[';
$xml .= $mp3_description;
$xml .=']]></content:encoded>'."\n";
$xml .='<pubDate>'.$mp3_date.' GMT</pubDate>'."\n";
$xml .='<pubDateaffichage>'.$mp3_date_fr.'</pubDateaffichage>'."\n";
$xml .='<enclosure url="'.$tracking.$mp3_url.'" length="'.$mp3_poids.'" type="audio/mpeg" />'."\n";
$xml .='<link>'.$mp3_url.'</link>'."\n";
$xml .='<itunes:title>'.$mp3_titre.' ('.$mp3_duree_min.'min)</itunes:title>'."\n";
$xml .='<itunes:summary>'.$mp3_description.'</itunes:summary>'."\n";
$xml .='<itunes:author>'.$mp3_artist.'</itunes:author>'."\n";
$xml .='<itunes:block>'.$appleblock.'</itunes:block>'."\n";
$xml .='<itunes:explicit>'.$explicit.'</itunes:explicit>'."\n";
$xml .='<itunes:keywords>'.$keywords.'</itunes:keywords>'."\n";
$xml .='<itunes:duration>'.$mp3_duree.'</itunes:duration>'."\n";
$xml .='<itunes:episodeType>full</itunes:episodeType>'."\n";
$xml .='<itunes:subtitle>'.$mp3_description.'</itunes:subtitle>'."\n";
if($numerodesaison and $numerodepisode) {
$xml .='<itunes:season>'.utf8_decode($numerodesaison).'</itunes:season>'."\n";
$xml .='<itunes:episode>'.utf8_decode($numerodepisode).'</itunes:episode>'."\n";
}
$xml .='<googleplay:title>'.$mp3_titre.' ('.$mp3_duree_min.'min)</googleplay:title>'."\n";
$xml .='<googleplay:author>'.$mp3_artist.'</googleplay:author>'."\n";
$xml .='<googleplay:description>'.$mp3_description.'</googleplay:description>'."\n";
$xml .='<googleplay:explicit>'.$explicit.'</googleplay:explicit>'."\n";
$xml .='<googleplay:block>'.$googleblock.'</googleplay:block>'."\n";
if(isset($tags['comments']['picture'][0])) {
$url = $dir.'/'.$array[$i];
if($tags['comments']['picture'][0]['image_mime'] == 'image/png') {
$url = str_replace('.mp3', '.png', $url);
}
if($tags['comments']['picture'][0]['image_mime'] == 'image/jpg') {
$url = str_replace('.mp3', '.jpg', $url);
}
$xml .= '<image>'."\n";
$xml .= '<url>'.$link.'scripts/imageReturn.php?mp3='.$url.'</url>'."\n";
$xml .= '</image>'."\n";
$xml .='<itunes:image href="'.$link.'scripts/imageReturn.php?mp3='.$url.'"/>'."\n";
$xml .='<googleplay:image href="'.$link.'scripts/imageReturn.php?mp3='.$url.'"/>'."\n";
}else{
$xml .= '<image>'."\n";
$xml .= '<url>'.$link.$logo.'</url>'."\n";
$xml .= '</image>'."\n";
$xml .='<itunes:image href="'.$link.$logo.'"/>'."\n";
$xml .='<googleplay:image href="'.$link.$logo.'"/>'."\n";
}
$xml .='</item>'."\n";
$numerodesaison = '';
$numerodepisode = '';
}
}
if($ancienrss) {
$item = 'item';
$chaine = @implode("",@file($ancienrss));
preg_match_all('#<item>(.*)<\/item>#isU', $chaine, $items);
foreach($items[0] as $item) {
$xml .= str_replace('dc:creator', 'dccreator', $item);
}
}
$xml .='</channel>'."\n";
$xml .='</rss>';
echo $xml;
// Fin de la génération du XML
?>