চ্যানেলের সমস্ত ভিডিও আনতে ইউটিউব এপিআই


197

আমাদের ইউটিউবের চ্যানেল নাম অনুসারে একটি ভিডিও তালিকা প্রয়োজন (এপিআই ব্যবহার করে)।

আমরা নীচের এপিআই ব্যবহার করে একটি চ্যানেল তালিকা (কেবলমাত্র চ্যানেলের নাম) পেতে পারি:

https://gdata.youtube.com/feeds/api/channels?v=2&q=tendulkar

নীচে চ্যানেলের সরাসরি লিঙ্ক দেওয়া হল

https://www.youtube.com/channel/UCqAEtEr0A0Eo2IVcuWBfB9g

অথবা

WWW.YouTube.com/channel/HC-8jgBP-4rlI

এখন, আমাদের চ্যানেল >> UCqAEtEr0A0Eo2IVcuWBfB9g বা HC-8jgBP-4rlI এর ভিডিওগুলি দরকার।

আমরা চেষ্টা করেছি

https://gdata.youtube.com/feeds/api/videos?v=2&uploader=partner&User=UC7Xayrf2k0NZiz3S04WuDNQ https://gdata.youtube.com/feeds/api/videos?v=2&uploader=p2N03NC7NC7NC7NC7N2

কিন্তু, এটি কোনও উপকারে আসে না।

আমাদের চ্যানেলটিতে পোস্ট করা সমস্ত ভিডিও দরকার। চ্যানেলে আপলোড করা ভিডিওগুলি একাধিক ব্যবহারকারীর হতে পারে তাই আমি মনে করি না যে কোনও ব্যবহারকারী পরামিতি সরবরাহ করা সহায়তা করবে ...


আমি কি নিজের ভিডিও ফাইলগুলিতে অ্যাক্সেস পেতে পারি? এপিআই এর মাধ্যমে লগ ইন করার সময় মূলত আমার নিজের সামগ্রীটি ডাউনলোড করতে !!!
ফিলিটি_উইজার্ড

উত্তর:


216

আপনাকে ইউটিউব ডেটা এপিআই দেখতে হবে । আপনি কীভাবে এপিআই অ্যাক্সেস করতে পারবেন সে সম্পর্কে ডকুমেন্টেশন পাবেন। আপনি ক্লায়েন্ট লাইব্রেরি খুঁজে পেতে পারেন ।

আপনি নিজেও অনুরোধগুলি করতে পারেন। এখানে একটি উদাহরণ ইউআরএল যা কোনও চ্যানেলের সর্বশেষ ভিডিওগুলি পুনরুদ্ধার করে:

https://www.googleapis.com/youtube/v3/search?key={your_key_here}&channelId={channel_id_here}&part=snippet,id&order=date&maxResults=20

এর পরে আপনি JSONভিডিও আইডিস এবং বিশদ সহ একটি পাবেন এবং আপনি আপনার ভিডিও ইউআরএলটি এইভাবে তৈরি করতে পারেন:

http://www.youtube.com/watch?v={video_id_here}

29
এটি কেবল প্রথম maxResults=20(50 টি পর্যন্ত) ভিডিওগুলি ফিরিয়ে দেবে , তবে পুরো চ্যানেল ক্যাটালগটি নয়। আপনি যদি আরও ফলাফল চান তবে এখানে বর্ণিত পৃষ্ঠা টোকেনটি ব্যবহার করুন
ফেবিও পেরেজ

2
রোমুলাস উড়াকগি সি'সাই: আপনি চ্যানেলআইডি দিচ্ছেন এমন ভিডিওগুলির অনুরোধ করার সময়, এটি চ্যানেলের ফিল্টার।
অক্ষয়

11
লক্ষণীয় যে আপনি পরবর্তী পৃষ্ঠার টোকেনগুলি ব্যবহার করে কেবল একটি চ্যানেল থেকে 500 টি পর্যন্ত ভিডিও পেতে পারেন।
টনি পটার্নাইট

3
@ টনিপ্যাটারনেট কীভাবে আমি 500 টিরও বেশি ভিডিও পেতে পারি। আমি বর্তমানে এই সমস্যাটির মুখোমুখি হয়েছি।
রাজা

3
বিষয়টি এখানে ভালভাবে ব্যাখ্যা করা হয়েছে। কোড.google.com/p/gdata-issues/issues/detail?id=4282 বিভিন্ন তারিখের সাথে চেষ্টা করা আরও ভিডিও পাওয়ার এটির একটি উপায়।
রাজা

117

প্রথমত, আপনার প্লেলিস্টের আইডিটি পাওয়া দরকার যা ব্যবহারকারী / চ্যানেল থেকে আপলোডগুলি উপস্থাপন করে:

https://developers.google.com/youtube/v3/docs/channels/list#try-it

আপনি forUsername={username}প্যারামের সাথে ব্যবহারকারীর নামটি নির্দিষ্ট mine=trueকরতে পারেন , বা নিজের পাওয়ার জন্য নির্দিষ্ট করতে পারেন (আপনাকে প্রথমে প্রমাণীকরণ করতে হবে)। part=contentDetailsপ্লেলিস্টগুলি দেখার জন্য অন্তর্ভুক্ত করুন।

GET https://www.googleapis.com/youtube/v3/channels?part=contentDetails&forUsername=jambrose42&key={YOUR_API_KEY}

ফলাফল "relatedPlaylists"অন্তর্ভুক্ত "likes"এবং "uploads"প্লেলিস্ট অন্তর্ভুক্ত করা হবে । "upload"প্লেলিস্ট আইডি ধরুন । "id"ভবিষ্যতের রেফারেন্সের জন্য এটি আপনার চ্যানেলআইডিও নোট করুন ।

এরপরে, সেই প্লেলিস্টে ভিডিওগুলির একটি তালিকা পান:

https://developers.google.com/youtube/v3/docs/playlistItems/list#try-it

কেবল প্লেলিস্টে বাদ দিন!

GET https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=50&playlistId=UUpRmvjdu3ixew5ahydZ67uA&key={YOUR_API_KEY}


1
এই ব্র্যান্ড নতুন বিশ্বে প্রত্যেকেরই ইউটিউব ব্যবহারকারীর নাম নেই। তাদের মধ্যে কেবলমাত্র একটি গুগল + ব্যবহারকারীর আইডি নম্বর রয়েছে যা কোনও ইউটিউব ব্যবহারকারীর জায়গায় কাজ করে না
ক্রিস্টোপলাস

1
@ ক্রিস্টোপলাস প্রতিটি ইউটিউব চ্যানেলে একটি চ্যানেল আইডি থাকে। আপনি যদি গুগল প্লাসের মাধ্যমে কোনও ইউটিউব পৃষ্ঠায় যান তবে এটি চ্যানেলের লিঙ্ক হিসাবে গুগল প্লাস ব্যবহারকারী আইডি ব্যবহার করে। আপনি যদি কোনও ইউটিউব ভিডিও থেকে চ্যানেলে যান তবে এটি YouTube এর চ্যানেল আইডি সম্পত্তি ব্যবহার করে uses
Ignat

19
এটি নিখুঁত। বিশেষত কারণ এটি 100 এর পরিবর্তে কেবলমাত্র 2 কোটা পয়েন্ট ব্যয় করে (যে অনুসন্ধান কলটি ব্যয় করবে)।
জেপি ডি লা টোর

1
এটি somteimes ( developers.google.com/youtube/v3/docs/playlistItems/list#try-it ) কাজ করে, কখনও কখনও এটি একই আপলোডআইডির জন্য 404 নিক্ষেপ করে, কী হচ্ছে তা জানেন না।
ishandutt2007

1
প্লেলিস্টে জাম্ব্রোস আইটেমস শেষের বিন্দুতে কীভাবে কিছু ডেট রেঞ্জের প্যারামিটার যেমন পাবলিশএফটার / প্রকাশিত পূর্বে ব্যবহার করতে হয়। আমি চেষ্টা করেছি, কাজ করছি না তাই আমি কীভাবে কোনও চ্যানেলের সমস্ত ভিডিও আনতে পারি।
হর্ষ সাতদেব

79

গুগল বিকাশকারীদের এমন একটি ভিডিও v3যা ইউটিউব এপিআই-এর একটি চ্যানেলে সমস্ত ভিডিও তালিকাভুক্ত করতে দেখায় ।

দুটি পদক্ষেপ রয়েছে:

  1. "আপলোডগুলি" আইডি পেতে চ্যানেলগুলি অনুসন্ধান করুন। যেমনhttps://www.googleapis.com/youtube/v3/channels?id={channel Id}&key={API key}&part=contentDetails

  2. ভিডিওর তালিকা পেতে প্লেলিস্ট আইটেমগুলি জিজ্ঞাসা করতে এই "আপলোডগুলি" আইডি ব্যবহার করুন। যেমনhttps://www.googleapis.com/youtube/v3/playlistItems?playlistId={"uploads" Id}&key={API key}&part=snippet&maxResults=50


1
প্রদত্ত চ্যানেলের আইডি পরিবর্তন "আপলোড" করতে পারবেন?
ishandutt2007

মনে হয় আপলোড channelId হিসাবে একই, কিন্তু ভয়ঙ্কর অসঙ্গত API গুলি, কিছু উত্তর দিতে পারেন এই stackoverflow.com/questions/43568521/...
ishandutta2007

1
@ ishandutt2007 কোনও আপলোড আইডি চ্যানেল আইডি থেকে আলাদা নয়।
vicke4

@ ভার্চুয়ালমিক @ পিটার পারফেক্ট সলিউশন
গাইজ

এটা ঠিক কাজ করছে। তবে আমার একাধিক চ্যানেল আইডি রয়েছে, সুতরাং আমি কীভাবে এগুলি এপিআইতে পাঠাতে পারি, আমি কমা বিচ্ছিন্ন চ্যানেল আইডিগুলি ব্যবহার করতে পারি
ওঙ্কর মুসালে

31

চ্যানেলগুলির তালিকা পেতে:

দিয়ে চ্যানেলগুলি তালিকা পাওয়া forUserName :

https://www.googleapis.com/youtube/v3/channels?part=snippet,contentDetails,statistics&forUsername=Apple&key=

চ্যানেল আইডি দ্বারা চ্যানেলগুলির তালিকা পান :

https://www.googleapis.com/youtube/v3/channels/?part=snippet,contentDetails,statistics&id=UCE_M8A5yxnLfW0KghEeajjw&key=

চ্যানেল বিভাগগুলি পান:

https://www.googleapis.com/youtube/v3/channelSections?part=snippet,contentDetails&channelId=UCE_M8A5yxnLfW0KghEeajjw&key=

প্লেলিস্টগুলি পেতে:

চ্যানেল আইডি দ্বারা প্লেলিস্টগুলি পান :

https://www.googleapis.com/youtube/v3/playlists?part=snippet,contentDetails&channelId=UCq-Fj5jknLsUf-MWSy4_brA&maxResults=50&key=

পেজ টোকেন সহ চ্যানেল আইডি দ্বারা প্লেলিস্টগুলি পান :

https://www.googleapis.com/youtube/v3/playlists?part=snippet,contentDetails&channelId=UCq-Fj5jknLsUf-MWSy4_brA&maxResults=50&key= & পৃষ্ঠাটোকেন = CDIQAA

প্লেলিস্ট আইটেমগুলি পেতে:

প্লেলিস্টআইডি দ্বারা প্লেলিস্ট আইটেমের তালিকা পান :

https://www.googleapis.com/youtube/v3/playlistItems?part=snippet,contentDetails&maxResults=25&playlistId=PLHFlHpPjgk70Yv3kxQvkDEO5n5tMQia5I&key=

ভিডিও পেতে:

ভিডিও আইডি দ্বারা ভিডিও তালিকা পান :

https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=YxLCwfA1cLw&key=

একাধিক ভিডিও আইডি দ্বারা ভিডিও তালিকা পান :

https://www.googleapis.com/youtube/v3/videos?part=snippet,contentDetails,statistics&id=YxLCwfA1cLw,Qgy6LaO3SB0,7yPJXGO2Dcw&key=

মন্তব্য তালিকা পান

ভিডিও আইডি দ্বারা মন্তব্য তালিকা পান :

https://www.googleapis.com/youtube/v3/commentThreads?part=snippet,replies&videoId=el **** kQak & কী = এ ********** কে

চ্যানেল আইডি দ্বারা মন্তব্য তালিকা পান :

https://www.googleapis.com/youtube/v3/commentThreads?part=snippet,replies&channelId=U ***** প্রশ্নোত্তর & কী = এআই ******** কে

AllTreadsRarelatedToChannelId দ্বারা মন্তব্য তালিকা পান :

https://www.googleapis.com/youtube/v3/commentThreads?part=snippet,replies&allThreadsRelatedToChannelId=UC ***** ntcQ & key = এআই ***** কে

এখানে সমস্ত এপিআই এর গেট অ্যাপ্রোচ।

চ্যানেল আইডির ভিত্তিতে আমরা সরাসরি সমস্ত ভিডিও পাই না, এটি এখানে গুরুত্বপূর্ণ বিষয়।

সংহতকরণের জন্য https://developers.google.com/youtube/v3/quickstart/ios?ver=swift


আমি এপিআইতে কীভাবে একাধিক চ্যানেল আইডি প্রেরণ করতে পারি, আমি কমা বিচ্ছিন্ন চ্যানেল আইডিগুলি ব্যবহার করতে পারি
ওঙ্কার মুসালে

এপিআই ব্যবহার করে আমি কীভাবে শীর্ষ 10/50/100 ইউটিউব চ্যানেল পেতে পারি?
রাজেশ্বর

10

নীচে একটি পাইথন বিকল্প রয়েছে যার জন্য কোনও বিশেষ প্যাকেজ দরকার নেই। চ্যানেল আইডি সরবরাহ করে এটি সেই চ্যানেলের ভিডিও লিঙ্কগুলির একটি তালিকা ফেরত দেয়। দয়া করে মনে রাখবেন এটির কাজ করার জন্য আপনার একটি এপিআই কী প্রয়োজন ।

import urllib
import json

def get_all_video_in_channel(channel_id):
    api_key = YOUR API KEY

    base_video_url = 'https://www.youtube.com/watch?v='
    base_search_url = 'https://www.googleapis.com/youtube/v3/search?'

    first_url = base_search_url+'key={}&channelId={}&part=snippet,id&order=date&maxResults=25'.format(api_key, channel_id)

    video_links = []
    url = first_url
    while True:
        inp = urllib.urlopen(url)
        resp = json.load(inp)

        for i in resp['items']:
            if i['id']['kind'] == "youtube#video":
                video_links.append(base_video_url + i['id']['videoId'])

        try:
            next_page_token = resp['nextPageToken']
            url = first_url + '&pageToken={}'.format(next_page_token)
        except:
            break
    return video_links

কিভাবে কাজ করে? আমি api_key ভেরিয়েবলে একক উদ্ধৃতি '' ব্যবহার করে API KEY পেস্ট করেছি, তারপরে আমি চ্যানেল আইডিতে ফাংশনটি পাস করার পরে কল করেছিলাম, তারপরে অজগর প্রোগ্রামটি চালিয়েছি, কিন্তু কিছুই ঘটে না।
জোফ্রে বড়াথিয়ন

@ জোফ্রে বারাথিয়ন ফাংশনটি একটি অ্যারে ফিরিয়ে দেয়, আপনার এটি একটি ভেরিয়েবলের মধ্যে থাকা দরকার। উদাহরণস্বরূপ: video_list = get_all_video_in_channel("ABC123EFG456")তারপরে আপনি এটিকে ব্যবহার করে এটি মুদ্রণ করতে পারবেনprint(video_list)
ফাফা ফা

7

এখানে এমন কোড যা আপনার চ্যানেলের অধীনে সমস্ত ভিডিও আইডিকে ফিরিয়ে দেবে

<?php 
    $baseUrl = 'https://www.googleapis.com/youtube/v3/';
    // https://developers.google.com/youtube/v3/getting-started
    $apiKey = 'API_KEY';
    // If you don't know the channel ID see below
    $channelId = 'CHANNEL_ID';

    $params = [
        'id'=> $channelId,
        'part'=> 'contentDetails',
        'key'=> $apiKey
    ];
    $url = $baseUrl . 'channels?' . http_build_query($params);
    $json = json_decode(file_get_contents($url), true);

    $playlist = $json['items'][0]['contentDetails']['relatedPlaylists']['uploads'];

    $params = [
        'part'=> 'snippet',
        'playlistId' => $playlist,
        'maxResults'=> '50',
        'key'=> $apiKey
    ];
    $url = $baseUrl . 'playlistItems?' . http_build_query($params);
    $json = json_decode(file_get_contents($url), true);

    $videos = [];
    foreach($json['items'] as $video)
        $videos[] = $video['snippet']['resourceId']['videoId'];

    while(isset($json['nextPageToken'])){
        $nextUrl = $url . '&pageToken=' . $json['nextPageToken'];
        $json = json_decode(file_get_contents($nextUrl), true);
        foreach($json['items'] as $video)
            $videos[] = $video['snippet']['resourceId']['videoId'];
    }
    print_r($videos);

দ্রষ্টব্য : আপনি লগ ইন করার পরে https://www.youtube.com/account_advanced এ চ্যানেল আইডি পেতে পারেন ।


1
এটি অবশ্যই একটি পরিষ্কার সমাধান যা কাজ করে। বর্তমানে উত্পাদন ব্যবহার।
কোডেক্স 73

7

নিম্নলিখিত মত চেষ্টা করুন। এটি আপনাকে সাহায্য করতে পারে।

https://gdata.youtube.com/feeds/api/videos?author=cnn&v=2&orderby=updated&alt=jsonc&q=news

এখানে আপনার চ্যানেলটির নাম এবং "কিউ" হিসাবে আপনি নিজের অনুসন্ধান কী শব্দটি দিতে পারেন এমন লেখক এখানে।


সেই এপিআই-এর ডকুমেন্টেশন কোথায়?
ম্যাকাবিয়াস

1
এই এপিআইটি আর উপলভ্য নয়: "ইউটিউব ডেটা এপিআই (v2) 4 ই মার্চ, 2014 পর্যন্ত অফিসিয়ালি
অবচয় করা হয়েছে

7

মাত্র তিনটি ধাপে:

  1. সাবস্ক্রিপশন: তালিকা -> https://www.googleapis.com/youtube/v3/subsifications?part=snippet&maxResults=50&mine=true&access_token= {oauth_token}

  2. চ্যানেলগুলি: তালিকা -> https://www.googleapis.com/youtube/v3/channels?part=contentDetails&id= {চ্যানেল_আইডি} & কী = {আপনার_অ্যাপি_কি Y

  3. প্লেলিস্ট আইটেম : তালিকা -> https://www.googleapis.com/youtube/v3/playlistItems?part=snippet&playlistId= {প্লেলিস্ট_আইডি} & কী = OUR আপনার_এপিআই_কে}


6

এখানে এবং অন্য কোথাও ভাগ করা রেফারেন্সগুলির জন্য ধন্যবাদ, আমি একটি অনলাইন স্ক্রিপ্ট / সরঞ্জাম তৈরি করেছি যা চ্যানেলের সমস্ত ভিডিও পাওয়ার জন্য কেউ ব্যবহার করতে পারে।

এটি বর্তমানে এমন API কল সম্মিলন youtube.channels.list, playlistItems, videos। বৈধ প্রতিক্রিয়া পাওয়ার পরে অ্যাসিনক্রোনাস কলব্যাকগুলি পরবর্তী পুনরাবৃত্তিটি চালানোর জন্য এটি পুনরাবৃত্ত ফাংশন ব্যবহার করে।

এটি একবারে করা অনুরোধের আসল সংখ্যাকে সীমাবদ্ধ করতেও পরিবেশন করে, অতএব আপনাকে YouTube এর API বিধি লঙ্ঘন থেকে সুরক্ষিত করে। সংক্ষিপ্ত স্নিপেটগুলি ভাগ করে নেওয়া এবং তারপরে সম্পূর্ণ কোডের একটি লিঙ্ক। পরবর্তী 50 ফলাফলগুলি আনার প্রতিক্রিয়াতে আগত পেজ টোকেন মানটি ব্যবহার করে আমি কল সীমাবদ্ধতার জন্য প্রায় 50 সর্বাধিক ফলাফল পেয়েছি।

function getVideos(nextPageToken, vidsDone, params) {
    $.getJSON("https://www.googleapis.com/youtube/v3/playlistItems", {
        key: params.accessKey,
        part: "snippet",
        maxResults: 50,
        playlistId: params.playlistId,
        fields: "items(snippet(publishedAt, resourceId/videoId, title)), nextPageToken",
        pageToken: ( nextPageToken || '')
        },
        function(data) {
            // commands to process JSON variable, extract the 50 videos info

            if ( vidsDone < params.vidslimit) {

                // Recursive: the function is calling itself if
                // all videos haven't been loaded yet
                getVideos( data.nextPageToken, vidsDone, params);

            }
             else {
                 // Closing actions to do once we have listed the videos needed.
             }
    });
}

এটি আইডি, শিরোনাম, প্রকাশের তারিখ এবং অনুরূপ সহ ভিডিওগুলির একটি প্রাথমিক তালিকা পেয়েছে। তবে প্রতিটি ভিডিওর মতো ভিউ গণনা এবং পছন্দগুলি সম্পর্কে আরও বিশদ পেতে, আপনাকে এপিআই কল করতে হবে videos

// Looping through an array of video id's
function fetchViddetails(i) {
    $.getJSON("https://www.googleapis.com/youtube/v3/videos", {
        key: document.getElementById("accesskey").value,
        part: "snippet,statistics",
        id: vidsList[i]
        }, function(data) {

            // Commands to process JSON variable, extract the video
            // information and push it to a global array
            if (i < vidsList.length - 1) {
                fetchViddetails(i+1) // Recursive: calls itself if the
                                     //            list isn't over.
            }
});

দেখুন পূর্ণ কোড এখানে , এবং এখানে লাইভ সংস্করণের । (সম্পাদনা: স্থির গিথুব লিঙ্ক)
সম্পাদনা: নির্ভরতা: জ্যাকুয়ারি, পাপা.পার্স e


1
আপনি কি নিশ্চিত যে এটি কাজ করে? গিটহাব পৃষ্ঠাটি চলে গেছে এবং তারপরে যখন আমি ক্ষেত্রগুলিতে API কী এবং চ্যানেল আইডি ইনপুট করি তখন আমার ত্রুটি হয়।
জোফ্রে বড়াথিয়ন

@ জোফ্রে বারাথিয়ন ভাঙা গিথুব লিঙ্কটি নির্দেশ করার জন্য ধন্যবাদ thanks আমি শুধু এটি চালানো .. এটি কাজ করে। : যে প্লেলিস্ট আইডি চতুর করা হয় .., অনুগ্রহ এই দেখতে github.com/answerquest/answerquest.github.io/issues/2
নিখিল ভিজে

চমৎকার কাজ. আপডেট হওয়া গিথুব লিঙ্কটি দিয়ে খুব ভাল কাজ করে। আপনার প্রয়োজন হবে jquery এবং papaparse.min.js
মিডিয়া

এটি আনার জন্য @thE_iNviNciblE ধন্যবাদ এটি একটি উল্লেখ করা।
নিখিল ভিজে

@ নিখিল-ভিজে এটি বাস্তব জগতের জেনেরিওর জন্য ব্যবহারযোগ্য নয়, আপনার ক্লায়েন্ট ব্রাউজারটি ইউটিউব এপিআই-টোকেন দেওয়া উচিত নয়। তবে প্রোগ্রামিং শিক্ষার জন্য বেশ সুন্দর কাজ :-)
বুলদাউ মিডিয়া

4

যেহেতু 500 টি ভিডিও সীমাবদ্ধতার কারণে এই প্রশ্নের উত্তর দেওয়ার প্রত্যেকটির সমস্যা রয়েছে তাই পাইথন 3-এ youtube_dl ব্যবহার করে এখানে বিকল্প সমাধান রয়েছে । এছাড়াও, কোনও এপিআই কী প্রয়োজন হয় না

  1. ইউটিউব_ডিএল ইনস্টল করুন: sudo pip3 install youtube-dl
  2. আপনার টার্গেট চ্যানেলের চ্যানেল আইডিটি সন্ধান করুন । ইউসি দিয়ে আইডি শুরু হতে চলেছে। সি এর জন্য চ্যানেলটি ইউ এর জন্য আপলোডের (অর্থাৎ ইউইউ ...) প্রতিস্থাপন করুন, এটি আপলোড প্লেলিস্ট
  3. ইউটিউব-ডিএল থেকে প্লেলিস্ট ডাউনলোডার বৈশিষ্ট্যটি ব্যবহার করুন । আদর্শভাবে আপনি প্লেলিস্টে প্রতিটি ভিডিও ডাউনলোড করতে চান না যা ডিফল্ট, তবে কেবল মেটাডেটা।

উদাহরণ (সতর্কতা - কয়েক মিনিট সময় নেয়):

import youtube_dl, pickle

             # UCVTyTA7-g9nopHeHbeuvpRA is the channel id (1517+ videos)
PLAYLIST_ID = 'UUVTyTA7-g9nopHeHbeuvpRA'  # Late Night with Seth Meyers

with youtube_dl.YoutubeDL({'ignoreerrors': True}) as ydl:

    playd = ydl.extract_info(PLAYLIST_ID, download=False)

    with open('playlist.pickle', 'wb') as f:
        pickle.dump(playd, f, pickle.HIGHEST_PROTOCOL)

    vids = [vid for vid in playd['entries'] if 'A Closer Look' in vid['title']]
    print(sum('Trump' in vid['title'] for vid in vids), '/', len(vids))

1
আমি মনে করি এটি সেরা উত্তর কারণ এটিতে এপি কী প্রয়োজন হয় না। এটিকে আরও বেশি স্বয়ংক্রিয় করতে আপনি ব্যবহার করতে পারেন @for /f "usebackq tokens=2 delims=: " %a in (`dl-list.py^|findstr information`) do @echo https://www.youtube.com/watch?v=%a। এটি ভিডিওগুলির সমস্ত URL মুদ্রণ করবে print PLAYLIST_IDপ্লেলিস্ট বা চ্যানেল আইডি হতে পারে।
cdlvcdlv 26'18

আপনি এটি অনুমান করতে পারেন তবে আমি কোডটি সে হিসাবে সংরক্ষণ করেছি তা বলতে ভুলে গিয়েছি dl-list.py
cdlvcdlv 26'18

2

এপিআই সংস্করণ 2 ব্যবহার করা হয়েছে যা অবহিত করা হয়েছে, আপলোডগুলির জন্য ইউআরএল (চ্যানেল ইউসিকিএইটিআর0এ0ইও 2 আইভিসিইউউবিফবি 9 জি এর):

https://gdata.youtube.com/feeds/users/UCqAEtEr0A0Eo2IVcuWBfB9g/uploads

একটি এপিআই সংস্করণ 3 রয়েছে।


UCqAEtEr0A0Eo2IVcuWBfB9g এর জন্য এটি কাজ করে, আমি মনে করি এটি কারণ এটি কোনও একক ব্যবহারকারী দ্বারা আপলোড করা হয়েছে। HC-8jgBP-4rlI সম্পর্কে কীভাবে
রাজেন্দ্র দেওয়ানি

আজ অবধি আমার বার্তা পরীক্ষা করে দেখেনি। তুমি ঠিক বলছো. শুধুমাত্র একটি ব্যবহারকারী চ্যানেলের জন্য।
আলস

9
লিঙ্কটি মারা গেছে।
ব্যবহারকারীর 3078414

2

সম্প্রতি আমাকে একটি চ্যানেল থেকে সমস্ত ভিডিও পুনরুদ্ধার করতে হয়েছে, এবং ইউটিউব বিকাশকারী ডকুমেন্টেশন অনুসারে: https://developers.google.com/youtube/v3/docs/playlistItems/list

function playlistItemsListByPlaylistId($service, $part, $params) {
    $params = array_filter($params);
    $response = $service->playlistItems->listPlaylistItems(
        $part,
        $params
    );

    print_r($response);
}

playlistItemsListByPlaylistId($service,
    'snippet,contentDetails',
    array('maxResults' => 25, 'playlistId' => 'id of "uploads" playlist'));

$serviceআপনার Google_Service_YouTubeউদ্দেশ্য কোথায় ?

সুতরাং চ্যানেল দ্বারা আপলোড করা সমস্ত ভিডিও আসলে "আপলোডগুলি" প্লেলিস্ট পুনরুদ্ধার করতে আপনাকে চ্যানেল থেকে তথ্য আনতে হবে: https://developers.google.com/youtube/v3/docs/channels/list

যদি এই এপিআই দিয়ে নতুন হয়, আমি কোড স্যাম্পলটি ডিফল্ট স্নিপেট থেকে পুরো নমুনায় পরিণত করার জন্য সুপারিশ করি।

সুতরাং কোনও চ্যানেল থেকে সমস্ত ভিডিও পুনরুদ্ধার করার জন্য বেসিক কোডটি হ'ল:

class YouTube
{
    const       DEV_KEY = 'YOUR_DEVELOPPER_KEY';
    private     $client;
    private     $youtube;
    private     $lastChannel;

    public function __construct()
    {
        $this->client = new Google_Client();
        $this->client->setDeveloperKey(self::DEV_KEY);
        $this->youtube = new Google_Service_YouTube($this->client);
        $this->lastChannel = false;
    }

    public function getChannelInfoFromName($channel_name)
    {
        if ($this->lastChannel && $this->lastChannel['modelData']['items'][0]['snippet']['title'] == $channel_name)
        {
            return $this->lastChannel;
        }
        $this->lastChannel = $this->youtube->channels->listChannels('snippet, contentDetails, statistics', array(
            'forUsername' => $channel_name,
        ));
        return ($this->lastChannel);
    }

    public function getVideosFromChannelName($channel_name, $max_result = 5)
    {
        $this->getChannelInfoFromName($channel_name);
        $params = [
            'playlistId' => $this->lastChannel['modelData']['items'][0]['contentDetails']['relatedPlaylists']['uploads'],
            'maxResults'=> $max_result,
        ];
        return ($this->youtube->playlistItems->listPlaylistItems('snippet,contentDetails', $params));
    }
}

$yt = new YouTube();
echo '<pre>' . print_r($yt->getVideosFromChannelName('CHANNEL_NAME'), true) . '</pre>';

এটি কি শিরোনাম, ভিডিওর ইউআরএল, ভিডিও চিহ্নিতকারী একটি চিত্র, পছন্দ / মন্তব্য সংখ্যা সহ সমস্ত ভিডিও পাবে? এই প্রকাশনাগুলি কীভাবে সহায়ক হবে সে সম্পর্কে কিছু তথ্য। ধন্যবাদ।
খোম নাজিদ

1

পাইথনে নমুনা সমাধান । এই ভিডিও থেকে নেওয়া সহায়তা: ভিডিও অন্যান্য অনেক উত্তরের মতো, আপলোড আইডি প্রথমে চ্যানেল আইডি থেকে পুনরুদ্ধার করা উচিত।

urllib.request আমদানি করুন
আমদানি জেসন

কী = "YOUR_YOUTUBE_API_v3_BROWSER_KEY"

# চ্যানেলের তালিকা: আপনি চ্যানেল আইডি বা ব্যবহারকারীর নাম - "আইডি" বা "ব্যবহারকারীর নাম" পেস্ট করছেন কিনা তা উল্লেখ করুন
ytids = [["বিবিসিনিউজ", "ব্যবহারকারীর নাম"], ["ইউসিজেকি 4 পিজে কেজে 9 এক্স 4 ডাব্লু 9 আই 7 ইউএনইএসপিপিজি", "আইডি"]]

নতুন স্টাইলস = []
ইটিডের জন্য, ইটিডসে ইটপারাম:
    urld = "https://www.googleapis.com/youtube/v3/channels?part=contentDetails&"+ytparam+"="+ytid+ "&key="+key
    urlib.request.urlopen (urld) এর সাথে url হিসাবে:
        ডেটাড = জসন.লোডস (url.read ())
    আপলোডডেট = ডেটাড ['আইটেম']
    চ্যানেল আইডি থেকে #get আপলোড আইডি
    আপলোডড = আপলোডসেট [0] ['বিষয়বস্তু বিবরণ'] ['সম্পর্কিতপ্লেলিস্ট'] ['আপলোড']

    # পুনরুদ্ধার তালিকা
    urld = "https://www.googleapis.com/youtube/v3/playlistItems?part=snippet%2CcontentDetails&maxResults=50&playlistId="+uploadid+ "&key="+key
    urlib.request.urlopen (urld) এর সাথে url হিসাবে:
        ডেটাড = জসন.লোডস (url.read ())

    ডেটাড ['আইটেম'] তে ডেটার জন্য:
        ntitle = ডেটা ['স্নিপেট'] ['শিরোনাম']
        nlink = ডেটা ['বিষয়বস্তু বিবরণ'] ['ভিডিওআইডি']
        newstitles.append ([nlink, ntitle])

লিঙ্কের জন্য, নতুন শিরোনামে শিরোনাম:
    মুদ্রণ (লিঙ্ক, শিরোনাম)

-2

ইউটিউব চ্যানেল থেকে ডাউনলোড করা লিঙ্কগুলি, ডিরেক্টরি কাঠামো সংরক্ষণ করে না। সুতরাং, আমি এটি একটি কোড লিখেছি। উপরের স্বীকৃত উপায়ে ভিডিওগুলি ডাউনলোড করার পরে এটি ব্যবহার করুন। `

def play_vid(channel):
    yset = dict()
    temp = []
    link = channel + '/playlists'
    first = urlopen(link)
    bs = BeautifulSoup(first.read(), 'html.parser')
    for i in bs.find_all('a', {'class':'yt-uix-sessionlink yt-uix-tile-link spf-link yt-ui-ellipsis yt-ui-ellipsis-2'}):
        print('Creating list for the playlist: ', i.get_text())
        link = 'https://www.youtube.com'+i.get('href')
#         print(link)
        first = urlopen(link)
        bsp = BeautifulSoup(first.read(), 'html.parser')
        res=bsp.find_all('a',{'class':'pl-video-title-link'})
        for l in res:
            temp.append(l.get_text().replace(" ", "").strip())
        yset[i.get_text()]=temp
        temp=[]
    print("Done!!")
    return yset



checking = play_vid('https://www.youtube.com/user/NinjaTraderLLC')


'''for me /media/shivam/BIG/ninja is the folder where i've previously downloaded all the videos from channel'''    
downloaded = [file for file in os.listdir('/media/shivam/BIG/ninja/') if os.path.isfile('/media/shivam/BIG/ninja/'+file)]

hash_table = dict()
for i in downloaded:
    hash_table[i.replace(" ", "")] = i

for i in scraped.keys():

    if os.path.isdir('/media/shivam/BIG/ninja/'+ i):
        pass
    else:
        os.mkdir('/media/shivam/BIG/ninja/'+ i)
    minn = 1000
    mov = ""

    for j in scraped[i]:
        for k in hash_table.keys():
            if nltk.edit_distance(j, k) < minn:
                minn = nltk.edit_distance(j, k)
                mov = k
        minn = 1000
        print("Moving ",mov, "for  channel: ",j)
        shutil.copy('/media/shivam/BIG/ninja/'+ hash_table[mov], '/media/shivam/BIG/ninja/'+ i +'/'+hash_table[mov])

`


-6

ডকুমেন্টেশন অনুযায়ী ( লিঙ্ক ), আপনি একটি চ্যানেলে সমস্ত ভিডিও পেতে চ্যানেল সংস্থান টাইপ এবং ক্রিয়াকলাপ তালিকা ব্যবহার করতে পারেন। এই অপারেশনটি অবশ্যই 'চ্যানেল আইডি' যুক্তি দিয়ে সম্পাদন করা উচিত।


22
এটি বলা সহজ, তবে কেন আপনি নিজের উত্তরটি একটি ভাল এবং কার্যকরী উদাহরণ দিয়ে রাখেন না ???
অক্ষয়
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.