mirror of
				https://git.sr.ht/~cadence/NewLeaf
				synced 2025-11-04 06:07:26 +00:00 
			
		
		
		
	Support premiere videos on channel
This commit is contained in:
		
							parent
							
								
									7d3b79b1cd
								
							
						
					
					
						commit
						1ea86101fd
					
				@ -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 = {
 | 
				
			||||||
 | 
				
			|||||||
@ -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)
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user