Ejemplo n.º 1
0
 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'))
Ejemplo n.º 2
0
    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()
Ejemplo n.º 3
0
 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'))
Ejemplo n.º 4
0
 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"))
Ejemplo n.º 5
0
            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)))