mirror of
https://github.com/barkeser2002/CoomerDL.git
synced 2026-09-25 01:10:11 +03:00
91 lines
2.9 KiB
Python
91 lines
2.9 KiB
Python
import os
|
|
from concurrent.futures import as_completed
|
|
|
|
from downloader.core.base_api_downloader import BaseApiDownloader
|
|
from downloader.adapters.jpg5_adapter import Jpg5Adapter
|
|
|
|
|
|
class Jpg5Downloader(BaseApiDownloader):
|
|
def __init__(
|
|
self,
|
|
url,
|
|
carpeta_destino,
|
|
progress_manager,
|
|
log_callback=None,
|
|
tr=None,
|
|
update_progress_callback=None,
|
|
update_global_progress_callback=None,
|
|
max_workers=3,
|
|
):
|
|
super().__init__(
|
|
download_folder=carpeta_destino,
|
|
max_workers=max_workers,
|
|
log_callback=log_callback,
|
|
update_progress_callback=update_progress_callback,
|
|
update_global_progress_callback=update_global_progress_callback,
|
|
download_images=True,
|
|
download_videos=False,
|
|
download_compressed=False,
|
|
tr=tr,
|
|
)
|
|
self.url = url
|
|
self.progress_manager = progress_manager
|
|
self.adapter = Jpg5Adapter(
|
|
session=self.session,
|
|
headers=self.headers,
|
|
log_callback=self.log_callback,
|
|
tr=self.tr,
|
|
)
|
|
self.domain_name = "jpg5"
|
|
|
|
def descargar_imagenes(self):
|
|
os.makedirs(self.download_folder, exist_ok=True)
|
|
|
|
resolved = self.adapter.resolve_gallery(self.url)
|
|
media_entries = resolved["media"]
|
|
|
|
self.total_files = len(media_entries)
|
|
self.completed_files = 0
|
|
futures = []
|
|
|
|
for entry in media_entries:
|
|
media_url = entry["media_url"]
|
|
|
|
if self.cancel_requested.is_set():
|
|
self.log("JPG5_DOWNLOAD_CANCELLED_BY_USER")
|
|
return
|
|
|
|
if self.download_mode == "queue":
|
|
self.process_media_element(
|
|
media_url,
|
|
user_id=None,
|
|
post_id=entry.get("post_id"),
|
|
post_name=entry.get("title"),
|
|
post_time=entry.get("published"),
|
|
download_id=media_url,
|
|
target_folder=self.download_folder,
|
|
forced_filename=entry.get("filename"),
|
|
)
|
|
else:
|
|
future = self.executor.submit(
|
|
self.process_media_element,
|
|
media_url,
|
|
user_id=None,
|
|
post_id=entry.get("post_id"),
|
|
post_name=entry.get("title"),
|
|
post_time=entry.get("published"),
|
|
download_id=media_url,
|
|
target_folder=self.download_folder,
|
|
forced_filename=entry.get("filename"),
|
|
)
|
|
futures.append(future)
|
|
|
|
self.futures = futures
|
|
|
|
for future in as_completed(futures):
|
|
if self.cancel_requested.is_set():
|
|
self.log("JPG5_DOWNLOAD_CANCELLED_BY_USER")
|
|
break
|
|
future.result()
|
|
|
|
self.shutdown_executor() |