2013-12-10 17 views

risposta

1

appena incontrato questo oggi, e mentre il channelBranding of the V3 youtube API sembra essere molto promettente, non ho potuto farlo da restituire se l'account/canale di id utente è stato verificato o meno

così ho buttato uno script php piuttosto scadente che usa la ricerca del modello DOM per esaminare direttamente l'html. restituire true se è presente il seguente elemento.

<a href="//support.google.com/youtube/bin/answer.py?answer=3046484&amp;hl=en" class="qualified-channel-title-badge" target="_blank"> 

A partire da oggi (2014/09/08) un utente verificato tornerà vero ..

<?php 
function isVerified($youtubeUser) 
{ 
    $youtubeUser = trim($youtubeUser); 
    $url = '\''."https://www.youtube.com/user/".$youtubeUser.'\''; 
    $url = "https://www.youtube.com/user/".$youtubeUser ; 
    $Verified = false; 
    echo "<BR>looking at $url "; 

    $ch = curl_init(); 
    $timeout = 10; 
    curl_setopt($ch, CURLOPT_URL, "$url"); 
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); 
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout); 
    $html = curl_exec($ch); 
    curl_close($ch); 

    $dom = new DOMDocument; 
    @$dom->loadHTML($html); 

    foreach ($dom->getElementsByTagName('a') as $link) { 
     $myVar = $link->getAttribute('class'); 
     $search = "qualified-channel-title-badge"; 
     $found=false; 
     $found = strpos($myVar, $search); 
     if ($found !== false) { 
      $Verified = true; //echo "<BR><font color=green>TRUE</font>"; 
     } else { 
      $Verified = false; //echo "<BR><font color=red>FALSE</font>"; 
     } 
    } 

    if ($Verified) { 
    return true; 
    } else { 
    return false; 
    } 
} 
?> 

Ciao per ora!

0

Se è possibile verificare che lo stato verificato di un canale youtube tramite il flag status.longUploadsStatus sia consentito o idoneo, poiché attualmente questa funzione richiede la verifica dell'account youtube associato.

fonte: https://developers.google.com/youtube/v3/docs/channels

+0

Questo non funziona più. Utilizzando la parte dello stato di richiesta dell'API channels.list, interrogo un canale che mostra un badge verificato sul sito di YouTube, tuttavia il valore restituito dall'API per il flag longUploadsStatus è "longUploadsUnspecified" non vero. – cheino

+0

restituisce la risposta "longUploadsUnspecified" quando la richiesta non è correttamente autorizzata. (è necessario un token autenticato dal proprietario del canale). –

+1

Sto autenticandomi con un token nel metodo setKey di YouTube.Channels.List, ma se il token deve essere autorizzato per il canale specifico, sconfigge lo scopo di identificare i canali verificati nei risultati di ricerca generali. Per tua informazione, sto usando l'API Java. – cheino

3

una soluzione adeguata, è necessario farlo in due fasi:

FASE 1, Utilizzando l'API v3 YouTube dei dati e la ressource channel.list con i parametri:

part:contentDetails 
id:CHANNEL_ID // or forUsername:USERNAME 

Questo è l'output:

{ 
    "kind": "youtube#channel", 
    "etag": "\"CuSCwMPVmgi8taDtE2LV6HdgkN0/Mu0u2QSDqnFcBvUF5X21CnGSEac\"", 
    "id": "UCa10nxShhzNrCE1o2ZOPztg", 
    "contentDetails": { 
    "relatedPlaylists": { 
    "uploads": "UUa10nxShhzNrCE1o2ZOPztg" 
    }, 
    "googlePlusUserId": "105350456099841048474" 
    } 
    } 
.210

Altro: https://developers.google.com/youtube/v3/docs/channels/list

FASE 2 con l'API Google Plus, ottenere il googlePlusUserId dalla richiesta precedente e utilizzare la risorsa plus.people.get con il parametro:

userId:105350456099841048474 

Il risultato mostrerà:

"isPlusUser": true, 
"plusOneCount": 215098, 
"circledByCount": 12621, 
"verified": true, 

Il campo verificato è quello che vuoi!

Più: https://developers.google.com/+/web/api/rest/latest/people/get

+2

Il campo googlePlusUserId è stato deprecato e rimosso e non è più disponibile nell'oggetto contentDetails. – cheino

0

RE: la soluzione di MPGn, notare che c'è una distinzione tra se l'account G + è verificato e se uno o più dei conti canali YouTube sono verificati. È possibile che un account abbia più di un canale e ciascuno di questi canali sia verificato in modo indipendente e che i canali non vengano verificati anche se viene verificato l'account G + associato.

Come suggerisce @ Paul Blakely, il modo migliore corrente per fare questo è quello di controllare il flag status.longUploadStatus, per https://developers.google.com/youtube/v3/docs/channels

1

Sui canali verificate, la classe "ha-badge" è presente.

lavoro nel 2018:

<?php 
$key = 'has-badge'; 
$channel = file_get_contents('https://www.youtube.com/...'); 

if(stripos($channel, $key) !== FALSE) 
    echo "Verified"; 
else 
    echo "Not Verified"; 
?> 
Problemi correlati