tqhoa's picture
test
063b4bb
# -*- 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())