Skip to content

Commit b5e3c76

Browse files
authored
Merge pull request #211 from deldesir/deldesir-patch-4
Adjust message for formerly "live" videos
2 parents 4257c30 + d56f65b commit b5e3c76

2 files changed

Lines changed: 20 additions & 9 deletions

File tree

cps/tasks/download.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,16 @@
1515
log = logger.create()
1616

1717
class TaskDownload(CalibreTask):
18-
def __init__(self, task_message, media_url, original_url, current_user_name, shelf_id):
18+
def __init__(self, task_message, media_url, original_url, current_user_name, shelf_id, duration, live_status):
1919
super(TaskDownload, self).__init__(task_message)
2020
self.message = task_message
2121
self.media_url = media_url
2222
self.media_url_link = f'<a href="{media_url}" target="_blank">{media_url}</a>'
2323
self.original_url = original_url
2424
self.current_user_name = current_user_name
2525
self.shelf_id = shelf_id
26+
self.duration = datetime.utcfromtimestamp(int(duration)).strftime("%H:%M:%S") if duration else "unknown"
27+
self.live_status = live_status
2628
self.start_time = self.end_time = datetime.now()
2729
self.stat = STAT_WAITING
2830
self.progress = 0
@@ -54,6 +56,9 @@ def run(self, worker_thread):
5456
last_progress_time = datetime.now()
5557
fragment_stuck_timeout = 30 # seconds
5658

59+
self.message = f"Downloading {self.media_url_link}..."
60+
if self.live_status == "was_live":
61+
self.message += f" (formerly live video, length/duration is {self.duration} seconds)"
5762
while p.poll() is None:
5863
self.end_time = datetime.now()
5964
# Check if there's data available to read
@@ -69,15 +74,14 @@ def run(self, worker_thread):
6974
elif re.search(pattern_progress, line):
7075
percentage = int(re.search(r'\d+', line).group())
7176
if percentage < 100:
72-
self.message = f"Downloading {self.media_url_link}..."
7377
self.progress = min(0.99, (complete_progress_cycle + (percentage / 100)) / 4)
7478
if percentage == 100:
7579
complete_progress_cycle += 1
7680
last_progress_time = datetime.now()
7781
else:
7882
elapsed_time = (datetime.now() - last_progress_time).total_seconds()
7983
if elapsed_time >= fragment_stuck_timeout:
80-
self.message = f"Downloading {self.media_url_link}... (This is taking longer than expected)"
84+
self.message += f"<br>Some fragments are taking longer than expected to download. Please wait..."
8185

8286
sleep(0.1)
8387

cps/tasks/metadata_extract.py

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,14 +63,14 @@ def _fetch_requested_urls(self, conn):
6363
try:
6464
cursor = conn.execute("PRAGMA table_info(media)")
6565
self.columns = [column[1] for column in cursor.fetchall()]
66-
query = ("SELECT path, duration FROM media WHERE error IS NULL AND path LIKE 'http%'"
66+
query = ("SELECT path, duration, live_status FROM media WHERE error IS NULL AND path LIKE 'http%'"
6767
if "error" in self.columns
68-
else "SELECT path, duration FROM media WHERE path LIKE 'http%'")
68+
else "SELECT path, duration, live_status FROM media WHERE path LIKE 'http%'")
6969
rows = conn.execute(query).fetchall()
7070
requested_urls = {}
71-
for path, duration in rows:
71+
for path, duration, live_status in rows:
7272
if duration is not None and duration > 0:
73-
requested_urls[path] = {"duration": duration}
73+
requested_urls[path] = {"duration": duration, "live_status": live_status}
7474
else:
7575
self.unavailable.append(path)
7676
return requested_urls
@@ -125,10 +125,10 @@ def _sort_and_limit_requested_urls(self, requested_urls):
125125
return dict(sorted(requested_urls.items(), key=lambda item: item[1]["views_per_day"], reverse=True)[:min(MAX_VIDEOS_PER_DOWNLOAD, len(requested_urls))])
126126

127127
def _add_download_tasks_to_worker(self, requested_urls):
128-
for index, requested_url in enumerate(requested_urls.keys()):
128+
for index, (requested_url, url_data) in enumerate(requested_urls.items()):
129129
task_download = TaskDownload(_("Downloading %(url)s...", url=requested_url),
130130
requested_url, self.original_url,
131-
self.current_user_name, self.shelf_id)
131+
self.current_user_name, self.shelf_id, duration=str(url_data["duration"]), live_status=url_data["live_status"])
132132
WorkerThread.add(self.current_user_name, task_download)
133133
num_requested_urls = len(requested_urls)
134134
total_duration = sum(url_data["duration"] for url_data in requested_urls.values())
@@ -140,6 +140,13 @@ def _add_download_tasks_to_worker(self, requested_urls):
140140
self.message += f"<br><br>Shelf Title: <a href='{shelf_url}' target='_blank'>{self.shelf_title}</a>"
141141
if self.unavailable:
142142
self.message += "<br><br>Unavailable Video(s):<br>" + "<br>".join(f'<a href="{url}" target="_blank">{url}</a>' for url in self.unavailable)
143+
upcoming_live_urls = [url for url, url_data in requested_urls.items() if url_data["live_status"] == "is_upcoming"]
144+
live_urls = [url for url, url_data in requested_urls.items() if url_data["live_status"] == "is_live"]
145+
if upcoming_live_urls:
146+
self.message += "<br><br>Upcoming Live Video(s):<br>" + "<br>".join(f'<a href="{url}" target="_blank">{url}</a>' for url in upcoming_live_urls)
147+
if live_urls:
148+
self.message += "<br><br>Live Video(s):<br>" + "<br>".join(f'<a href="{url}" target="_blank">{url}</a>' for url in live_urls)
149+
143150

144151
def run(self, worker_thread):
145152
self.worker_thread = worker_thread

0 commit comments

Comments
 (0)