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)
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)
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)
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)