Example #1
0
def add_to_db():
    name = "ThePrimeThanatos"
    check_path = "G:\\Music\\" + name
    extension = constants.MP3
    result_path = "D:\\Automatica\\Python\\PyCharmProjects\\Kevolehc\\Kevolehc\\youtube\\files\\_db"
    dbfile = result_path + "\\" + name + ".txt"
    files_list = list_files_sub(check_path)

    result = {}
    for element in files_list:
        abs_path = element["path"] + "\\" + element["filename"]
        if extension == constants.MP4 or extension == constants.MKV:
            if abs_path.endswith(extension):
                metadata = Ffmpeg.metadata_to_json(Ffmpeg.get_metadata(abs_path))
                episode_id = metadata.get("EPISODE_ID", None)
                if episode_id:
                    title = metadata.get("TITLE")
                    track = metadata.get("TRACK")
                    result[episode_id] = {"TITLE": title, "STATUS": "DOWNLOADED", "NUMBER": track,
                                          "CHANNEL_NAME": name, "FILE_NAME": element["filename"], "FORMAT": extension}

        if extension == constants.MP3:
            if abs_path.endswith(extension):
                metadata = Ffmpeg.metadata_to_json(Ffmpeg.get_metadata(abs_path))
                episode_id = metadata.get("DISC", None)
                if episode_id:
                    title = metadata.get("TITLE")
                    track = metadata.get("TRACK")
                    result[episode_id] = {"TITLE": title, "STATUS": "DOWNLOADED", "NUMBER": track,
                                          "CHANNEL_NAME": name, "FILE_NAME": element["filename"], "FORMAT": extension}

    File.write_json_data(dbfile, result)
Example #2
0
def update_extra_credits():
    db_file = '\\'.join([paths.DB_LOG_PATH, "ExtraCreditz.txt"])
    db_json = File.get_json_data(db_file)
    check_path = "G:\\Filme\\ExtraCreditz"
    files_list = list_files_sub(check_path)

    for element in files_list:
        abs_path = element["path"] + "\\" + element["filename"]
        if abs_path.endswith(constants.MP4):
            metadata = Ffmpeg.metadata_to_json(Ffmpeg.get_metadata(abs_path))
            print(metadata)
            track = int(metadata.get("TRACK", -1))
            episode_id = metadata.get("EPISODE_ID", None)
            if (track > 0) and (episode_id is None):
                for key, value in db_json.items():
                    if value["NUMBER"] == track and value["STATUS"] == "UNABLE":
                        print(key, track)
                        tags = {
                            "episode_id": key
                        }
                        if File.exists(abs_path):
                            Ffmpeg.add_tags(abs_path, tags)

                        value["STATUS"] = "DOWNLOADED"

    File.write_json_data(db_file, db_json)
Example #3
0
def check_db_integrity():
    monitors_db = paths.MAIN_MONITORS_PATH
    # monitors_db = paths.PGM_MONITORS_PATH
    # monitors_db = paths.SECONDARY_MONITORS_PATH
    dk_file = paths.API_KEY_PATH

    worker = YoutubeWorker(dk_file)
    manager = MonitorManager(monitors_db, worker, paths.YOUTUBE_API_LOG)
    for monitor in manager.monitors:
        default_reference_date = yt_datetime.get_default_ytdate()
        db_file = '\\'.join([paths.DB_LOG_PATH, monitor.name + ".txt"])
        db_json = File.get_json_data(db_file)

        prepare_videos(manager, monitor, default_reference_date)

        for video in monitor.videos:
            db_video = db_json.get(video.id, None)
            # Check if video exists in db
            if db_video is None:
                db_json[video.id] = {
                    "STATUS": "MISSING",
                    "TITLE": video.title,
                    "PUBLISHED_AT": video.publishedAt,
                    "FILE_NAME": video.file_name,
                    "SAVE_LOCATION": video.save_location,
                    "NUMBER": video.number,
                    "CHANNEL_NAME": video.channel_name,
                    "FORMAT": monitor.format
                }
                print(db_json[video.id])
            else:
                # Add timestamp if missing
                if db_video.get(YoutubeVideo.PUBLISHED_AT, None) is None:
                    db_json[video.id][
                        YoutubeVideo.PUBLISHED_AT] = video.publishedAt

                # Compare timestamp
                if compare_yt_dates(db_video.get(YoutubeVideo.PUBLISHED_AT),
                                    video.publishedAt) != 0:
                    print(str(db_video.get(YoutubeVideo.NUMBER)),
                          "API: ",
                          video.publishedAt,
                          "DB: ",
                          db_video.get(YoutubeVideo.PUBLISHED_AT),
                          sep=" | ")
                    db_json[video.id][
                        YoutubeVideo.PUBLISHED_AT] = video.publishedAt

                # Check and update video title in db if changed
                if not db_video.get(YoutubeVideo.TITLE) == video.title:
                    print(str(db_video.get(YoutubeVideo.NUMBER)),
                          video.title,
                          db_video.get(YoutubeVideo.TITLE),
                          sep=" | ")
                    db_json[video.id][YoutubeVideo.TITLE] = video.title

        File.write_json_data(db_file, db_json)
Example #4
0
def shift_db_at_position(monitor_name, position, step):
    db_file = '\\'.join([paths.DB_LOG_PATH, monitor_name + ".txt"])
    db_json = File.get_json_data(db_file)

    for key, value in db_json.items():
        if value["NUMBER"] >= position:
            number = value["NUMBER"]
            next_number = number + step
            value["FILE_NAME"] = value["FILE_NAME"].replace(
                str(number) + " - ",
                str(next_number) + " - ")
            value["NUMBER"] = next_number

    File.write_json_data(db_file, db_json)