?AlkantarClanX12

Your IP : 216.73.217.134


Current Path : /home/rankinh/reunionmag/wp-content/themes/reunionmag-child/
Upload File :
Current File : /home/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";
                }
            }
        }
    }
}

?>