Support premiere videos on channel

This commit is contained in:
Cadence Ember 2021-07-01 23:42:53 +12:00
parent 7d3b79b1cd
commit 1ea86101fd
No known key found for this signature in database
GPG Key ID: BC1C2C61CF521B17
2 changed files with 26 additions and 6 deletions

View File

@ -74,20 +74,29 @@ def extract_channel(ucid):
v["gridVideoRenderer"] for v in tab_parts["gridRenderer"]["items"] if "gridVideoRenderer" in v v["gridVideoRenderer"] for v in tab_parts["gridRenderer"]["items"] if "gridVideoRenderer" in v
) )
for v in videos: for v in videos:
live = True live = False
length_text = "LIVE" is_upcoming = False
length_text = "UNKNOWN"
length_seconds = -1 length_seconds = -1
for o in v["thumbnailOverlays"]: for o in v["thumbnailOverlays"]:
if "thumbnailOverlayTimeStatusRenderer" in o: if "thumbnailOverlayTimeStatusRenderer" in o:
length_text = combine_runs(o["thumbnailOverlayTimeStatusRenderer"]["text"]) length_text = combine_runs(o["thumbnailOverlayTimeStatusRenderer"]["text"])
if o["thumbnailOverlayTimeStatusRenderer"]["style"] != "LIVE": length_text_style = o["thumbnailOverlayTimeStatusRenderer"]["style"]
if length_text_style == "DEFAULT":
length_seconds = length_text_to_seconds(length_text) length_seconds = length_text_to_seconds(length_text)
live = False elif length_text_style == "LIVE":
live = True
elif length_text_style == "UPCOMING":
is_upcoming = True
published = 0 published = 0
published_text = "Live now" published_text = "Live now"
premiere_timestamp = None
if "publishedTimeText" in v: if "publishedTimeText" in v:
published_text = v["publishedTimeText"]["simpleText"] published_text = v["publishedTimeText"]["simpleText"]
published = past_text_to_time(published_text) published = past_text_to_time(published_text)
if "upcomingEventData" in v:
premiere_timestamp = v["upcomingEventData"]["startTime"]
published_text = time_to_past_text(int(premiere_timestamp))
view_count_text = combine_runs(v["viewCountText"]) if "viewCountText" in v else None view_count_text = combine_runs(v["viewCountText"]) if "viewCountText" in v else None
view_count_text_short = combine_runs(v["shortViewCountText"]) if "shortViewCountText" in v else None view_count_text_short = combine_runs(v["shortViewCountText"]) if "shortViewCountText" in v else None
@ -112,7 +121,8 @@ def extract_channel(ucid):
"liveNow": live, "liveNow": live,
"paid": None, "paid": None,
"premium": None, "premium": None,
"isUpcoming": None "isUpcoming": is_upcoming,
"premiereTimestamp": premiere_timestamp
}) })
channel = { channel = {

View File

@ -191,6 +191,13 @@ def past_text_to_time(text):
def time_to_past_text(timestamp): def time_to_past_text(timestamp):
now = int(time.time()) now = int(time.time())
diff = now - timestamp diff = now - timestamp
# also allow for times in the future by using the same algorithm, then altering the output at the end
time_is_in_past = True
if diff < 0:
diff = -diff
time_is_in_past = False
units = [ units = [
["year", 365 * 24 * 60 * 60], ["year", 365 * 24 * 60 * 60],
["month", 30 * 24 * 60 * 60], ["month", 30 * 24 * 60 * 60],
@ -205,7 +212,10 @@ def time_to_past_text(timestamp):
if diff > unit_value or index + 1 >= len(units): if diff > unit_value or index + 1 >= len(units):
number = diff // unit_value number = diff // unit_value
plural_unit = unit_name if number == 1 else unit_name + "s" plural_unit = unit_name if number == 1 else unit_name + "s"
return "{} {} ago".format(number, plural_unit) if time_is_in_past:
return "{} {} ago".format(number, plural_unit)
else:
return "in {} {}".format(number, plural_unit)
def get_language_label_from_url(url_string): def get_language_label_from_url(url_string):
url = urlparse(url_string) url = urlparse(url_string)