2016-05-17 31 views
7

Vorrei recuperare i dettagli di un canale YouTube con un URL personalizzato, ad esempio https://www.youtube.com/c/pratiksinhchudasamaisawesome.Come ottenere i dettagli del canale Youtube utilizzando l'API dei dati di YouTube se il canale ha un URL personalizzato

Gli URL dei canali personalizzati seguono questo formato: https://www.youtube.com/c/{custom_channel_name}.

Posso recuperare i dettagli dei canali YouTube per ID canale e nome utente senza problemi. Sfortunatamente, ho bisogno di usare l'URL del canale personalizzato, che è l'unica volta che incontro questo problema.

Ho sviluppato la mia app pochi mesi fa e l'URL del canale personalizzato stava funzionando fino a pochi giorni fa. Ora, l'API dei dati di YouTube non restituisce nulla per l'URL del canale personalizzato di YouTube se provo a ottenere i dettagli utilizzando il loro nome personalizzato.

per ottenere i dettagli di questo canale: https://www.youtube.com/user/thenewboston, ad esempio, la richiesta potrebbe essere:

GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=thenewboston&key={YOUR_API_KEY} 

risposta

200 
- SHOW HEADERS - 
{ 
"kind": "youtube#channelListResponse", 
"etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/8Dz6-vPu69KX3yZxVCT3-M9YWQA\"", 
"pageInfo": { 
    "totalResults": 1, 
    "resultsPerPage": 5 
}, 
"items": [ 
    { 

    "kind": "youtube#channel", 
    "etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/KlQLDlUPRAmACwKt9V8V2yrOfEg\"", 
    "id": "UCJbPGzawDH1njbqV-D5HqKw", 
    "snippet": { 
    "title": "thenewboston", 
    "description": "Tons of sweet computer related tutorials and some other awesome videos too!", 
    "publishedAt": "2008-02-04T16:09:31.000Z", 
    "thumbnails": { 
    "default": { 
     "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s88-c-k-no-rj-c0xffffff/photo.jpg" 
    }, 
    "medium": { 
     "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg" 
    }, 
    "high": { 
     "url": "https://yt3.ggpht.com/--n5ELY2uT-U/AAAAAAAAAAI/AAAAAAAAAAA/d9JvaIEpstw/s240-c-k-no-rj-c0xffffff/photo.jpg" 
    } 
    }, 
    "localized": { 
    "title": "thenewboston", 
    "description": "Tons of sweet computer related tutorials and some other awesome videos too!" 
    } 
    } 
    } 
] 
} 

Funziona perfettamente.

Ora dobbiamo ottenere i dettagli di questi canali:

Allora otteniamo:

GET https://www.googleapis.com/youtube/v3/channels?part=snippet&forUsername=annacavalli&key={YOUR_API_KEY} 

risposta

200 
- SHOW HEADERS - 
{ 
"kind": "youtube#channelListResponse", 
"etag": "\"zekp1FB4kTkkM-rWc1qIAAt-BWc/TAiG4jjJ-NTZu7gPKn7WGmuaZb8\"", 
"pageInfo": { 
    "totalResults": 0, 
    "resultsPerPage": 5 
}, 
"items": [ 
] 
} 

Questo può essere facilmente riprodotto utilizzando il API explorer.

+0

Sembra che potrebbe essere un bug con la loro API. Perché non [segnalalo] (https://code.google.com/p/gdata-issues/issues/entry?template=YouTube%20 (Defect% 20Report)) e vedi se Google lo risolverà per te? – Laurel

+0

Non è un bug, ma piuttosto una funzionalità mancante.I nomi utente (che provengono da vecchi tempi, prima dell'integrazione con YouTube e Google Plus) non sono uguali agli identificatori di canale personalizzati, quindi è previsto che il filtro 'forUsername' non funzioni in questo modo. – jkondratowicz

risposta

4

La soluzione più semplice, utilizzando solo l'API, è utilizzare solo Ricerca: metodo elenco dell'API dei dati di YouTube. Da quello che posso dire (intendiamoci, questo è dalla mia stessa ricerca, i documenti ufficiali non dicono nulla su questo argomento!), Se cerchi usando il componente URL personalizzato, con filtro del tipo di risultato "canale" e ordinamento "pertinenza" (predefinito) , primo risultato dovrebbe essere essere quello che stai cercando.

Quindi la seguente query ottiene 16 risultati, con il primo che è quello che stai cercando. Lo stesso vale per tutti gli altri URL di canali personalizzati che ho provato, quindi penso che questo sia il modo più affidabile per farlo.

GET https://www.googleapis.com/youtube/v3/search?part=id%2Csnippet&q=annacavalli&type=channel&key={YOUR_API_KEY} 

L'altra idea è solo raschiando pagina di YouTube alla URL personalizzato, dove si possono trovare ChannelID in uno dei meta tag nel codice HTML. Ma questo è inefficace, inaffidabile e AFAIK in violazione dei termini di utilizzo di YouTube.

Modifica: Beh, non restituisce risultati per canali più piccoli, quindi non è affatto affidabile.

+0

è quasi quello che stiamo cercando, eccetto quel "tipo": "youtube # searchResult" invece di "kind": "youtube # activity" –

+0

C'è un modo per ottenere l'id dei piccoli canali? –

+0

@MahmoudHanafy Non vedo altri modi per ottenere channelId dall'URL personalizzato diverso dai metodi che ho descritto. – jkondratowicz