fixes + parralel Downloads
This commit is contained in:
parent
0f72120259
commit
189ae77abf
|
|
@ -3,6 +3,7 @@ import discord
|
|||
import os.path
|
||||
|
||||
import requests
|
||||
from util import parallel_downloads
|
||||
|
||||
|
||||
class ListManga(discord.ui.View):
|
||||
|
|
@ -12,11 +13,16 @@ class ListManga(discord.ui.View):
|
|||
self.index = 0
|
||||
self.manga_list = manga_list
|
||||
self.manga_files = gen_manga_files(self.manga_list)
|
||||
self.msg = None
|
||||
|
||||
async def force_reload(self, msg: discord.Message):
|
||||
await msg.edit(
|
||||
embed=manga_embed(self.manga_list[self.index]),
|
||||
attachments=[self.manga_files[self.index]]
|
||||
)
|
||||
|
||||
async def print_manga(self, interaction: discord.Interaction):
|
||||
await interaction.response.defer()
|
||||
await self.msg.edit(
|
||||
await interaction.message.edit(
|
||||
embed=manga_embed(self.manga_list[self.index]),
|
||||
attachments=[self.manga_files[self.index]]
|
||||
)
|
||||
|
|
@ -55,19 +61,13 @@ class ListManga(discord.ui.View):
|
|||
|
||||
|
||||
def gen_manga_files(manga_list: list[Manga]):
|
||||
ret = []
|
||||
for manga in manga_list:
|
||||
if not os.path.isfile(f'tmp/{manga.id}.jpg'):
|
||||
img_data = requests.get(manga.get_cover_art_url()).content
|
||||
with open(f'tmp/{manga.id}.jpg', 'wb') as handler:
|
||||
handler.write(img_data)
|
||||
ret.append(discord.File(f"tmp/{manga.id}.jpg", f"{manga.id}.jpg"))
|
||||
return ret
|
||||
|
||||
return parallel_downloads.parallel_download(manga_list)
|
||||
|
||||
|
||||
def manga_embed(manga: Manga):
|
||||
e = discord.Embed(title=manga.get_title(), description=manga.get_description(), url=manga.get_url())
|
||||
|
||||
e.set_thumbnail(url=f"attachment://{manga.id}.jpg")
|
||||
extension = manga.get_cover_art_extension()
|
||||
e.set_thumbnail(url=f"attachment://{manga.id}.{extension}")
|
||||
|
||||
return e
|
||||
|
|
|
|||
5
main.py
5
main.py
|
|
@ -43,8 +43,9 @@ async def search_command(
|
|||
view = embed_util.ListManga(manga_list)
|
||||
await chanel.send(f"Hey, you searched for {title}")
|
||||
msg = await chanel.send(view=view, embed=embed_util.manga_embed(manga_list[0]))
|
||||
view.msg = msg
|
||||
await view.wait()
|
||||
await view.force_reload(msg)
|
||||
ret = await view.wait()
|
||||
print(ret)
|
||||
await chanel.send("Done")
|
||||
|
||||
|
||||
|
|
|
|||
21
manga.py
21
manga.py
|
|
@ -51,7 +51,10 @@ class Manga:
|
|||
try:
|
||||
return self.data["attributes"]["title"]["en"]
|
||||
except KeyError:
|
||||
return self.data["attributes"]["title"][0]
|
||||
try:
|
||||
return self.data["attributes"]["title"][0]
|
||||
except KeyError:
|
||||
return "No Title"
|
||||
|
||||
def get_latest_chap(self) -> Chapter:
|
||||
return Chapter(self.data["attributes"]["latestUploadedChapter"])
|
||||
|
|
@ -65,16 +68,28 @@ class Manga:
|
|||
|
||||
|
||||
r = requests.get(f"{self.base_url}/cover/{cover_art_id}")
|
||||
print( r.json()["data"])
|
||||
cover_fileName = r.json()["data"]["attributes"]["fileName"]
|
||||
cover_extension = cover_fileName.split(".")[1]
|
||||
return f"https://mangadex.org/covers/{self.id}/{cover_fileName}.256.{cover_extension}"
|
||||
|
||||
def get_cover_art_extension(self):
|
||||
cover_art_id = ""
|
||||
for relation in self.data["relationships"]:
|
||||
if relation["type"] == "cover_art":
|
||||
cover_art_id = relation["id"]
|
||||
|
||||
|
||||
|
||||
r = requests.get(f"{self.base_url}/cover/{cover_art_id}")
|
||||
cover_fileName = r.json()["data"]["attributes"]["fileName"]
|
||||
cover_extension = cover_fileName.split(".")[1]
|
||||
return cover_extension
|
||||
|
||||
def get_description(self) -> str:
|
||||
if "en" in self.data["attributes"]["description"].keys():
|
||||
return self.data["attributes"]["description"]["en"]
|
||||
else:
|
||||
if list(self.data["attributes"]["description"].keys()) > 0:
|
||||
if len(list(self.data["attributes"]["description"].keys())) > 0:
|
||||
return self.data["attributes"]["description"][list(self.data["attributes"]["description"].keys())[0]]
|
||||
return ""
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,23 @@
|
|||
import concurrent.futures
|
||||
import requests
|
||||
import os.path
|
||||
|
||||
|
||||
import discord
|
||||
from manga import Manga
|
||||
|
||||
|
||||
def download_file(manga: Manga):
|
||||
extension = manga.get_cover_art_extension()
|
||||
if not os.path.isfile(f'tmp/{manga.id}.{extension}'):
|
||||
img_data = requests.get(manga.get_cover_art_url()).content
|
||||
with open(f'tmp/{manga.id}.{extension}', 'wb') as handler:
|
||||
handler.write(img_data)
|
||||
return discord.File(f"tmp/{manga.id}.{extension}", f"{manga.id}.{extension}")
|
||||
|
||||
def parallel_download(manga_list: list[Manga]) -> list[discord.File]:
|
||||
with concurrent.futures.ThreadPoolExecutor() as exector:
|
||||
result = exector.map(download_file, manga_list)
|
||||
|
||||
return list(result)
|
||||
|
||||
Loading…
Reference in New Issue