Fix tor dont save file, fix update version to latest commit.

This commit is contained in:
Lovi 2024-11-08 11:28:51 +01:00
parent 49e1dd2c3a
commit 9d74ae2a2d
2 changed files with 76 additions and 61 deletions

View File

@ -31,7 +31,6 @@ REQUEST_TIMEOUT = config_manager.get_float('REQUESTS', 'timeout')
class TOR_downloader: class TOR_downloader:
def __init__(self): def __init__(self):
""" """
@ -89,7 +88,6 @@ class TOR_downloader:
except Exception as e: except Exception as e:
logging.error(f"Failed to add magnet link: {str(e)}") logging.error(f"Failed to add magnet link: {str(e)}")
def start_download(self): def start_download(self):
""" """
Starts downloading the latest added torrent and monitors progress. Starts downloading the latest added torrent and monitors progress.
@ -196,6 +194,8 @@ class TOR_downloader:
Returns: Returns:
- bool: True if files are moved successfully, False otherwise. - bool: True if files are moved successfully, False otherwise.
""" """
video_extensions = {'.mp4', '.mkv', 'avi'}
time.sleep(2) time.sleep(2)
# List directories in the save path # List directories in the save path
@ -205,9 +205,18 @@ class TOR_downloader:
if self.torrent_name.split(" ")[0] in dir_name: if self.torrent_name.split(" ")[0] in dir_name:
dir_path = os.path.join(self.save_path, dir_name) dir_path = os.path.join(self.save_path, dir_name)
shutil.move(dir_path, destination) # Ensure destination is set; if not, use current directory
logging.info(f"Moved directory {dir_name} to {destination}") destination = destination or os.getcwd()
break
# Move only video files
for file_name in os.listdir(dir_path):
file_path = os.path.join(dir_path, file_name)
# Check if it's a file and if it has a video extension
if os.path.isfile(file_path) and os.path.splitext(file_name)[1] in video_extensions:
shutil.move(file_path, os.path.join(destination, file_name))
logging.info(f"Moved file {file_name} to {destination}")
time.sleep(2)
self.qb.delete_permanently(self.qb.torrents()[-1]['hash']) self.qb.delete_permanently(self.qb.torrents()[-1]['hash'])
return True return True

View File

@ -18,13 +18,13 @@ local_path = os.path.join(".")
from Src.Upload.version import __author__, __title__ from Src.Upload.version import __author__, __title__
def move_content(source: str, destination: str) : def move_content(source: str, destination: str):
""" """
Move all content from the source folder to the destination folder. Move all content from the source folder to the destination folder.
Parameters: Parameters:
source (str): The path to the source folder. - source (str): The path to the source folder.
destination (str): The path to the destination folder. - destination (str): The path to the destination folder.
""" """
os.makedirs(destination, exist_ok=True) os.makedirs(destination, exist_ok=True)
@ -48,9 +48,9 @@ def keep_specific_items(directory: str, keep_folder: str, keep_file: str):
Delete all items in the directory except for the specified folder and file. Delete all items in the directory except for the specified folder and file.
Parameters: Parameters:
directory (str): The path to the directory. - directory (str): The path to the directory.
keep_folder (str): The name of the folder to keep. - keep_folder (str): The name of the folder to keep.
keep_file (str): The name of the file to keep. - keep_file (str): The name of the file to keep.
""" """
try: try:
@ -64,14 +64,15 @@ def keep_specific_items(directory: str, keep_folder: str, keep_file: str):
# Check if the item is the specified folder or file # Check if the item is the specified folder or file
if os.path.isdir(item_path) and item != keep_folder: if os.path.isdir(item_path) and item != keep_folder:
shutil.rmtree(item_path) shutil.rmtree(item_path)
elif os.path.isfile(item_path) and item != keep_file: elif os.path.isfile(item_path) and item != keep_file:
os.remove(item_path) os.remove(item_path)
except PermissionError as pe: except PermissionError as pe:
print(f"PermissionError: {pe}. Check permissions and try running the script with admin privileges.") console.print(f"[red]PermissionError: {pe}. Check permissions and try again.")
except Exception as e: except Exception as e:
print(f"Error: {e}") console.print(f"[red]Error: {e}")
def download_and_extract_latest_commit(): def download_and_extract_latest_commit():
@ -79,25 +80,27 @@ def download_and_extract_latest_commit():
Download and extract the latest commit from a GitHub repository. Download and extract the latest commit from a GitHub repository.
""" """
try:
# Get the latest commit information using GitHub API # Get the latest commit information using GitHub API
api_url = f'https://api.github.com/repos/{__author__}/{__title__}/commits?per_page=1' api_url = f'https://api.github.com/repos/{__author__}/{__title__}/commits?per_page=1'
response = httpx.get(api_url) response = httpx.get(api_url, timeout=10)
console.log("[green]Making a request to GitHub repository...") console.log("[green]Requesting latest commit from GitHub repository...")
if response.status_code == 200: if response.status_code == 200:
commit_info = response.json()[0] commit_info = response.json()[0]
commit_sha = commit_info['sha'] commit_sha = commit_info['sha']
zipball_url = f'https://github.com/{__author__}/{__title__}/archive/{commit_sha}.zip' zipball_url = f'https://github.com/{__author__}/{__title__}/archive/{commit_sha}.zip'
console.log("[green]Getting zip file from repository...") console.log("[green]Downloading latest commit zip file...")
# Download the zipball # Download the zipball
response = httpx.get(zipball_url, follow_redirects=True, timeout=10) response = httpx.get(zipball_url, follow_redirects=True, timeout=10)
temp_path = os.path.join(os.path.dirname(os.getcwd()), 'temp_extracted')
# Extract the content of the zipball into a temporary folder # Extract the content of the zipball into a temporary folder
temp_path = os.path.join(os.path.dirname(os.getcwd()), 'temp_extracted')
with ZipFile(BytesIO(response.content)) as zip_ref: with ZipFile(BytesIO(response.content)) as zip_ref:
zip_ref.extractall(temp_path) zip_ref.extractall(temp_path)
console.log("[green]Extracting file ...") console.log("[green]Extracting files...")
# Move files from the temporary folder to the current folder # Move files from the temporary folder to the current folder
for item in os.listdir(temp_path): for item in os.listdir(temp_path):
@ -114,28 +117,31 @@ def download_and_extract_latest_commit():
# Remove old temp folder # Remove old temp folder
shutil.rmtree(new_folder_name) shutil.rmtree(new_folder_name)
console.log("[cyan]Latest commit downloaded and extracted successfully.")
console.log(f"[cyan]Latest commit downloaded and extracted successfully.")
else: else:
console.log(f"[red]Failed to fetch commit information. Status code: {response.status_code}") console.log(f"[red]Failed to fetch commit information. Status code: {response.status_code}")
except httpx.RequestError as e:
console.print(f"[red]Request failed: {e}")
except Exception as e:
console.print(f"[red]An unexpected error occurred: {e}")
def main_upload(): def main_upload():
""" """
Main function to upload the latest commit of a GitHub repository. Main function to upload the latest commit of a GitHub repository.
""" """
cmd_insert = Prompt.ask("[bold red]Are you sure you want to delete all files? (Only 'Video' folder and 'update_version.py' will remain)", choices=['y', 'n'], default='y', show_choices=True)
cmd_insert = Prompt.ask("[bold red]Are you sure you want to delete all files? (Only videos folder will remain)[/bold red] [yes/no]")
if cmd_insert.lower() == "yes": if cmd_insert.lower() == "yes":
console.print("[red]Deleting all files except the videos folder...") console.print("[red]Deleting all files except 'Video' folder and 'update_version.py'...")
# Remove all old file
keep_specific_items(".", "Video", "upload.py") keep_specific_items(".", "Video", "upload.py")
download_and_extract_latest_commit() download_and_extract_latest_commit()
else: else:
console.print("[red]Operation cancelled.") console.print("[red]Operation cancelled.")
main_upload()
if __name__ == "__main__":
main_upload()