Merge c94e69354553dd5d4a96f08fc0d78d6b58126015 into ccc2478067fd6c257b8403429f5c600da69a706e

This commit is contained in:
Alessandro Perazzetta 2025-06-05 16:03:20 +02:00 committed by GitHub
commit 9dfa136363
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 66 additions and 38 deletions

View File

@ -30,6 +30,9 @@ class ConfigManager:
Args: Args:
file_name (str, optional): Configuration file name. Default: 'config.json'. file_name (str, optional): Configuration file name. Default: 'config.json'.
""" """
# Check if the file name is a full path or just a file name
if os.path.basename(file_name) == file_name:
# Determine the base path - use the current working directory # Determine the base path - use the current working directory
if getattr(sys, 'frozen', False): if getattr(sys, 'frozen', False):
# If the application is frozen (e.g., PyInstaller) # If the application is frozen (e.g., PyInstaller)
@ -39,8 +42,15 @@ class ConfigManager:
# Get the actual path of the module file # Get the actual path of the module file
current_file_path = os.path.abspath(__file__) current_file_path = os.path.abspath(__file__)
# Navigate upwards to find the project root
# Assuming this file is in a package structure like StreamingCommunity/Util/config_json.py
# We need to go up 2 levels to reach the project root
base_path = os.path.dirname(os.path.dirname(os.path.dirname(current_file_path))) base_path = os.path.dirname(os.path.dirname(os.path.dirname(current_file_path)))
else:
base_path = os.path.dirname(os.path.abspath(file_name))
file_name = os.path.basename(file_name)
# Initialize file paths # Initialize file paths
self.file_path = os.path.join(base_path, file_name) self.file_path = os.path.join(base_path, file_name)
self.domains_path = os.path.join(base_path, 'domains.json') self.domains_path = os.path.join(base_path, 'domains.json')
@ -268,32 +278,33 @@ class ConfigManager:
self._load_site_data_from_file() self._load_site_data_from_file()
def _load_site_data_from_api(self) -> None: def _load_site_data_from_api(self) -> None:
"""Load site data from GitHub.""" """Load site data from API."""
domains_github_url = "https://raw.githubusercontent.com/Arrowar/StreamingCommunity/refs/heads/main/.github/.domain/domains.json"
headers = { headers = {
"apikey": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inp2Zm5ncG94d3Jnc3duenl0YWRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxNTIxNjMsImV4cCI6MjA1NTcyODE2M30.FNTCCMwi0QaKjOu8gtZsT5yQttUW8QiDDGXmzkn89QE",
"Authorization": f"Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJzdXBhYmFzZSIsInJlZiI6Inp2Zm5ncG94d3Jnc3duenl0YWRoIiwicm9sZSI6ImFub24iLCJpYXQiOjE3NDAxNTIxNjMsImV4cCI6MjA1NTcyODE2M30.FNTCCMwi0QaKjOu8gtZsT5yQttUW8QiDDGXmzkn89QE",
"Content-Type": "application/json",
"User-Agent": get_userAgent() "User-Agent": get_userAgent()
} }
try: try:
console.print(f"[bold cyan]Retrieving site data from GitHub:[/bold cyan] [green]{domains_github_url}[/green]") console.print("[bold cyan]Retrieving site data from API...[/bold cyan]")
response = requests.get(domains_github_url, timeout=8, headers=headers) response = requests.get("https://zvfngpoxwrgswnzytadh.supabase.co/rest/v1/public", timeout=8, headers=headers)
if response.ok: if response.ok:
self.configSite = response.json() data = response.json()
if data and len(data) > 0:
self.configSite = data[0]['data']
site_count = len(self.configSite) if isinstance(self.configSite, dict) else 0 site_count = len(self.configSite) if isinstance(self.configSite, dict) else 0
console.print(f"[bold green]Site data loaded from GitHub:[/bold green] {site_count} streaming services found.")
else: else:
console.print(f"[bold red]GitHub request failed:[/bold red] HTTP {response.status_code}, {response.text[:100]}") console.print("[bold yellow]API returned an empty data set[/bold yellow]")
self._handle_site_data_fallback() else:
console.print(f"[bold red]API request failed:[/bold red] HTTP {response.status_code}, {response.text[:100]}")
except json.JSONDecodeError as e:
console.print(f"[bold red]Error parsing JSON from GitHub:[/bold red] {str(e)}")
self._handle_site_data_fallback() self._handle_site_data_fallback()
except Exception as e: except Exception as e:
console.print(f"[bold red]GitHub connection error:[/bold red] {str(e)}") console.print(f"[bold red]API connection error:[/bold red] {str(e)}")
self._handle_site_data_fallback() self._handle_site_data_fallback()
def _load_site_data_from_file(self) -> None: def _load_site_data_from_file(self) -> None:
@ -558,6 +569,7 @@ class ConfigManager:
return section in config_source return section in config_source
# Helper function to check the platform
def get_use_large_bar(): def get_use_large_bar():
""" """
Determine if the large bar feature should be enabled. Determine if the large bar feature should be enabled.

View File

@ -29,9 +29,9 @@ from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance, Teleg
# Config # Config
SHOW_TRENDING = config_manager.get_bool('DEFAULT', 'show_trending') # SHOW_TRENDING = config_manager.get_bool('DEFAULT', 'show_trending')
NOT_CLOSE_CONSOLE = config_manager.get_bool('DEFAULT', 'not_close') # NOT_CLOSE_CONSOLE = config_manager.get_bool('DEFAULT', 'not_close')
TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot') # TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
# Variable # Variable
@ -61,7 +61,7 @@ def load_search_functions():
loaded_functions = {} loaded_functions = {}
# Lista dei siti da escludere se TELEGRAM_BOT è attivo # Lista dei siti da escludere se TELEGRAM_BOT è attivo
excluded_sites = {"cb01new", "guardaserie", "ilcorsaronero", "mostraguarda"} if TELEGRAM_BOT else set() excluded_sites = {"cb01new", "guardaserie", "ilcorsaronero", "mostraguarda"} if config_manager.get_bool('DEFAULT', 'telegram_bot') else set()
# Find api home directory # Find api home directory
if getattr(sys, 'frozen', False): # Modalità PyInstaller if getattr(sys, 'frozen', False): # Modalità PyInstaller
@ -142,7 +142,8 @@ def initialize():
sys.exit(0) sys.exit(0)
# Trending tmbd # Trending tmbd
if SHOW_TRENDING: # SHOW_TRENDING
if config_manager.get_bool('DEFAULT', 'show_trending'):
print() print()
tmdb.display_trending_films() tmdb.display_trending_films()
tmdb.display_trending_tv_shows() tmdb.display_trending_tv_shows()
@ -200,10 +201,6 @@ def main(script_id = 0):
"torrent": "white" "torrent": "white"
} }
if TELEGRAM_BOT:
bot = get_bot_instance()
bot.send_message(f"Avviato script {script_id}", None)
start = time.time() start = time.time()
# Create logger # Create logger
@ -244,6 +241,11 @@ def main(script_id = 0):
parser.add_argument("script_id", nargs="?", default="unknown", help="ID dello script") parser.add_argument("script_id", nargs="?", default="unknown", help="ID dello script")
# Add arguments for the custom config file
parser.add_argument(
'--config', type=str, help='Load custom config file name (e.g., custom_config.json).'
)
# Add arguments for the main configuration parameters # Add arguments for the main configuration parameters
parser.add_argument( parser.add_argument(
'--add_siteName', type=bool, help='Enable or disable adding the site name to the file name (e.g., true/false).' '--add_siteName', type=bool, help='Enable or disable adding the site name to the file name (e.g., true/false).'
@ -279,6 +281,16 @@ def main(script_id = 0):
# Parse command-line arguments # Parse command-line arguments
args = parser.parse_args() args = parser.parse_args()
# If custom config file is specified, update config_manager
if args.config:
config_manager.__init__(args.config)
# TELEGRAM_BOT:
if config_manager.get_bool('DEFAULT', 'telegram_bot'):
bot = get_bot_instance()
bot.send_message(f"Avviato script {script_id}", None)
search_terms = args.search search_terms = args.search
# Map command-line arguments to the config values # Map command-line arguments to the config values
config_updates = {} config_updates = {}
@ -332,7 +344,8 @@ def main(script_id = 0):
for key, label in choice_labels.items()] for key, label in choice_labels.items()]
) + "[white])" ) + "[white])"
if TELEGRAM_BOT: # TELEGRAM_BOT
if config_manager.get_bool('DEFAULT', 'telegram_bot'):
category_legend_str = "Categorie: \n" + " | ".join([ category_legend_str = "Categorie: \n" + " | ".join([
f"{category.capitalize()}" for category in color_map.keys() f"{category.capitalize()}" for category in color_map.keys()
]) ])
@ -357,18 +370,21 @@ def main(script_id = 0):
run_function(input_to_function[category], search_terms=search_terms) run_function(input_to_function[category], search_terms=search_terms)
else: else:
if TELEGRAM_BOT: # TELEGRAM_BOT
if config_manager.get_bool('DEFAULT', 'telegram_bot'):
bot.send_message(f"Categoria non valida", None) bot.send_message(f"Categoria non valida", None)
console.print("[red]Invalid category.") console.print("[red]Invalid category.")
if NOT_CLOSE_CONSOLE: # NOT_CLOSE_CONSOLE
if config_manager.get_bool('DEFAULT', 'not_close'):
restart_script() restart_script()
else: else:
force_exit() force_exit()
if TELEGRAM_BOT: # TELEGRAM_BOT
if config_manager.get_bool('DEFAULT', 'telegram_bot'):
bot.send_message(f"Chiusura in corso", None) bot.send_message(f"Chiusura in corso", None)
# Delete script_id # Delete script_id