php - यूट्यूब एपीआई v3, वीडियो अवधि कैसे प्राप्त करें?




objective-c rest (4)

खोज कॉल करने के बाद आपको यूट्यूब डेटा एपीआई के वीडियो संसाधन पर कॉल करना होगा। आप खोज में 50 वीडियो आईडी डाल सकते हैं, इसलिए आपको इसे प्रत्येक तत्व के लिए कॉल नहीं करना होगा।

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

आप भाग = सामग्री विवरण सेट करना चाहते हैं, क्योंकि अवधि वहां है।

उदाहरण के लिए निम्नलिखित कॉल:

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 सेकंड है।

मैं यूट्यूब खोजने के लिए यूट्यूब एपीआई v3 का उपयोग कर रहा हूँ।

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

जैसा कि आप प्रतिक्रिया देख सकते हैं JSON में वीडियो अवधि शामिल नहीं है। क्या वीडियो अवधि पाने का कोई तरीका है? परिणामस्वरूप प्रत्येक तत्व के लिए एक एपीआई को फिर से कॉल नहीं करना (जब तक कि यह अवधि प्राप्त करने का एकमात्र तरीका न हो)।


पायथन 2.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

यह कोड यूट्यूब वीडियो अवधि को यूट्यूब एपीआई v3 का उपयोग करके वीडियो आईडी पास करके निकालता है, यह मेरे लिए काम करता है।

<?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 में अपने डोमेन की यूट्यूब एपीआई कुंजी प्राप्त कर सकते हैं और अपनी आवश्यकता के लिए प्रमाण-पत्र उत्पन्न कर सकते हैं।


रेगेक्स का उपयोग कर घंटों, मिनटों और सेकंड में अवधि प्राप्त करना (पायथन 3 में परीक्षण)

import re
def parse_ISO8601(dur):
    test1 = rex("PT(.+?)H", dur)
    if test1:
        return int(test1.group(1))*3600
    test2 = rex("PT(.+?)H(.+?)M",dur)
    if test2:
        h,m = [int(x) for x in test2.groups()]
        return 3600*h+60*m
    test3 = rex("PT(.+?)H(.+?)S",dur)
    if test3:
        h,s = [int(x) for x in test3.groups()]
        return 3600*h+s
    test4 = rex("PT(.+?)H(.+?)M(.+?)S",dur)
    if test4:
        h,m,s = [int(x) for x in test4.groups()]
        return 3600*h+60*h+s
    test5 = rex("PT(.+?)M", dur)
    if test5:
        return int(test5.group(1))*60
    test6 = rex("PT(.+?)M(.+?)S",dur)
    if test6:
        m,s = [int(x) for x in test6.groups()]
        return 60*m+s
    test7 = rex("PT(.+?)S",dur)
    if test7:
        return int(test7.group(1))
    print("CAN'T PARSE FUCKING GOOGLE FORMATTING:",dur)
    return False #I'm out ...






youtube-api-v3