diff --git a/logic_linkkf.py b/logic_linkkf.py index 527f15a..179ac06 100644 --- a/logic_linkkf.py +++ b/logic_linkkf.py @@ -1122,13 +1122,14 @@ class LogicLinkkf(object): # else: # epi_no = '%.1f'%float(title) # epi_no = "%s-pt1" % epi_no - epi_no = total_epi + epi_no = int(total_epi) if epi_no < 10: epi_no = "0%s" % epi_no else: epi_no = "%s" % epi_no - if int(season) < 10: + season = int(season) + if season < 10: season = "0%s" % season else: season = "%s" % season @@ -1144,6 +1145,16 @@ class LogicLinkkf(object): except Exception as e: logger.error("Exception:%s", e) logger.error(traceback.format_exc()) + safe_title = Util.change_text_for_use_filename(str(maintitle or "linkkf")).strip() or "linkkf" + try: + safe_season = int(season) + except Exception: + safe_season = 1 + try: + safe_epi = int(total_epi) + except Exception: + safe_epi = 1 + return f"{safe_title}.S{safe_season:02d}E{safe_epi:02d}.720p-LK.mp4" @staticmethod def _extract_player_payload(html_text): diff --git a/logic_queue.py b/logic_queue.py index e1b9543..8e4191a 100644 --- a/logic_queue.py +++ b/logic_queue.py @@ -116,11 +116,35 @@ class LogicQueue(object): def _make_save_path(info): save_path = LogicQueue._get_setting("download_path", os.path.join(F.config["path_data"], "linkkf")) if LogicQueue._get_setting("auto_make_folder", "True") == "True": - save_path = os.path.join(save_path, info["save_folder"]) + save_folder = str(info.get("save_folder") or info.get("program_title") or info.get("program_code") or "linkkf").strip() + save_path = os.path.join(save_path, save_folder) if LogicQueue._get_setting("linkkf_auto_make_season_folder", "True") == "True": - save_path = os.path.join(save_path, f"Season {int(info['season'])}") + try: + season = int(info.get("season") or 1) + except Exception: + season = 1 + save_path = os.path.join(save_path, f"Season {season}") return save_path + @staticmethod + def _ensure_download_info(info): + from .logic_linkkf import LogicLinkkf + + if info.get("save_folder") in [None, ""]: + info["save_folder"] = str( + info.get("program_title") or info.get("program_code") or info.get("code") or "linkkf" + ).strip() + if info.get("season") in [None, ""]: + info["season"] = "1" + if info.get("filename") in [None, ""]: + info["filename"] = LogicLinkkf.get_filename( + info.get("save_folder") or "linkkf", + info.get("season") or "1", + info.get("title") or info.get("code") or "episode", + 1, + ) + return info + @staticmethod def _make_headers(video_info): linkkf_url = str(LogicQueue._get_setting("linkkf_url", "https://linkkf.tv")).rstrip("/") @@ -345,6 +369,7 @@ class LogicQueue(object): def _prepare_download(entity): from .logic_linkkf import LogicLinkkf + entity.info = LogicQueue._ensure_download_info(entity.info) LogicQueue._ensure_db_entity(entity.info) entity.url = LogicLinkkf.get_video_url(entity.info["url"]) logger.debug("resolved video url: %s", entity.url) @@ -356,7 +381,10 @@ class LogicQueue(object): save_path = LogicQueue._make_save_path(entity.info) os.makedirs(save_path, exist_ok=True) - target_path = os.path.join(save_path, entity.info["filename"]) + filename = entity.info.get("filename") + if filename in [None, ""]: + raise ValueError(f"missing filename for episode: {entity.info.get('code')}") + target_path = os.path.join(save_path, filename) if os.path.exists(target_path): LogicQueue._set_entity_status(entity, 100, 100, {"percent": 100}) @@ -374,11 +402,12 @@ class LogicQueue(object): return None headers = LogicQueue._make_headers(entity.url) - LogicQueue._download_subtitle(entity.url, save_path, entity.info["filename"], headers) + LogicQueue._download_subtitle(entity.url, save_path, filename, headers) return { "video_url": entity.url[0], "save_path": save_path, + "filename": filename, "headers": headers, } @@ -401,7 +430,7 @@ class LogicQueue(object): ffmpeg_instance = SupportFfmpeg( prepared["video_url"], - entity.info["filename"], + prepared["filename"], save_path=prepared["save_path"], headers=prepared["headers"], callback_id=str(entity.entity_id),