Как получить название канала на YouTube?

Я искал в Документы YouTube и не нашел ничего, чтобы получить название другого канала из видео YouTube.

То есть,

В настоящее время я хочу получить название канала из видео, у меня есть только URL, как узнать название канала?


person Community    schedule 23.07.2013    source источник


Ответы (3)


Вы можете извлечь идентификатор видео из URL-адреса, а затем сделать HTTP-запрос GET:

https://gdata.youtube.com/feeds/api/videos/dQw4w9WgXcQ?v=2&alt=json

где dQw4w9WgXcQ – идентификатор интересующего вас видео. Это возвращает ответ JSON с названием канала в поле author (щелкните ссылку для примера).

Дополнительные сведения см. в разделе Получение данных для одного видео и других разделах API YouTube. документация.

См., например. Как сделать Я нахожу все идентификаторы видео YouTube в строке с помощью регулярного выражения? для некоторых способов получить идентификатор видео из URL-адреса YouTube.

person Fredrik    schedule 23.07.2013
comment
+1 за помощь в решении моей аналогичной проблемы. Оно работает. Я не могу поверить, что у youtube API-3 нет более простого способа, но что ж... он работает.. - person CashCow; 03.02.2015

Это легко сделать с помощью API данных YouTube v3.

Последняя часть URL после "http://www.youtube.com/watch?v=" — это ваш VIDEO_ID.

Просто создайте видео->список с настройкой part="snippet". Затем вы можете получить snippet.channelId в ответе.

Запрос будет:

ПОЛУЧИТЬ https://www.googleapis.com/youtube/v3/videos?part=snippet&id=EhNWzcUqGbI&key={YOUR_API_KEY}

для вашего примера.

Вы всегда можете попробовать их с помощью обозревателя API. .

Отличные примеры кода для начала.

person Ibrahim Ulukaya    schedule 23.07.2013

Для полных новичков, которые потерялись: рассмотрите пример функции, которая поможет понять весь цикл выборки, синтаксического анализа, отображения и т. д. и специально перенести видео канала YouTube в ваше табличное представление. я не пишу здесь часть таблицы

    -(void)initiateRequestToYoutubeApiAndGetChannelInfo
{
NSString * urlYouCanUseAsSample = @"https://www.googleapis.com/youtube/v3/search?key={YOUR_API_KEY_WITHOUT_CURLY_BRACES}&channelId={CHANNEL_ID_YOU_CAN_GET_FROM_ADDRESS_BAR_WITHOUT_CURLY_BRACES}&part=snippet,id&order=date&maxResults=20";



NSURL *url = [[NSURL alloc] initWithString: urlYouCanUseAsSample];

// Create your request
NSURLRequest *request = [NSURLRequest requestWithURL:url];



  // Send the request asynchronously remember to reload tableview on global thread
[NSURLConnection sendAsynchronousRequest:request queue:[[NSOperationQueue alloc] init] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {

    // Callback, parse the data and check for errors
    if (data && !connectionError) {
        NSError *jsonError;

        NSDictionary *jsonResult = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableContainers error:&jsonError];

        if (!jsonError) {
        // better put a breakpoint here to see what is the result and how it is brought to you. Channel id name etc info should be there

            NSLog(@"%@",jsonResult);

        /// separating "items" dictionary and making array

            // 
    id keyValuePairDict = jsonResult;
    NSMutableArray * itemList = keyValuePairDict[@"items"];
            for (int i = 0; i< itemList.count; i++) {


        /// separating VIDEO ID dictionary from items dictionary and string video id
            id v_id0 = itemList[i];
            NSDictionary * vid_id = v_id0[@"id"];
            id v_id = vid_id;
            NSString * video_ID = v_id[@"videoId"];

       //you can fill your local array for video ids at this point

           //     [video_IDS addObject:video_ID];

        /// separating snippet dictionary from itemlist array
            id snippet = itemList[i];
            NSDictionary * snip = snippet[@"snippet"];

        /// separating TITLE and DESCRIPTION from snippet dictionary
            id title = snip;
            NSString * title_For_Video = title[@"title"];
            NSString * desc_For_Video = title[@"description"];

    //you can fill your local array for titles & desc at this point 

              //  [video_titles addObject:title_For_Video];
               // [video_description addObject:desc_For_Video];




        /// separating thumbnail dictionary from snippet dictionary

            id tnail = snip;
            NSDictionary * thumbnail_ = tnail[@"thumbnails"];

        /// separating highresolution url dictionary from thumbnail dictionary

            id highRes = thumbnail_;
            NSDictionary * high_res = highRes[@"high"];

        /// separating HIGH RES THUMBNAIL IMG URL from high res dictionary

            id url_for_tnail = high_res;
            NSString * thumbnail_url = url_for_tnail[@"url"];
   //you can fill your local array for titles & desc at this point

                [video_thumbnail_url addObject:thumbnail_url];


            }
         // reload your tableview on main thread   
    //[self.tableView    performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
     performSelectorOnMainThread:@selector(reloadInputViews) withObject:nil waitUntilDone:NO];


      // you can log all local arrays for convenience
         //   NSLog(@"%@",video_IDS);
          //  NSLog(@"%@",video_titles);
          //  NSLog(@"%@",video_description);
          //  NSLog(@"%@",video_thumbnail_url);
        }
        else
        {
            NSLog(@"an error occurred");
        }
    }
}];

}
person Harris    schedule 02.05.2016