Spaces:
Build error
Build error
| # -*- coding: utf-8 -*- | |
| import os | |
| import traceback | |
| import requests | |
| from modules import untils | |
| from modules import g_config | |
| system_status = {"error": False, "message": None} | |
| class TruyenFull: | |
| def __init__(self, manga=None, logger=None): | |
| self.manga = manga | |
| self.logger = logger | |
| self.domain = g_config.DOMAIN_TRUYENFULL | |
| self.is_manga_uploaded = True | |
| self.post_id = 0 | |
| self.chapters_current = self.get_list_chapter() | |
| self.total_chapters_current = len(self.chapters_current) | |
| def upload_chapter(self, episode, chapter_type="image"): | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_upload_chapter" | |
| if self.post_id == 0: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - upload_chapter - Post id can't none!") | |
| return False | |
| try: | |
| string_images = "" | |
| file = None | |
| chapter_content = "" | |
| if chapter_type == 'text': | |
| chapter_content = episode['content'] | |
| if chapter_type == 'image': | |
| filename = os.path.join(os.getcwd(), f"resources/{self.manga.slug}/{episode['name']}/archive.zip") | |
| if g_config.TYPE_LINK_IMAGE == 'local': | |
| file = { | |
| 'file_0': (filename, open(filename, 'rb'), "multipart/form-data") | |
| } | |
| string_images = untils.convert_link_images_to_do(self.manga.slug, episode['name'], episode['images']) | |
| string_images = ",".join(string_images) | |
| payload = { | |
| "secret_key": g_config.SECRET_KEY, | |
| 'post': self.post_id, | |
| 'postID': self.post_id, | |
| 'name': episode['name'], | |
| 'chapterName': episode['name'], | |
| 'nameExtend': '', | |
| 'chapterIndex': '', | |
| 'storage': g_config.TYPE_LINK_IMAGE, | |
| 'volume': '0', | |
| 'directlink': 'None', | |
| 'link_images': string_images, | |
| 'chapterContent': chapter_content, | |
| 'chapter_type': chapter_type, | |
| } | |
| # req = requests.request("POST", url=url, data=payload, files=file, headers=headers) | |
| response = requests.request("POST", url, headers=None, data=payload, files=file) | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error upload_chapter") | |
| self.logger.error(traceback.format_exc()) | |
| return True | |
| def get_list_chapter(self): | |
| result = [] | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_get_list_chapter" | |
| headers = None | |
| if self.manga is None: | |
| return [] | |
| try: | |
| payload = { | |
| "secret_key": g_config.SECRET_KEY, | |
| "manga_name": self.manga.name | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| if response.status_code != 200: | |
| return [] | |
| response = response.json() | |
| if response["success"] is False: | |
| self.is_manga_uploaded = False | |
| return [] | |
| for item in response['records']: | |
| result.append(item['chapter_name']) | |
| return result | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error get_list_chapter") | |
| self.logger.error(traceback.format_exc()) | |
| return result | |
| def upload_chapters_newest(self, episode, chapter_type="image"): | |
| try: | |
| if self.manga is None: | |
| return False | |
| if len(self.manga.episodes) == 0: | |
| return False | |
| if episode['name'] in self.chapters_current: | |
| return False | |
| # Upload | |
| is_uploaded = self.upload_chapter(episode, chapter_type) | |
| if is_uploaded: | |
| self.chapters_current.append(episode['name']) | |
| return is_uploaded | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error upload_chapters_newest") | |
| self.logger.error(traceback.format_exc()) | |
| return False | |
| def create_manga(self, chapter_type="image"): | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_create_manga" | |
| headers = None | |
| try: | |
| thumb = os.path.join(os.getcwd(), f"resources/{self.manga.slug}/thumb.jpg") | |
| file = {'featured': (thumb, open(thumb, 'rb'), "multipart/form-data")} | |
| payload = { | |
| "secret_key": g_config.SECRET_KEY, | |
| "manga_name": self.manga.name, | |
| "manga_des": self.manga.description, | |
| "manga_tags": ",".join(self.manga.tags).strip(), | |
| "author": self.manga.author_name, | |
| "manga_name_alternative": self.manga.name_alternative, | |
| "manga_status": self.manga.status, | |
| "chapter_type": chapter_type | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload, files=file) | |
| try: | |
| response = response.json() | |
| except requests.exceptions.JSONDecodeError: | |
| # self.logger.error("=" * 20) | |
| # self.logger.error("TruyenFull - Error create_manga json") | |
| return True | |
| if "post_id" in response: | |
| self.post_id = response["post_id"] | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error create_manga") | |
| self.logger.error(traceback.format_exc()) | |
| return False | |
| return True | |
| def init_post_id(self): | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_get_post_id" | |
| headers = None | |
| try: | |
| payload = { | |
| "secret_key": g_config.SECRET_KEY, | |
| "manga_name": self.manga.name | |
| } | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| try: | |
| response = response.json() | |
| except requests.exceptions.JSONDecodeError: | |
| return | |
| if "post_id" in response and int(response["post_id"]) > 0: | |
| self.post_id = response["post_id"] | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error init_post_id") | |
| self.logger.error(traceback.format_exc()) | |
| def get_list_task_customs(self, domain_target): | |
| result = [] | |
| # system_status["error"] = True | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_get_list_task_upload_custom&status=1&paging=all" \ | |
| f"&secret_key={g_config.SECRET_KEY}" | |
| headers = None | |
| try: | |
| response = requests.request("GET", url, headers=headers) | |
| if response.status_code != 200: | |
| return [] | |
| response = response.json() | |
| if response["success"] is False: | |
| return [] | |
| for item in response["records"]: | |
| for domain in domain_target: | |
| if domain in item["link_manga"]: | |
| result.append(item) | |
| return result | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error get_list_task_customs") | |
| self.logger.error(traceback.format_exc()) | |
| return result | |
| def update_task_custom(self, payload): | |
| url = f"{self.domain}/wp-admin/admin-ajax.php?action=manga_update_task_upload_custom" | |
| headers = None | |
| try: | |
| payload.update({"secret_key": g_config.SECRET_KEY}) | |
| response = requests.request("POST", url, headers=headers, data=payload) | |
| except KeyboardInterrupt: | |
| raise KeyboardInterrupt | |
| except: | |
| self.logger.error("=" * 20) | |
| self.logger.error("TruyenFull - Error update_task_custom") | |
| self.logger.error(traceback.format_exc()) | |