?AlkantarClanX12
| Current Path : /home/r/a/n/rankinh/reunionmag/wp-content/themes/reunionmag-child/ |
| Current File : /home/r/a/n/rankinh/reunionmag/wp-content/themes/reunionmag-child/import-ytb.php |
<?php
// 🔹 CONFIGURATION 🔹
define('YOUTUBE_API_KEY', 'AIzaSyByQuFbnntDt9isx0X7_Zud_zLJfDXsPuw');
define('WP_SITE_URL', 'https://reunionmag.re/wp-json/wp/v2/posts');
define('WP_USERNAME', 'Dev974');
define('WP_PASSWORD', '$hS69J0)K@sNeV^Ovv');
define('MAX_VIDEOS_PER_CATEGORY', 3); // Nombre de vidéos à récupérer par catégorie
define('HISTORY_FILE', 'published_videos.json');
// Catégories et chaînes associées
$CATEGORIES = [
"Cinéma & Création vidéo" => ["https://cine-reunion.com/"],
"Culture & Patrimoine" => ["https://www.youtube.com/@NotreHistoiredoc", "https://www.youtube.com/@reportagekulture3014"],
"Entreprises & Innovations" => ["https://www.youtube.com/@reunionla1ere", "https://www.youtube.com/@KanalAustral-TV"],
"Gastronomie & Saveurs" => ["https://www.youtube.com/@Food_Story", "https://www.youtube.com/@SLICE_Voyage"],
"Musique & Spectacles" => ["https://www.youtube.com/@KDMFAMILYTV", "https://www.youtube.com/@974Muzik"],
"Nature & Paysages" => ["https://www.youtube.com/@ReunionTourisme"],
"News & Actualités" => ["https://www.youtube.com/@reunionla1ere", "https://www.youtube.com/@antennereunion1394"],
"Reportages & Immersion" => ["https://www.youtube.com/c/Echapp%C3%A9esbellesofficiel", "https://www.youtube.com/@SecretsdeLaTerre"],
"Sports & Aventures" => ["https://www.youtube.com/@reunionla1ere", "https://www.youtube.com/@ReunionTourisme"],
"Tendances & Actus" => ["https://www.youtube.com/@reunionla1ere", "https://www.youtube.com/@ZapReunion"]
];
// Fonction pour charger l'historique des vidéos déjà publiées
function load_published_videos() {
echo "Chargement de l'historique des vidéos...\n";
if (file_exists(HISTORY_FILE)) {
$content = file_get_contents(HISTORY_FILE);
var_dump($content);
return json_decode($content, true) ?? [];
}
return [];
}
// Fonction pour sauvegarder une vidéo publiée
function save_published_video($video_id) {
echo "Ajout de la vidéo $video_id à l'historique\n";
$history = load_published_videos();
$history[] = $video_id;
file_put_contents(HISTORY_FILE, json_encode($history));
}
// Fonction pour récupérer l'ID d'une chaîne YouTube
function get_channel_id($youtube_url) {
echo "Récupération de l'ID pour la chaîne : $youtube_url\n";
$username = explode("@", $youtube_url);
$username = end($username);
$search_url = "https://www.googleapis.com/youtube/v3/search?part=snippet&type=channel&q={$username}&key=" . YOUTUBE_API_KEY;
echo "URL API YouTube : $search_url\n";
$response = json_decode(file_get_contents($search_url), true);
print_r($response);
return $response["items"][0]["id"]["channelId"] ?? null;
}
// Fonction pour récupérer les vidéos récentes d'une chaîne YouTube
function get_latest_videos($channel_id, $max_results = MAX_VIDEOS_PER_CATEGORY) {
echo "Récupération des vidéos pour la chaîne ID: $channel_id\n";
$search_url = "https://www.googleapis.com/youtube/v3/search?key=" . YOUTUBE_API_KEY . "&channelId={$channel_id}&part=snippet,id&order=date&maxResults={$max_results}";
echo "URL API YouTube : $search_url\n";
$response = json_decode(file_get_contents($search_url), true);
print_r($response);
$videos = [];
if (isset($response["items"])) {
foreach ($response["items"] as $item) {
if (isset($item["id"]["videoId"])) {
$video_id = $item["id"]["videoId"];
$title = $item["snippet"]["title"];
$description = $item["snippet"]["description"];
$video_url = "https://www.youtube.com/watch?v={$video_id}";
$thumbnail_url = "https://img.youtube.com/vi/{$video_id}/maxresdefault.jpg";
$videos[] = [$video_id, $title, $description, $video_url, $thumbnail_url];
}
}
}
return $videos;
}
// Fonction pour créer un article WordPress
function create_wordpress_post($title, $content, $category, $video_url, $thumbnail_url) {
echo "Création de l'article : $title\n";
$headers = [
"Content-Type: application/json",
"Authorization: Basic " . base64_encode(WP_USERNAME . ":" . WP_PASSWORD),
"Accept-Encoding: identity" // 👈 Désactive la compression gzip
];
$post_data = [
"title" => $title,
"content" => $content,
"status" => "publish",
"categories" => [$category],
"meta" => ["bk_video_post_format" => $video_url],
"featured_media" => upload_image_to_wordpress($thumbnail_url)
];
echo "Données envoyées à WordPress :\n";
print_r($post_data);
$ch = curl_init(WP_SITE_URL);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($post_data));
curl_setopt($ch, CURLOPT_ENCODING, ''); // 👈 Ajout pour éviter l'erreur
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
echo "Réponse de WordPress :\n";
print_r(json_decode($response, true));
return json_decode($response, true);
}
// Fonction pour téléverser une image sur WordPress
function upload_image_to_wordpress($image_url) {
echo "Téléchargement de l'image : $image_url\n";
$image_data = file_get_contents($image_url);
$filename = "thumbnail.jpg";
$headers = [
"Authorization: Basic " . base64_encode(WP_USERNAME . ":" . WP_PASSWORD),
"Content-Disposition: attachment; filename={$filename}",
"Accept-Encoding: identity" // 👈 Désactive la compression gzip
];
$ch = curl_init("https://TONSITE.com/wp-json/wp/v2/media");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $image_data);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
$response = curl_exec($ch);
curl_close($ch);
echo "Réponse du téléversement de l'image :\n";
print_r(json_decode($response, true));
$result = json_decode($response, true);
return $result["id"] ?? null;
}
// 🔥 EXÉCUTION 🔥
$published_videos = load_published_videos();
foreach ($CATEGORIES as $category => $channels) {
echo "\n🔹 Catégorie : $category 🔹\n";
foreach ($channels as $channel_url) {
$channel_id = get_channel_id($channel_url);
if ($channel_id) {
$videos = get_latest_videos($channel_id);
foreach ($videos as $video) {
list($video_id, $title, $description, $video_url, $thumbnail_url) = $video;
if (!in_array($video_id, $published_videos)) {
echo "Ajout de l'article : {$title}\n";
create_wordpress_post($title, $description, $category, $video_url, $thumbnail_url);
save_published_video($video_id);
} else {
echo "Vidéo déjà publiée : $video_id\n";
}
}
}
}
}
?>