diff --git a/youtube_data/channels.py b/youtube_data/channels.py
new file mode 100644
index 0000000..e69de29
diff --git a/youtube_data/utils.py b/youtube_data/utils.py
deleted file mode 100644
index 4812f3b..0000000
--- a/youtube_data/utils.py
+++ /dev/null
@@ -1,59 +0,0 @@
-import requests
-import urllib.parse
-import json
-from bs4 import BeautifulSoup as bs
-
-nested_renderer_dispatch = {
- 'singleColumnBrowseResultsRenderer',
- 'twoColumnBrowseResultsRenderer', # Channel renderer
- 'twoColumnSearchResultsRenderer',
-}
-
-# these renderers contain a list of renderers inside them
-nested_renderer_list_dispatch = {
- 'sectionListRenderer',
- 'itemSectionRenderer',
- 'gridRenderer',
- 'playlistVideoListRenderer',
- 'singleColumnWatchNextResults',
-}
-
-_item_types = {
- 'movieRenderer',
- 'didYouMeanRenderer',
- 'showingResultsForRenderer',
-
- 'videoRenderer',
- 'compactVideoRenderer',
- 'compactAutoplayRenderer',
- 'videoWithContextRenderer',
- 'gridVideoRenderer',
- 'playlistVideoRenderer',
-
- 'playlistRenderer',
- 'compactPlaylistRenderer',
- 'gridPlaylistRenderer',
-
- 'radioRenderer',
- 'compactRadioRenderer',
- 'gridRadioRenderer',
-
- 'showRenderer',
- 'compactShowRenderer',
- 'gridShowRenderer',
-
-
- 'channelRenderer',
- 'compactChannelRenderer',
- 'gridChannelRenderer',
-}
-
-
-def getRenderers(data):
- renderers = []
- for renderer in nested_renderer_dispatch:
- renderers.append(data['contents'][renderer])
- return renderers
-
-def getRenderedItems(renderer):
- '''Given a renderer, return its items'''
diff --git a/youtube_data/videos.py b/youtube_data/videos.py
index fb93d51..5592486 100644
--- a/youtube_data/videos.py
+++ b/youtube_data/videos.py
@@ -17,19 +17,28 @@ def get_video_primary_info(datad, datai):
details = datad['videoDetails']
try:
isUpcoming = details['isUpcoming']
+ views = "Scheduled video"
except:
isUpcoming = False
+ if not isUpcoming:
+ views = details['viewCount']
+
ydl = YoutubeDL()
- data = ydl.extract_info(details['videoId'], False)
- if not details['isLiveContent']:
- url = data['formats'][-1]['url']
+ try:
+ data = ydl.extract_info(details['videoId'], False)
+ if not details['isLiveContent']:
+ url = data['formats'][-1]['url']
+ else:
+ url = data['formats'][-1]['url']
+ except:
+ url = "#"
try:
primaryInfo = {
"id": details['videoId'],
"title": details['title'],
"description": details['shortDescription'],
- "views": details['viewCount'],
+ "views": views,
"duration": details['lengthSeconds'],
"date": item['dateText']['simpleText'],
"rating": details['averageRating'],
@@ -53,9 +62,10 @@ def get_video_primary_info(datad, datai):
"rating": details['averageRating'],
"author": details['author'],
"isPrivate":False,
- "isLive":False,
- "isUpcoming":False,
+ "isLive":details['isLiveContent'],
+ "isUpcoming":isUpcoming,
"allowRatings":True,
+ "url":url,
"thumbnail": details['thumbnail']['thumbnails'][0]['url']
}
return primaryInfo