วิธีรับจำนวนการดูวิดีโอด้วย YouTube API


84

คำถามง่ายมาก วิธีรับจำนวนการดูวิดีโอด้วย YouTube API

ใส่คำอธิบายภาพที่นี่

งานนี้เรียบง่าย แต่ฉันต้องการใช้คำค้นหานั้นกับวิดีโอจำนวนมากบ่อยๆ มีวิธีใดในการเรียกใช้ Youtube API และรับได้หรือไม่ (บางอย่างเช่น facebook http://api.facebook.com/restserver.php?method=links.getStats&urls=developers.facebook.com )


คุณต้องการใช้เฉพาะ JavaScript เพื่อทำสิ่งนี้หรือไม่?
วิกเตอร์

อะไรก็ได้ที่ได้ผลดี อย่างที่บอกไปว่าฉันต้องค้นหาวิดีโอจำนวนมากบ่อยมาก
Ante

ไม่เกี่ยว: LOL @ facebook. หากคุณมีrestserver.phpคุณกำลังพลาดประเด็นนี้อย่างชัดเจน
Rudie

ตรวจสอบ YouTube Data API v3 ตัวอย่าง URL API freakyjolly.com/youtube-data-v3-api-sample-api-get-url
Code Spy

คำตอบ:


76

ฉันคิดว่าวิธีที่ง่ายที่สุดคือการรับข้อมูลวิดีโอในรูปแบบ JSON หากคุณต้องการใช้ JavaScript ลองใช้ jQuery.getJSON () ... แต่ฉันชอบ PHP:

<?php
$video_ID = 'your-video-ID';
$JSON = file_get_contents("https://gdata.youtube.com/feeds/api/videos/{$video_ID}?v=2&alt=json");
$JSON_Data = json_decode($JSON);
$views = $JSON_Data->{'entry'}->{'yt$statistics'}->{'viewCount'};
echo $views;
?>

Ref: Youtube API - กำลังดึงข้อมูลเกี่ยวกับวิดีโอเดียว


5
ขอบคุณคุณช่วยฉัน 30 นาทีในการขุดรอบ :)
Martin

ลิงนี้จะล้าสมัยไปแล้ว ?? จำนวนการดูวิดีโอทั้งหมดของฉันด้วยวิธีนี้เป็น 100 หรือมากกว่านั้นเบื้องหลังสิ่งที่แสดงในหน้าสำหรับดูวิดีโอ
mdskinner

Youtube ชะลอการดูวิดีโอยอดนิยมคุณไม่สามารถทำอะไรได้มากนัก
Dylan Cross

3
FYI นี้ยากจนรอบ 20 เมษายน 2015 และผลตอบแทนเท่านั้นดูข้อมูลyoutube.com/watch?v=UKY3scPIMd8ซึ่งชี้ไปที่youtube.com/devicesupport โดยทั่วไปใช้ v3 API
Ryan DuVal

1
ERR_INVALID_RESPONSE
Alexey Sh.

66

คุณสามารถใช้ YouTube Data API v3 ใหม่ได้

หากคุณเรียกดูวิดีโอส่วนสถิติจะมีviewCount :

จากเอกสาร:

https://developers.google.com/youtube/v3/docs/videos#resource

Statistics.viewCount / จำนวนครั้งที่มีการดูวิดีโอ

คุณสามารถดึงข้อมูลนี้ในฝั่งไคลเอ็นต์หรือในฝั่งเซิร์ฟเวอร์โดยใช้ไลบรารีไคลเอ็นต์บางส่วน:

https://developers.google.com/youtube/v3/libraries

และคุณสามารถทดสอบการเรียก API จากเอกสาร:

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

ตัวอย่าง:

คำขอ:

GET https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Q5mHPo2yDG8&key={YOUR_API_KEY}

Authorization:  Bearer ya29.AHES6ZSCT9BmIXJmjHlRlKMmVCU22UQzBPRuxzD7Zg_09hsG
X-JavaScript-User-Agent:  Google APIs Explorer

การตอบสนอง:

200 OK

- Show headers -

{
 "kind": "youtube#videoListResponse",
 "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/dZ8K81pnD1mOCFyHQkjZNynHpYo\"",
 "pageInfo": {
  "totalResults": 1,
  "resultsPerPage": 1
 },
 "items": [
  {

   "id": "Q5mHPo2yDG8",
   "kind": "youtube#video",
   "etag": "\"g-RLCMLrfPIk8n3AxYYPPliWWoo/4NA7C24hM5mprqQ3sBwI5Lo9vZE\"",
   "statistics": {
    "viewCount": "36575966",
    "likeCount": "127569",
    "dislikeCount": "5715",
    "favoriteCount": "0",
    "commentCount": "20317"
   }
  }
 ]
}

2
นี่คือวิธีที่จะไปตอนนี้ V2 Google API จะเลิกตั้งแต่เดือนมีนาคม 2014 เคล็ดลับเพิ่มเติม: หนึ่งสามารถดึงหลายส่วนของ API part=statistics,contentDetailsเช่นนี้: ยิ่งไปกว่านั้นแม้ V2 API ดูเหมือนจะใช้งานได้ในกรณีส่วนใหญ่ แต่ก็ไม่ได้ใช้กับวิดีโอบางรายการ
COil

11

API เวอร์ชัน 2 ได้เลิกใช้งานตั้งแต่เดือนมีนาคม 2014 ซึ่งคำตอบอื่น ๆ เหล่านี้ใช้

นี่คือข้อมูลโค้ดที่ง่ายมากในการรับจำนวนการดูจากวิดีโอโดยใช้ JQuery ใน YouTube API v3

คุณจะต้องสร้างคีย์ API ผ่านGoogle Developer Consoleก่อน

<script>
  $.getJSON('https://www.googleapis.com/youtube/v3/videos?part=statistics&id=Qq7mpb-hCBY&key={{YOUR-KEY}}', function(data) {
    alert("viewCount: " + data.items[0].statistics.viewCount);
  });
</script>

8

นี่คือข้อมูลโค้ดขนาดเล็กเพื่อรับการดูวิดีโอ Youtube จาก URL โดยใช้ Javascript

การสาธิตโค้ดด้านล่าง

    function videoViews() {
var rex = /[a-zA-Z0-9\-\_]{11}/,
    videoUrl = $('input').val() === '' ? alert('Enter a valid Url'):$('input').val(),
    videoId = videoUrl.match(rex),
    jsonUrl = 'http://gdata.youtube.com/feeds/api/videos/' + videoId + '?v=2&alt=json',
   embedUrl = '//www.youtube.com/embed/' + videoId,
   embedCode = '<iframe width="350" height="197" src="' + embedUrl + '" frameborder="0" allowfullscreen></iframe>'


//Get Views from JSON
$.getJSON(jsonUrl, function (videoData) {
    var videoJson = JSON.stringify(videoData),
        vidJson = JSON.parse(videoJson),
        views = vidJson.entry.yt$statistics.viewCount;
    $('.views').text(views);
});

//Embed Video
$('.videoembed').html(embedCode);}

ขอบคุณสำหรับการสาธิตที่ยอดเยี่ยม!
Gareth

6

เหตุใดจึงต้องใช้คีย์ APIเพื่อดึงส่วนของ html สาธารณะ!

ที่ง่ายยูนิกซ์บรรทัดคำสั่งตัวอย่างเช่นการสาธิตการใช้ขด , grep และตัด

curl https://www.youtube.com/watch?v=r-y7jzGxKNo | grep watch7-views-info | cut -d">" -f8 | cut -d"<" -f1

ใช่มันได้รับหน้า html แบบเต็มการสูญเสียนี้ไม่มีความหมายต่อข้อดีมากมาย


4

คุณสามารถใช้สิ่งนี้ได้เช่นกัน:

<?php
    $youtube_view_count = json_decode(file_get_contents('http://gdata.youtube.com/feeds/api/videos/wGG543FeHOE?v=2&alt=json'))->entry->{'yt$statistics'}->viewCount;
    echo $youtube_view_count;
    ?>

คุณสามารถอธิบายเพิ่มเติมและภาษาที่คุณใช้
Rahil Wazir

ดูเหมือนว่าจะใช้ v2 เก่าของ API ซึ่งตอนนี้เลิกใช้แล้ว
Simon East


2

ใช้ไคลเอนต์ Google PHP API: https://github.com/google/google-api-php-client

นี่เป็นคลาสเล็ก ๆ เพียงเพื่อรับสถิติ YouTube สำหรับรหัสวิดีโอเดียว เห็นได้ชัดว่าสามารถขยายได้เป็นตันโดยใช้ส่วนที่เหลือของ api: https://api.kdyby.org/class-Google_Service_YouTube_Video.html

class YouTubeVideo
{
    // video id
    public $id;

    // generate at https://console.developers.google.com/apis
    private $apiKey = 'REPLACE_ME';

    // google youtube service
    private $youtube;

    public function __construct($id)
    {
        $client = new Google_Client();
        $client->setDeveloperKey($this->apiKey);

        $this->youtube = new Google_Service_YouTube($client);

        $this->id = $id;
    }

    /*
     * @return Google_Service_YouTube_VideoStatistics
     * Google_Service_YouTube_VideoStatistics Object ( [commentCount] => 0 [dislikeCount] => 0 [favoriteCount] => 0 [likeCount] => 0 [viewCount] => 5 )  
     */
    public function getStatistics()
    {
        try{
            // Call the API's videos.list method to retrieve the video resource.
            $response = $this->youtube->videos->listVideos("statistics",
                array('id' => $this->id));

            $googleService = current($response->items);
            if($googleService instanceof Google_Service_YouTube_Video) {
                return $googleService->getStatistics();
            }
        } catch (Google_Service_Exception $e) {
            return sprintf('<p>A service error occurred: <code>%s</code></p>',
                htmlspecialchars($e->getMessage()));
        } catch (Google_Exception $e) {
            return sprintf('<p>An client error occurred: <code>%s</code></p>',
                htmlspecialchars($e->getMessage()));
        }
    }
}


1

นี่เป็นตัวอย่างที่ผมใช้ในของฉันแอป TubeCount

ฉันยังใช้พารามิเตอร์ fields เพื่อกรองผลลัพธ์ JSON ด้วยดังนั้นจึงส่งคืนเฉพาะฟิลด์ที่ฉันต้องการเท่านั้น

var fields = "fields=openSearch:totalResults,entry(title,media:group(yt:videoid),media:group(yt:duration),media:group(media:description),media:group(media:thumbnail[@yt:name='default'](@url)),yt:statistics,yt:rating,published,gd:comments(gd:feedLink(@countHint)))";

var channel = "wiibart";

$.ajax({
    url: "http://gdata.youtube.com/feeds/api/users/"+channel+"/uploads?"+fields+"&v=2&alt=json",
    success: function(data){

        var len = data.feed.entry.length;

        for(var k =0; k<len; k++){
            var yt = data.feed.entry[k];
            v.count = Number(yt.yt$statistics != undefined && yt.yt$statistics.viewCount != undefined ? yt.yt$statistics.viewCount : 0);
        }
    }
});

ขอขอบคุณที่เพิ่มพารามิเตอร์แบบสอบถาม alt = json การตอบสนองเริ่มต้นคืออะตอม
Jonathan Morales Vélez

1

นี่คือฟังก์ชันง่ายๆในPHPที่ส่งคืนจำนวนการดูวิดีโอ YouTube คุณจะต้องมีคีย์ข้อมูล API ของ YouTube (v3) เพื่อให้ใช้งานได้ หากคุณไม่มีรหัสรับคีย์ได้ฟรีที่: YouTube Data API

//Define a constant so that the API KEY can be used globally across the application    
define("YOUTUBE_DATA_API_KEY", 'YOUR_YOUTUBE_DATA_API_KEY');

function youtube_video_statistics($video_id) {
    $json = file_get_contents("https://www.googleapis.com/youtube/v3/videos?part=statistics&id=" . $video_id . "&key=". YOUTUBE_DATA_API_KEY );
    $jsonData = json_decode($json);
    $views = $jsonData->items[0]->statistics->viewCount;
    return $views;
}

//Replace YOUTUBE_VIDEO_ID with your actual YouTube video Id
echo youtube_video_statistics('YOUTUBE_VIDEO_ID');

ฉันใช้โซลูชันนี้ในแอปพลิเคชันของฉันและใช้งานได้ ณ วันนี้ ดังนั้นรับคีย์ API และรหัสวิดีโอ YouTube และแทนที่ด้วยรหัสด้านบน (บรรทัดที่สองและบรรทัดสุดท้าย) และคุณควรจะไป


1

PHP JSON

$jsonURL = file_get_contents("https://www.googleapis.com/youtube/v3/videos?id=$Videoid&key={YOUR-API-KEY}&part=statistics");
$json = json_decode($jsonURL);

ขั้นแรกให้ทำตามขั้นตอนนี้โดยไม่ใส่ข้อคิดเห็น

//var_dump(json);

และรับการดูนับเป็น:

$vcounts = $json->{'items'}[0]->{'statistics'}->{'viewCount'};


1

คุณสามารถใช้ JQuery ได้อย่าลืมแทนที่Your-Api-Keyสตริงจากโค้ดด้านล่างตามลิงค์เพื่อค้นหาคีย์ API ของGoogle Developer Console

<script>
    $.getJSON('https://www.googleapis.com/youtube/v3/videospart=statistics&id=Qq7mpb-hCBY&key=Your-Api-Key', function(data) {
        console.log("viewCount: ", data.items[ 0 ].statistics.viewCount);
    });
</script>

-7

นี่อาจไม่ใช่สิ่งที่คุณต้องการ แต่คุณสามารถคัดลอกหน้าเพื่อดูข้อมูลโดยใช้สิ่งต่อไปนี้:

document.getElementsByClassName('watch-view-count')[0].innerHTML

1
Youtube เตือนเมื่อ API กำลังจะเปลี่ยนแปลง แต่ไม่มีสัญญาใด ๆ กับนักพัฒนาบนเว็บไซต์ ดังนั้นนี่จึงไม่ใช่ความคิดที่ดี
FRAGA
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.