mirror of
https://github.com/KeksPirates/SoftwareManager.git
synced 2026-08-03 17:39:42 +02:00
Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 4dadc9ba50 | |||
| 719c4e86e8 | |||
| 999c8e9ba4 | |||
| 3f6889da56 | |||
| 69ac739be6 | |||
| 141cc8fadc | |||
| 80c6ece72e |
@@ -27,6 +27,17 @@ SoftwareManager is a Python-based GUI/TUI tool that simplifies downloading and m
|
||||
- If you want to host your own server, clone the server branch of this repo, enter your cookie for rutracker.org and run server.py. Detailed Instructions on how to get your rutracker cookie are in the README of its branch.
|
||||
- This tool is for educational purposes only. Use it responsibly.
|
||||
|
||||
|
||||
## Star History
|
||||
|
||||
<a href="https://www.star-history.com/#KeksPirates/SoftwareManager&type=date&legend=top-left">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="https://api.star-history.com/svg?repos=KeksPirates/SoftwareManager&type=date&theme=dark&legend=top-left" />
|
||||
<source media="(prefers-color-scheme: light)" srcset="https://api.star-history.com/svg?repos=KeksPirates/SoftwareManager&type=date&legend=top-left" />
|
||||
<img alt="Star History Chart" src="https://api.star-history.com/svg?repos=KeksPirates/SoftwareManager&type=date&legend=top-left" />
|
||||
</picture>
|
||||
</a>
|
||||
|
||||
---
|
||||
|
||||
**Disclaimer:** SoftwareManager is intended for legal and ethical use only. Ensure compliance with applicable laws and regulations when using this tool.
|
||||
|
||||
@@ -4,6 +4,8 @@ from core.utils.data.state import state
|
||||
|
||||
def scrape_rutracker(search_text):
|
||||
search = requests.get(f"{state.api_url}/search/{search_text}")
|
||||
if state.debug:
|
||||
print("Sent request to server")
|
||||
if search:
|
||||
try:
|
||||
return search.text
|
||||
|
||||
@@ -17,11 +17,13 @@ async def init_uztracker():
|
||||
up = True
|
||||
else:
|
||||
up = False
|
||||
print(f"Uztracker seems down, status code: {response.status_code}")
|
||||
if state.debug:
|
||||
print(f"Uztracker seems down, status code: {response.status_code}")
|
||||
except requests.exceptions.RequestException as e:
|
||||
print(f"\nRequest Exception on {url_uztracker}:")
|
||||
print(e)
|
||||
print("\nIs the Site down?")
|
||||
if state.debug:
|
||||
print(f"\nRequest Exception on {url_uztracker}:")
|
||||
print(e)
|
||||
print("\nIs the Site down?")
|
||||
up = False
|
||||
|
||||
asyncio.run(init_uztracker())
|
||||
@@ -61,12 +63,13 @@ async def scrape_uztracker(search, max_results=450):
|
||||
break
|
||||
|
||||
except aiohttp.ClientError as e:
|
||||
if result:
|
||||
if result and state.debug:
|
||||
print(f"Failed to fetch {search_url}: {e}")
|
||||
return None
|
||||
|
||||
else:
|
||||
print("Error: Uztracker down")
|
||||
if state.debug:
|
||||
print("Error: Uztracker down")
|
||||
return None, None
|
||||
|
||||
if not results:
|
||||
@@ -85,7 +88,8 @@ def get_post_title(post_url):
|
||||
if state.debug:
|
||||
print("Program not found")
|
||||
else:
|
||||
print("Error: Uztracker down")
|
||||
if state.debug:
|
||||
print("Error: Uztracker down")
|
||||
return None
|
||||
|
||||
|
||||
|
||||
@@ -114,7 +114,6 @@ def settings_dialog(self):
|
||||
save_btn.clicked.connect(lambda: save_settings(thread_box.value(), close_settings, api_url.text(), download_path.text(), speed_limit.value()))
|
||||
|
||||
cancel_btn.clicked.connect(dialog.reject)
|
||||
print(thread_box.value())
|
||||
layout.addWidget(cancel_btn)
|
||||
layout.addWidget(save_btn)
|
||||
|
||||
|
||||
@@ -38,5 +38,5 @@ def return_pressed(self):
|
||||
self.softwareList.clear()
|
||||
self.softwareList.addItems(state.post_titles)
|
||||
if state.debug == True:
|
||||
print(f"Cached: {cached}")
|
||||
print(f"Response Cached: {cached}")
|
||||
|
||||
|
||||
@@ -1,11 +1,16 @@
|
||||
from .aria2_integration import run_aria2p
|
||||
from core.utils.data.state import state
|
||||
|
||||
def start_client():
|
||||
global aria2
|
||||
aria2 = run_aria2p()
|
||||
if state.debug:
|
||||
print("Started Aria2p")
|
||||
|
||||
def add_magnet(uri):
|
||||
aria2.add_magnet(uri)
|
||||
if state.debug:
|
||||
print("Magnet URI added to Aria2")
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -5,16 +5,21 @@ from core.utils.network.jsonhandler import format_data
|
||||
|
||||
|
||||
|
||||
def get_item_url(item, posts, post_titles): # oftwarelist currentitem, post list (dict), post titles list
|
||||
def get_item_url(item, posts, post_titles): # softwarelist currentitem, post list (dict), post titles list
|
||||
post_index = post_titles.index(item)
|
||||
if 0 <= post_index < len(post_titles):
|
||||
if state.tracker == "uztracker":
|
||||
item = "https://uztracker.net/" + state.post_urls[post_index].lstrip("./")
|
||||
if state.debug:
|
||||
print("Found post URL: ", item)
|
||||
return item
|
||||
if state.tracker == "rutracker":
|
||||
item_dict = posts[post_index]
|
||||
_, post_links, _ = format_data([item_dict])
|
||||
if state.debug:
|
||||
print("Found post URL: ", post_links[0])
|
||||
return post_links[0]
|
||||
|
||||
return None
|
||||
|
||||
|
||||
@@ -22,6 +27,8 @@ def get_item_url(item, posts, post_titles): # oftwarelist currentitem, post list
|
||||
def get_magnet_link(post_url):
|
||||
try:
|
||||
response = requests.get(post_url) # eventually impl. cloudscraper
|
||||
if state.debug:
|
||||
print("Sent Request to retrieve Magnet Link...")
|
||||
response.raise_for_status()
|
||||
soup = BeautifulSoup(response.text, 'html.parser')
|
||||
magnet_link = soup.find('a', href=lambda x: x and x.startswith('magnet:'))
|
||||
|
||||
@@ -22,7 +22,7 @@ def kill_aria2server():
|
||||
if proc.name() == process:
|
||||
proc.kill()
|
||||
if state.debug:
|
||||
print("Killed Aria2c")
|
||||
print(f"Killed Aria2c (PID {proc.pid})")
|
||||
except psutil.NoSuchProcess:
|
||||
pass
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ import threading
|
||||
def download_selected(item, posts, post_titles):
|
||||
if item is not None:
|
||||
if state.debug:
|
||||
print(f"network {item.text()}")
|
||||
print(f"Downloading {item.text()}")
|
||||
run_thread(threading.Thread(target=run_download, args=(item.text(), posts, post_titles)))
|
||||
|
||||
else:
|
||||
|
||||
@@ -10,11 +10,14 @@ import qdarktheme
|
||||
import darkdetect
|
||||
import threading
|
||||
import signal
|
||||
import atexit
|
||||
import argparse
|
||||
import sys
|
||||
|
||||
# Debug Output
|
||||
state.debug = True
|
||||
|
||||
|
||||
parser = argparse.ArgumentParser()
|
||||
parser.add_argument("--debug", action="store_true")
|
||||
args = parser.parse_args()
|
||||
|
||||
|
||||
def run_gui():
|
||||
@@ -36,6 +39,7 @@ def keyboardinterrupthandler(signum, frame):
|
||||
|
||||
if __name__ == "__main__":
|
||||
read_config()
|
||||
state.debug = args.debug # override of read_config
|
||||
if state.debug:
|
||||
print("Starting Aria2 Server")
|
||||
state.aria2process = run_aria2server()
|
||||
|
||||
Reference in New Issue
Block a user