Récupérer le statut d'un live sur Dailymotion

Par ProTeK, il y a 12 ans


Bonjour. ;)

Depuis un petit je cherche à comprendre comment récupérer le statut d'un live sur Dailymotion

J'ai d'abord tester les requêtes via l'API explorer

Ensuite j'ai crée une petite une petite fonction pour récupérer les données :

function getLiveData() { // Récuperation des données
        /* Gestion du cache */
        $cache = LIBRARY . "cache/livestream.tmp";
        if (time() - filemtime($cache) > 300) { // On vérifie si le cache date de plus de 2min
            /* Dailymotion */
            $force_cache = false;
            try {
                $json_daily = json_decode(file_get_contents("https://api.dailymotion.com/user/exitedprotek/videos?fields=broadcasting,title&filters=all-live&sort=recent"), true);
            } catch (Exception $e) {
                $force_cache = true;
            }
            // On crée un tableau avec le contenu des 2 tableaux JSON
            if ($force_cache) {
                $data = unserialize(file_get_contents($cache));
            }
            else {
                $data = $json_daily;
                file_put_contents($cache, serialize($data));
            }
        }
        else { // Si le cache est plus récent on récupère le cache
            $data = unserialize(file_get_contents($cache));
        }
        return $data;
    }

Le problème c'est que l'API ne retourne que "false" pour le champs "broadcasting", j'ai tout essayé mais c'est sans espoir :(

Exemple:

$data = getLiveData();
    echo $data'list'][0]'broadcasting'];

Il me retourne"false" tout le temps :/

EDIT:

Voici la solution ;)

public static function getLiveData($force_update = false) { // Récuperation des données
        /* Gestion du cache */
        $cache = LIBRARY . "cache/livestream.tmp";
        $api_request = "https://api.dailymotion.com/user/exitedprotek/videos?fields=embed_url,onair%2Ctitle%2Curl&search=en+live&sort=old";
        if (time() - filemtime($cache) > 120 || $force_update) { // On vérifie si le cache date de plus de 2min
            $force_cache = false;
            try {
                $json_response = json_decode(file_get_contents($api_request), true);
            } catch (Exception $e) {
                $json_response = unserialize(file_get_contents($cache));;
            }
            $data = $json_response;
            file_put_contents($cache, serialize($data));
        }
        else { // Si le cache est plus récent on récupère le cache
            $data = unserialize(file_get_contents($cache));
        }
        return $data;
    }

7 réponses

ProTeK, il y a 11 ans

Up :)

Luminus, il y a 11 ans

Salut ProTeK,

Je viens de regarder rapidement l'API, et je crois que tu peux utiliser "filters=live" pour récupérer seulement les live en cours.

ProTeK, il y a 11 ans

Même en essayant le filtre il me sort la vidéo qui est considérée comme un "live" même si je ne stream pas actuellement :/

PS: J'ai vu qu'il existait un argument "event_video_live_onair" et "event_video_live_offair" qui me retourne un truc du genre "user.x1dyyih.video.live.onAir et "user.x1dyyih.video.live.offAir". Je ne sais pas si il y a un moyen de pouvoir "écouter" cet event

ProTeK, il y a 11 ans

Merci de ta réponse ;) tu viens de résoudre un problème qui me faisait ch*** depuis un bon moment ^^

PierreSAIGOT, il y a 11 ans

ProTek Tu peut mettre la solution au finals s'il te plait ! je galère la :/

ProTeK, il y a 11 ans

J'ai édité mon post ;)