File tree Expand file tree Collapse file tree 1 file changed +55
-0
lines changed
Python/YouTube-API/03-Most-Popular-Video-Playlist Expand file tree Collapse file tree 1 file changed +55
-0
lines changed Original file line number Diff line number Diff line change 1+ import os
2+ from googleapiclient .discovery import build
3+
4+ api_key = os .environ .get ('YT_API_KEY' )
5+
6+ youtube = build ('youtube' , 'v3' , developerKey = api_key )
7+
8+ playlist_id = 'PL8uoeex94UhHFRew8gzfFJHIpRFWyY4YW'
9+
10+ videos = []
11+
12+ nextPageToken = None
13+ while True :
14+ pl_request = youtube .playlistItems ().list (
15+ part = 'contentDetails' ,
16+ playlistId = playlist_id ,
17+ maxResults = 50 ,
18+ pageToken = nextPageToken
19+ )
20+
21+ pl_response = pl_request .execute ()
22+
23+ vid_ids = []
24+ for item in pl_response ['items' ]:
25+ vid_ids .append (item ['contentDetails' ]['videoId' ])
26+
27+ vid_request = youtube .videos ().list (
28+ part = "statistics" ,
29+ id = ',' .join (vid_ids )
30+ )
31+
32+ vid_response = vid_request .execute ()
33+
34+ for item in vid_response ['items' ]:
35+ vid_views = item ['statistics' ]['viewCount' ]
36+
37+ vid_id = item ['id' ]
38+ yt_link = f'https://youtu.be/{ vid_id } '
39+
40+ videos .append (
41+ {
42+ 'views' : int (vid_views ),
43+ 'url' : yt_link
44+ }
45+ )
46+
47+ nextPageToken = pl_response .get ('nextPageToken' )
48+
49+ if not nextPageToken :
50+ break
51+
52+ videos .sort (key = lambda vid : vid ['views' ], reverse = True )
53+
54+ for video in videos [:10 ]:
55+ print (video ['url' ], video ['views' ])
You can’t perform that action at this time.
0 commit comments