J2897 icon

[YouTube API] Average Views (synchronous)

J2897 | PRO | 02/18/22 05:04:32 AM UTC | 0 ⭐ | 1744 👁️ | Never ⏰ | []
Python |

1.62 KB

|

None

|

0 👍

/

0 👎

import requests
import time
from config import api_key, channel_id, base_url
 
start_time = time.time()
 
# Get the ID from the Uploads Playlist.
url = f'{base_url}/channels?id={channel_id}&key={api_key}&part=contentDetails'
r = requests.get(url)
results = r.json()['items']
playlist_id = results[0]['contentDetails']['relatedPlaylists']['uploads']
 
# Get all of the video IDs.
video_ids = []
url = f'{base_url}/playlistItems?playlistId={playlist_id}&key={api_key}&part=contentDetails'
while True:
    r = requests.get(url)
    results = r.json()
    if 'nextPageToken' in results:
        nextPageToken = results['nextPageToken']
    else:
        nextPageToken = None
 
    if 'items' in results:
        for item in results['items']:
            if 'contentDetails' in item:
                if 'videoId' in item['contentDetails']:
                    videoId = item['contentDetails']['videoId']
                    video_ids.append(videoId)
 
    if nextPageToken:
        url = f'{base_url}/playlistItems?playlistId={playlist_id}&key={api_key}&part=contentDetails&pageToken={nextPageToken}'
    else:
        break
 
# Get all of the videos' view counts.
view_counts = []
for video_id in video_ids:
    url = f'{base_url}/videos?id={video_id}&key={api_key}&part=statistics'
    r = requests.get(url)
    results = r.json()['items']
    viewCount = results[0]['statistics']['viewCount']
    view_counts.append(int(viewCount))
 
print('Number of videos:', 2*'\t', len(view_counts))
print('Average number of views:', '\t', sum(view_counts) / len(view_counts))
print("--- %s seconds ---" % (time.time() - start_time))
 

Comments

  •  icon
    01/01/70 12:00:00 AM UTC
    Plain Text |

    0 B

    |

    👍

    /

    👎