0

Я использую API данных YouTube, чтобы получить некоторую информацию из результата запроса (видео).API данных YouTube некоторые видео не возвращают канал

Большинство видео вернули свои данные. Но некоторые видео не возвращают название своего канала (все остальные поля вернутся в любом случае).

com.google.api.services.youtube.YouTube.Search.List search = youtube.search().list("id,snippet"); 
    search.setKey(getString(R.string.APIKEYYOUTUBE)); 
    search.setQ("hi"); 
    search.setType("video"); 
    search.setFields("items(id/kind,id/videoId,snippet/title,snippet/thumbnails/medium/url,snippet/channelTitle,snippet/publishedAt)"); 
    search.setMaxResults(7); 

     [...] 

    String vId = rId.getVideoId(); 
    String test = singleVideo.getSnippet().getChannelTitle(); 

Пример:

Второе видео вернулся:

vId = "Kgw9xKQX-dI" 
test = "htmailru" 

Третье видео вернулся:

vId = "Q_6XNufgvA4" 
test = "" 

Но если доказательство третий идентификатор видео в YouTube имеет (как и ожидалось) название канала.

Любые идеи?

+0

Это кажется у вас возникли проблемы с чтением специальных символов, цитаты и так далее, потому что они могут усики строки вы строите. Обходным путем для этого будет библиотека ввода-вывода Apache Commons или Guava, а не shure. Удача. – statosdotcom

ответ

1

Похоже, что этот вопрос был опубликован почти два года назад, но, к сожалению, от Google еще не было ответа. Репортер указал, что channelTitle возвращается пустым, когда заголовок канала включает пробел. (В вашем примере, название канала для Q_6XNufgvA4 является «Лучшее видео мира,» который на самом деле включает в себя пространство.)

https://code.google.com/p/gdata-issues/issues/detail?id=6104

К счастью, в качестве обходного пути, channelTitle действительно кажется, правильно заполнить, когда вернулся из videos.list и channels.list.

videos.list:

Использование videoId из ответа поиска

GET https://www.googleapis.com/youtube/v3/videos?part=snippet& 
id=Q_6XNufgvA4& 
fields=items%2Fsnippet%2FchannelTitle& 
key={YOUR_API_KEY} 

возвращает

{ 
"items": [ 
    { 
    "snippet": { 
    "channelTitle": "World's Best Videos" 
    } 
    } 
] 
} 

channels.list:

Вы можете получить channelId из вашего ответа на запрос (items/snippet/channelId) и отправить запрос следующим образом.

GET https://www.googleapis.com/youtube/v3/channels?part=snippet& 
id=UCHqBLGGOvojeQswyJptjukA& 
fields=items%2Fsnippet%2Ftitle& 
key={YOUR_API_KEY} 

возвращает

{ 
"items": [ 
    { 
    "snippet": { 
    "title": "World's Best Videos" 
    } 
    } 
] 
} 
+0

Спасибо. Это сработало. Я использую этот способ только для видео, которые возвращают «". К сожалению, этот путь стоит больше времени и единиц api (от доступных 50 000 000). Надеюсь, исправить придет. – sampa

 Смежные вопросы

  • Нет связанных вопросов^_^