আমি কীভাবে ইউটিউব এপিআই সংস্করণ 3 এর সাথে ভিডিওর মেয়াদ পেতে পারি?


97

ইউটিউব অনুসন্ধান করতে আমি ইউটিউব এপিআই v3 ব্যবহার করছি।

https://developers.google.com/youtube/v3/docs/search

আপনি দেখতে পাচ্ছেন, প্রতিক্রিয়াটি JSON- এ ভিডিওর মেয়াদ নেই। ভিডিও সময়সীমা পাওয়ার উপায় আছে কি?

পছন্দসইভাবে ফলাফলের প্রতিটি উপাদানের জন্য আবার কোনও এপিআই কল না করা (যদি না হয় তবে সময়সীকরণের একমাত্র উপায়)।


24
সাধারণ গুগল, এমন কিছু গ্রহণ করছে যা ঠিক কাজ করে এবং এটিকে নষ্ট করে।
Synetech

4
এই প্রশ্নটি কেন পিএইচপি এবং উদ্দেশ্য-সি উভয়ের সাথে ট্যাগ করা আছে? কিছু উত্তর পাইথন ব্যবহার করে।
পিটার মর্টেনসেন

উত্তর:


132

আপনি অনুসন্ধান কল করার পরে আপনাকে ইউটিউব ডেটা এপিআইর ভিডিও সংস্থানটিতে একটি কল করতে হবে। আপনি একটি অনুসন্ধানে 50 টি পর্যন্ত আইডি রাখতে পারেন, যাতে আপনাকে প্রতিটি উপাদানটির জন্য কল করতে হবে না।

https://developers.google.com/youtube/v3/docs/videos/list

আপনি সেট করতে চাইবেন part=contentDetails , কারণ সময়কাল আছে।

উদাহরণস্বরূপ, নিম্নলিখিত কল:

https://www.googleapis.com/youtube/v3/videos?id=9bZkp7q19f0&part=contentDetails&key={YOUR_API_KEY}

এই ফলাফল দেয়:

{
 "kind": "youtube#videoListResponse",
 "etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/ny1S4th-ku477VARrY_U4tIqcTw\"",
 "items": [
  {

   "id": "9bZkp7q19f0",
   "kind": "youtube#video",
   "etag": "\"XlbeM5oNbUofJuiuGi6IkumnZR8/HN8ILnw-DBXyCcTsc7JG0z51BGg\"",
   "contentDetails": {
    "duration": "PT4M13S",
    "dimension": "2d",
    "definition": "hd",
    "caption": "false",
    "licensedContent": true,
    "regionRestriction": {
     "blocked": [
      "DE"
     ]
    }
   }
  }
 ]
}

সময়টি আইএসও 8601 স্ট্রিং হিসাবে ফর্ম্যাট করা হয়েছে। পিটি মানে সময়কাল, 4 এম 4 মিনিট, এবং 13 এস 13 সেকেন্ড।


4
এই সময়ের ফর্ম্যাটটি কী? এটি কী একটি মান যা উদ্দেশ্য সি সমর্থন করে?
রুকশন মারাপাণ

4
দেরিতে মন্তব্য করা, তবে সম্ভবত আপনি তারকাচিহ্নিত করতে এবং এই টিকিটের অনুরোধের স্থিতিকাগুলি সন্ধানের প্রতিক্রিয়ায় অন্তর্ভুক্ত করার জন্য নজর রাখতে চান: Code.google.com/p/gdata-issues/issues/detail?id=4294
অ্যান্ড্রু

4
@ অ্যান্ড্রু - এটি আইএসও 8601 ফর্ম্যাট করা। আমি সম্মত হই যে এটি দেখতে বেশ নৃশংস বলে মনে হচ্ছে তবে কমপক্ষে এটি যে কোনও ভাষায় সহজেই রূপান্তরিত হতে পারে - কেবল আইএসও 8601 রূপান্তরকারী সন্ধান করুন।
ম্যাট কোসকেলা

4
পাইথনের জন্য, সময়কালকে রূপান্তর করার জন্য একটি দুর্দান্ত পাঠাগারটি aniso8601 । এটি একটি ফেরত দেয় datetime.timedelta, যা মূলত যেকোন কিছুতে ফর্ম্যাট করা যায়।
arnaudoff

4
কি ভিডিওগুলি ইউটিউবে সপ্তাহে দীর্ঘ হয়?!?
ম্যাট কোসকেলা

14

আমি বুঝতে পেরেছি!

$dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$vId&key=dldfsd981asGhkxHxFf6JqyNrTqIeJ9sjMKFcX4");

$duration = json_decode($dur, true);
foreach ($duration['items'] as $vidTime) {
    $vTime= $vidTime['contentDetails']['duration'];
}

সেখানে এটি ইউটিউব এপিআই সংস্করণ 3 এর সময় দেয় (কীটি উপায় দ্বারা তৈরি করা হয়)। আমি ব্যবহার করেছি $vIdযে আমি যে চ্যানেল থেকে ভিডিওগুলি প্রদর্শিত হচ্ছে তার ভিডিওগুলির ফিরে আসা তালিকাটি সরিয়ে ফেলেছি ...

এটা কাজ করে। গুগলের সত্যই সময়কালকে স্নিপেটে অন্তর্ভুক্ত করা দরকার যাতে আপনি এটি দুটিয়ের পরিবর্তে একটি কল দিয়ে সমস্তটি পেতে পারেন ... এটি তাদের 'ওন্টফিক্স' তালিকায় রয়েছে।


হ্যাঁ, এবং মানব পঠনযোগ্য ফর্ম্যাটগুলিতে সেকেন্ডের মতো সময়কাল অন্তর্ভুক্ত করুন।
andreszs

4
তুমি কি প্রত্যাশা কর? এটি গুগল, তারা সঠিক উপায়ে কিছুই করে না।
সিনিটেক 30'15

আপনি কি সেকেন্ডের মধ্যে সময়কাল পেতে একটি উপায় খুঁজে পেয়েছেন, এটি পিটি **** ফর্ম্যাট থেকে সেকেন্ডে রূপান্তরিত করার মতো মনে হয় rd
লেনিক্স

আপনি কি একটি ক্লোজিং মিস করছেন না }?
পিটার মর্টেনসেন

6

ইউটিউব এপিআই ভি 3 ব্যবহার করে ইউটিউব ভিডিও সময়কাল পেতে আমি নিম্নলিখিত ক্লাসটি লিখেছিলাম (এটি থাম্বনেইসগুলিও ফিরে আসে):

class Youtube
{
    static $api_key = '<API_KEY>';
    static $api_base = 'https://www.googleapis.com/youtube/v3/videos';
    static $thumbnail_base = 'https://i.ytimg.com/vi/';

    // $vid - video id in youtube
    // returns - video info
    public static function getVideoInfo($vid)
    {
        $params = array(
            'part' => 'contentDetails',
            'id' => $vid,
            'key' => self::$api_key,
        );

        $api_url = Youtube::$api_base . '?' . http_build_query($params);
        $result = json_decode(@file_get_contents($api_url), true);

        if(empty($result['items'][0]['contentDetails']))
            return null;
        $vinfo = $result['items'][0]['contentDetails'];

        $interval = new DateInterval($vinfo['duration']);
        $vinfo['duration_sec'] = $interval->h * 3600 + $interval->i * 60 + $interval->s;

        $vinfo['thumbnail']['default']       = self::$thumbnail_base . $vid . '/default.jpg';
        $vinfo['thumbnail']['mqDefault']     = self::$thumbnail_base . $vid . '/mqdefault.jpg';
        $vinfo['thumbnail']['hqDefault']     = self::$thumbnail_base . $vid . '/hqdefault.jpg';
        $vinfo['thumbnail']['sdDefault']     = self::$thumbnail_base . $vid . '/sddefault.jpg';
        $vinfo['thumbnail']['maxresDefault'] = self::$thumbnail_base . $vid . '/maxresdefault.jpg';

        return $vinfo;
    }
}

দয়া করে মনে রাখবেন যে ইউটিউব এপিআই ব্যবহার করতে আপনার API_KEY দরকার:

  1. এখানে একটি নতুন প্রকল্প তৈরি করুন: https://console.developers.google.com /
  2. "APIs & auth" -> APIs এর অধীনে "YouTube ডেটা API" সক্ষম করুন
  3. "APIs & auth" -> শংসাপত্রগুলির অধীনে একটি নতুন সার্ভার কী তৈরি করুন

2

এই কোডটি ভিডিও আইডি পাস করে ইউটিউব এপিআই v3 ব্যবহার করে YouTube ভিডিও সময়কাল বের করে। এটা আমার জন্য কাজ করেছে।

<?php
    function getDuration($videoID){
       $apikey = "YOUR-Youtube-API-KEY"; // Like this AIcvSyBsLA8znZn-i-aPLWFrsPOlWMkEyVaXAcv
       $dur = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=contentDetails&id=$videoID&key=$apikey");
       $VidDuration =json_decode($dur, true);
       foreach ($VidDuration['items'] as $vidTime)
       {
           $VidDuration= $vidTime['contentDetails']['duration'];
       }
       preg_match_all('/(\d+)/',$VidDuration,$parts);
       return $parts[0][0] . ":" .
              $parts[0][1] . ":".
              $parts[0][2]; // Return 1:11:46 (i.e.) HH:MM:SS
    }

    echo getDuration("zyeubYQxHyY"); // Video ID
?>

আপনি https://console.developers.google.com এ আপনার ডোমেনের নিজস্ব YouTube API কী পেতে এবং আপনার নিজের প্রয়োজনের জন্য শংসাপত্র তৈরি করতে পারেন।



1

পাইথন ২.7 এবং ইউটিউব এপিআই v3 ব্যবহার করে সেকেন্ডে সময়কাল:

    try:        
        dur = entry['contentDetails']['duration']
        try:
            minutes = int(dur[2:4]) * 60
        except:
            minutes = 0
        try:
            hours = int(dur[:2]) * 60 * 60
        except:
            hours = 0

        secs = int(dur[5:7])
        print hours, minutes, secs
        video.duration = hours + minutes + secs
        print video.duration
    except Exception as e:
        print "Couldnt extract time: %s" % e
        pass

-1

ইউটিউব ডেটা 3 এপিআই, সময়কাল স্ট্রিং থেকে সেকেন্ড রূপান্তর পাইথনে

উদাহরণ:

রূপান্তর_উইউটিউব_গ্রহন_ত_ সেকেন্ডস ('P2DT1S')
172801

রূপান্তর_উইউটিউব_গ্র্যাশন_ টো সেকেন্ডস ('PT2H12M51S')
7971

def convert_YouTube_duration_to_seconds(duration):
   day_time = duration.split('T')
   day_duration = day_time[0].replace('P', '')
   day_list = day_duration.split('D')
   if len(day_list) == 2:
      day = int(day_list[0]) * 60 * 60 * 24
      day_list = day_list[1]
   else:
      day = 0
      day_list = day_list[0]
   hour_list = day_time[1].split('H')
   if len(hour_list) == 2:
      hour = int(hour_list[0]) * 60 * 60
      hour_list = hour_list[1]
   else:
      hour = 0
      hour_list = hour_list[0]
   minute_list = hour_list.split('M')
   if len(minute_list) == 2:
      minute = int(minute_list[0]) * 60
      minute_list = minute_list[1]
   else:
      minute = 0
      minute_list = minute_list[0]
   second_list = minute_list.split('S')
   if len(second_list) == 2:
      second = int(second_list[0])
   else:
      second = 0
   return day + hour + minute + second
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.