def test_date_from_str(self): self.assertEqual(date_from_str('yesterday'), date_from_str('now-1day')) self.assertEqual(date_from_str('now+7day'), date_from_str('now+1week')) self.assertEqual(date_from_str('now+14day'), date_from_str('now+2week')) self.assertEqual(date_from_str('now+365day'), date_from_str('now+1year')) self.assertEqual(date_from_str('now+30day'), date_from_str('now+1month'))
def get_info(info): url, video_id = info extracted = 1 for code in BYPASS_CODES: opts = {"quiet": True, "geo_bypass": True, "geo_bypass_country": code} try: with youtube_dl.YoutubeDL(opts) as ytd: extracted = ytd.extract_info(channels[url]["videos"][video_id]["url"], download=False) break except youtube_dl.DownloadError: logging.warning("\"{}\" from \"{}\" is blocked in {}".format(video_id, channels[url]["title"], code)) continue if extracted == 1: logging.warning("\"{}\" from \"{}\" is blocked in all countries on the list".format(video_id, channels[url]["title"])) return lock.acquire() if video_id in dv[url]["videos"].keys(): dv[url]["videos"][video_id]["title"] = extracted["title"] dv[url]["videos"][video_id]["date"] = extracted["upload_date"] dv[url]["videos"][video_id]["url"] = extracted["webpage_url"] else: dv[url]["videos"].update({video_id: { "title": extracted["title"], "date": extracted["upload_date"], "url": extracted["webpage_url"], "status": "checked" } }) with open(DOWNLOADED_VIDEOS, "w") as dvf: json.dump(dv, dvf, indent=2) if date_from_str(channels[url]["date_from"]) < date_from_str(extracted["upload_date"]) < date_from_str(channels[url]["date_to"]): logging.debug("Added \"{}\" from \"{}\" to download_list".format(extracted["title"], channels[url]["title"])) download_list.append((url, video_id)) else: logging.debug("\"{}\" from \"{}\" is not in date range, skipping".format(extracted["title"], channels[url]["title"])) lock.release()
def test_date_from_str(self): self.assertEqual(date_from_str('yesterday'), date_from_str('now-1day')) self.assertEqual(date_from_str('now+7day'), date_from_str('now+1week')) self.assertEqual(date_from_str('now+14day'), date_from_str('now+2week')) self.assertEqual(date_from_str('now+365day'), date_from_str('now+1year')) self.assertEqual(date_from_str('now+30day'), date_from_str('now+1month'))
def test_date_from_str(self): self.assertEqual(date_from_str("yesterday"), date_from_str("now-1day")) self.assertEqual(date_from_str("now+7day"), date_from_str("now+1week")) self.assertEqual(date_from_str("now+14day"), date_from_str("now+2week")) self.assertEqual(date_from_str("now+365day"), date_from_str("now+1year")) self.assertEqual(date_from_str("now+30day"), date_from_str("now+1month"))
dv[url]["title"] = channels[url]["title"] # For each video in the CURRENT list for video_id in channels[url]["videos"].keys(): # If it has a status of some kind if video_id in dv[url]["videos"].keys(): if dv[url]["videos"][video_id]["status"] == "downloaded": # Skip downloaded videos continue elif dv[url]["videos"][video_id]["status"] == "downloading": # Continue downloads for ANY video that hasn't finished logging.debug("Resuming the download of \"{}\" from \"{}\"".format(dv[url]["videos"][video_id]["title"], channels[url]["title"])) download_list.append((url, video_id)) elif dv[url]["videos"][video_id]["status"] == "checked": # Put the video that fits parameters into the list if date_from_str(channels[url]["date_from"]) < date_from_str(dv[url]["videos"][video_id]["date"]) < date_from_str(channels[url]["date_to"]): logging.debug("Added \"{}\" from \"{}\" to download_list".format(dv[url]["videos"][video_id]["title"], channels[url]["title"])) download_list.append((url, video_id)) else: get_info_list.append((url, video_id)) else: dv.update({url: { "title": channels[url]["title"], "url": url, "videos": {} }}) for video_id in channels[url]["videos"].keys(): get_info_list.append((url, video_id)) logging.info("Staged {} videos for download".format(len(download_list)))