mirror of
https://github.com/Arrowar/StreamingCommunity.git
synced 2025-06-07 12:05:35 +00:00
fixato creazione dei file config.json e requerement.txt nella folder del bot
This commit is contained in:
parent
44b8cd61ee
commit
5e20223d95
22
README.md
22
README.md
@ -501,12 +501,28 @@ The `run-container` command mounts also the `config.json` file, so any change to
|
|||||||
|
|
||||||
## Configuration
|
## Configuration
|
||||||
|
|
||||||
You need to create an .env file and enter your Telegram token
|
The bot was created to replace terminal commands and allow interaction via Telegram. Each download runs within a screen session, enabling multiple downloads to run simultaneously.
|
||||||
|
|
||||||
and user ID to authorize only one user to use it
|
To run the bot in the background, simply start it inside a screen session and then press Ctrl + A, followed by D, to detach from the session without stopping the bot.
|
||||||
|
|
||||||
|
Command Functions:
|
||||||
|
|
||||||
|
🔹 /start – Starts a new search for a download. This command performs the same operations as manually running the script in the terminal with test_run.py.
|
||||||
|
|
||||||
|
🔹 /list – Displays the status of active downloads, with options to:
|
||||||
|
|
||||||
|
Stop an incorrect download using /stop <ID>.
|
||||||
|
|
||||||
|
View the real-time output of a download using /screen <ID>.
|
||||||
|
|
||||||
|
⚠ Warning: If a download is interrupted, incomplete files may remain in the folder specified in config.json. These files must be deleted manually to avoid storage or management issues.
|
||||||
|
|
||||||
|
🛠 Configuration: Currently, the bot's settings are stored in the config.json file, which is located in the same directory as the telegram_bot.py script.
|
||||||
|
|
||||||
## .env Example:
|
## .env Example:
|
||||||
|
|
||||||
|
You need to create an .env file and enter your Telegram token and user ID to authorize only one user to use it
|
||||||
|
|
||||||
```
|
```
|
||||||
TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
|
TOKEN_TELEGRAM=IlTuo2131TOKEN$12D3Telegram
|
||||||
AUTHORIZED_USER_ID=12345678
|
AUTHORIZED_USER_ID=12345678
|
||||||
@ -521,6 +537,8 @@ pip install -r requirements.txt
|
|||||||
|
|
||||||
## On Linux/MacOS:
|
## On Linux/MacOS:
|
||||||
|
|
||||||
|
Start the bot from the folder /StreamingCommunity/TelegramHelp
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python3 telegram_bot.py
|
python3 telegram_bot.py
|
||||||
```
|
```
|
||||||
|
@ -8,9 +8,7 @@ from StreamingCommunity.Util.console import console
|
|||||||
from StreamingCommunity.Util.os import os_manager
|
from StreamingCommunity.Util.os import os_manager
|
||||||
from StreamingCommunity.Util.message import start_message
|
from StreamingCommunity.Util.message import start_message
|
||||||
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
||||||
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
|
from StreamingCommunity.TelegramHelp.telegram_bot import TelegramSession, get_bot_instance
|
||||||
from StreamingCommunity.TelegramHelp.session import get_session, updateScriptId, deleteScriptId
|
|
||||||
|
|
||||||
|
|
||||||
# Logic class
|
# Logic class
|
||||||
from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
|
from StreamingCommunity.Api.Template.Class.SearchType import MediaItem
|
||||||
@ -40,9 +38,9 @@ def download_film(select_title: MediaItem) -> str:
|
|||||||
bot.send_message(f"Download in corso:\n{select_title.name}", None)
|
bot.send_message(f"Download in corso:\n{select_title.name}", None)
|
||||||
|
|
||||||
# Get script_id
|
# Get script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
updateScriptId(script_id, select_title.name)
|
TelegramSession.updateScriptId(script_id, select_title.name)
|
||||||
|
|
||||||
# Start message and display film information
|
# Start message and display film information
|
||||||
start_message()
|
start_message()
|
||||||
@ -68,9 +66,9 @@ def download_film(select_title: MediaItem) -> str:
|
|||||||
if TELEGRAM_BOT:
|
if TELEGRAM_BOT:
|
||||||
|
|
||||||
# Delete script_id
|
# Delete script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
deleteScriptId(script_id)
|
TelegramSession.deleteScriptId(script_id)
|
||||||
|
|
||||||
if "error" in r_proc.keys():
|
if "error" in r_proc.keys():
|
||||||
try:
|
try:
|
||||||
|
@ -10,8 +10,7 @@ from StreamingCommunity.Util.console import console, msg
|
|||||||
from StreamingCommunity.Util.os import os_manager
|
from StreamingCommunity.Util.os import os_manager
|
||||||
from StreamingCommunity.Util.message import start_message
|
from StreamingCommunity.Util.message import start_message
|
||||||
from StreamingCommunity.Lib.Downloader import MP4_downloader
|
from StreamingCommunity.Lib.Downloader import MP4_downloader
|
||||||
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
|
from StreamingCommunity.TelegramHelp.telegram_bot import TelegramSession, get_bot_instance
|
||||||
from StreamingCommunity.TelegramHelp.session import get_session, updateScriptId, deleteScriptId
|
|
||||||
|
|
||||||
|
|
||||||
# Logic class
|
# Logic class
|
||||||
@ -57,9 +56,9 @@ def download_episode(index_select: int, scrape_serie: ScrapeSerieAnime, video_so
|
|||||||
bot.send_message(f"Download in corso:\nTitolo:{scrape_serie.series_name}\nEpisodio: {obj_episode.number}", None)
|
bot.send_message(f"Download in corso:\nTitolo:{scrape_serie.series_name}\nEpisodio: {obj_episode.number}", None)
|
||||||
|
|
||||||
# Get script_id
|
# Get script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
updateScriptId(script_id, f"{scrape_serie.series_name} - E{obj_episode.number}")
|
TelegramSession.updateScriptId(script_id, f"{scrape_serie.series_name} - E{obj_episode.number}")
|
||||||
|
|
||||||
# Collect mp4 url
|
# Collect mp4 url
|
||||||
video_source.get_embed(obj_episode.id)
|
video_source.get_embed(obj_episode.id)
|
||||||
@ -147,9 +146,9 @@ def download_series(select_title: MediaItem):
|
|||||||
bot.send_message(f"Finito di scaricare tutte le serie e episodi", None)
|
bot.send_message(f"Finito di scaricare tutte le serie e episodi", None)
|
||||||
|
|
||||||
# Get script_id
|
# Get script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
deleteScriptId(script_id)
|
TelegramSession.deleteScriptId(script_id)
|
||||||
|
|
||||||
|
|
||||||
def download_film(select_title: MediaItem):
|
def download_film(select_title: MediaItem):
|
||||||
|
@ -8,8 +8,7 @@ from StreamingCommunity.Util.console import console
|
|||||||
from StreamingCommunity.Util.os import os_manager
|
from StreamingCommunity.Util.os import os_manager
|
||||||
from StreamingCommunity.Util.message import start_message
|
from StreamingCommunity.Util.message import start_message
|
||||||
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
||||||
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
|
from StreamingCommunity.TelegramHelp.telegram_bot import TelegramSession, get_bot_instance
|
||||||
from StreamingCommunity.TelegramHelp.session import get_session, updateScriptId, deleteScriptId
|
|
||||||
|
|
||||||
|
|
||||||
# Logic class
|
# Logic class
|
||||||
@ -43,9 +42,9 @@ def download_film(select_title: MediaItem) -> str:
|
|||||||
console.print(f"## Download: [red]{select_title.name} ##")
|
console.print(f"## Download: [red]{select_title.name} ##")
|
||||||
|
|
||||||
# Get script_id
|
# Get script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
updateScriptId(script_id, select_title.name)
|
TelegramSession.updateScriptId(script_id, select_title.name)
|
||||||
|
|
||||||
# Start message and display film information
|
# Start message and display film information
|
||||||
start_message()
|
start_message()
|
||||||
@ -73,9 +72,9 @@ def download_film(select_title: MediaItem) -> str:
|
|||||||
if TELEGRAM_BOT:
|
if TELEGRAM_BOT:
|
||||||
|
|
||||||
# Delete script_id
|
# Delete script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
deleteScriptId(script_id)
|
TelegramSession.deleteScriptId(script_id)
|
||||||
|
|
||||||
if "error" in r_proc.keys():
|
if "error" in r_proc.keys():
|
||||||
try:
|
try:
|
||||||
|
@ -10,9 +10,7 @@ from StreamingCommunity.Util.console import console, msg
|
|||||||
from StreamingCommunity.Util.message import start_message
|
from StreamingCommunity.Util.message import start_message
|
||||||
from StreamingCommunity.Util.table import TVShowManager
|
from StreamingCommunity.Util.table import TVShowManager
|
||||||
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
from StreamingCommunity.Lib.Downloader import HLS_Downloader
|
||||||
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
|
from StreamingCommunity.TelegramHelp.telegram_bot import TelegramSession, get_bot_instance
|
||||||
from StreamingCommunity.TelegramHelp.session import get_session, updateScriptId, deleteScriptId
|
|
||||||
|
|
||||||
|
|
||||||
# Logic class
|
# Logic class
|
||||||
from .util.ScrapeSerie import ScrapeSerie
|
from .util.ScrapeSerie import ScrapeSerie
|
||||||
@ -58,9 +56,9 @@ def download_video(index_season_selected: int, index_episode_selected: int, scra
|
|||||||
)
|
)
|
||||||
|
|
||||||
# Get script_id and update it
|
# Get script_id and update it
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
updateScriptId(script_id, f"{scrape_serie.series_name} - S{index_season_selected} - E{index_episode_selected} - {obj_episode.name}")
|
TelegramSession.updateScriptId(script_id, f"{scrape_serie.series_name} - S{index_season_selected} - E{index_episode_selected} - {obj_episode.name}")
|
||||||
|
|
||||||
# Define filename and path for the downloaded video
|
# Define filename and path for the downloaded video
|
||||||
mp4_name = f"{map_episode_title(scrape_serie.series_name, index_season_selected, index_episode_selected, obj_episode.name)}.mp4"
|
mp4_name = f"{map_episode_title(scrape_serie.series_name, index_season_selected, index_episode_selected, obj_episode.name)}.mp4"
|
||||||
@ -204,9 +202,9 @@ def download_series(select_season: MediaItem, version: str) -> None:
|
|||||||
bot.send_message(f"Finito di scaricare tutte le serie e episodi", None)
|
bot.send_message(f"Finito di scaricare tutte le serie e episodi", None)
|
||||||
|
|
||||||
# Get script_id
|
# Get script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
deleteScriptId(script_id)
|
TelegramSession.deleteScriptId(script_id)
|
||||||
|
|
||||||
|
|
||||||
def display_episodes_list(scrape_serie) -> str:
|
def display_episodes_list(scrape_serie) -> str:
|
||||||
|
@ -426,7 +426,7 @@ class HLS_Downloader:
|
|||||||
'stopped': False
|
'stopped': False
|
||||||
}
|
}
|
||||||
if TELEGRAM_BOT:
|
if TELEGRAM_BOT:
|
||||||
bot.send_message(response)
|
bot.send_message(f"Contenuto già scaricato!", None)
|
||||||
return response
|
return response
|
||||||
|
|
||||||
self.path_manager.setup_directories()
|
self.path_manager.setup_directories()
|
||||||
|
@ -1,93 +0,0 @@
|
|||||||
{
|
|
||||||
"DEFAULT": {
|
|
||||||
"debug": false,
|
|
||||||
"log_file": "app.log",
|
|
||||||
"log_to_file": true,
|
|
||||||
"show_message": true,
|
|
||||||
"clean_console": true,
|
|
||||||
"root_path": "Video",
|
|
||||||
"movie_folder_name": "Movie",
|
|
||||||
"serie_folder_name": "Serie",
|
|
||||||
"anime_folder_name": "Anime",
|
|
||||||
"map_episode_name": "E%(episode)_%(episode_name)",
|
|
||||||
"config_qbit_tor": {
|
|
||||||
"host": "192.168.1.99",
|
|
||||||
"port": "7060",
|
|
||||||
"user": "admin",
|
|
||||||
"pass": "adminadmin"
|
|
||||||
},
|
|
||||||
"add_siteName": false,
|
|
||||||
"disable_searchDomain": false,
|
|
||||||
"not_close": false,
|
|
||||||
"telegram_bot": false
|
|
||||||
},
|
|
||||||
"REQUESTS": {
|
|
||||||
"timeout": 20,
|
|
||||||
"max_retry": 8,
|
|
||||||
"proxy_start_min": 0.1,
|
|
||||||
"proxy_start_max": 0.5
|
|
||||||
},
|
|
||||||
"M3U8_DOWNLOAD": {
|
|
||||||
"tqdm_delay": 0.01,
|
|
||||||
"default_video_workser": 12,
|
|
||||||
"default_audio_workser": 12,
|
|
||||||
"download_audio": true,
|
|
||||||
"merge_audio": true,
|
|
||||||
"specific_list_audio": [
|
|
||||||
"ita"
|
|
||||||
],
|
|
||||||
"download_subtitle": true,
|
|
||||||
"merge_subs": true,
|
|
||||||
"specific_list_subtitles": [
|
|
||||||
"eng",
|
|
||||||
"spa"
|
|
||||||
],
|
|
||||||
"cleanup_tmp_folder": true
|
|
||||||
},
|
|
||||||
"M3U8_CONVERSION": {
|
|
||||||
"use_codec": false,
|
|
||||||
"use_vcodec": true,
|
|
||||||
"use_acodec": true,
|
|
||||||
"use_bitrate": true,
|
|
||||||
"use_gpu": false,
|
|
||||||
"default_preset": "ultrafast"
|
|
||||||
},
|
|
||||||
"M3U8_PARSER": {
|
|
||||||
"force_resolution": -1,
|
|
||||||
"get_only_link": false
|
|
||||||
},
|
|
||||||
"SITE": {
|
|
||||||
"streamingcommunity": {
|
|
||||||
"domain": "paris"
|
|
||||||
},
|
|
||||||
"altadefinizionegratis": {
|
|
||||||
"domain": "pro"
|
|
||||||
},
|
|
||||||
"guardaserie": {
|
|
||||||
"domain": "meme"
|
|
||||||
},
|
|
||||||
"mostraguarda": {
|
|
||||||
"domain": "stream"
|
|
||||||
},
|
|
||||||
"ddlstreamitaly": {
|
|
||||||
"domain": "co",
|
|
||||||
"extra": {
|
|
||||||
"ips4_device_key": "",
|
|
||||||
"ips4_member_id": "",
|
|
||||||
"ips4_login_key": ""
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"animeunity": {
|
|
||||||
"domain": "so"
|
|
||||||
},
|
|
||||||
"cb01new": {
|
|
||||||
"domain": "media"
|
|
||||||
},
|
|
||||||
"1337xx": {
|
|
||||||
"domain": "to"
|
|
||||||
},
|
|
||||||
"ilcorsaronero": {
|
|
||||||
"domain": "link"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,82 +0,0 @@
|
|||||||
# 04.02.25
|
|
||||||
# Made by: @GiuPic
|
|
||||||
|
|
||||||
import json
|
|
||||||
import time
|
|
||||||
from typing import Optional
|
|
||||||
|
|
||||||
class RequestManager:
|
|
||||||
_instance = None
|
|
||||||
|
|
||||||
def __new__(cls, *args, **kwargs):
|
|
||||||
if not cls._instance:
|
|
||||||
cls._instance = super().__new__(cls)
|
|
||||||
return cls._instance
|
|
||||||
|
|
||||||
def __init__(self, json_file: str = "active_requests.json"):
|
|
||||||
if not hasattr(self, 'initialized'):
|
|
||||||
self.json_file = json_file
|
|
||||||
self.initialized = True
|
|
||||||
self.on_response_callback = None
|
|
||||||
|
|
||||||
def create_request(self, type: str) -> str:
|
|
||||||
request_data = {
|
|
||||||
"type": type,
|
|
||||||
"response": None,
|
|
||||||
"timestamp": time.time()
|
|
||||||
}
|
|
||||||
|
|
||||||
with open(self.json_file, "w") as f:
|
|
||||||
json.dump(request_data, f)
|
|
||||||
|
|
||||||
return "Ok"
|
|
||||||
|
|
||||||
def save_response(self, message_text: str) -> bool:
|
|
||||||
try:
|
|
||||||
# Carica il file JSON
|
|
||||||
with open(self.json_file, "r") as f:
|
|
||||||
data = json.load(f)
|
|
||||||
|
|
||||||
# Controlla se esiste la chiave 'type' e se la risposta è presente
|
|
||||||
if "type" in data and "response" in data:
|
|
||||||
data["response"] = message_text # Aggiorna la risposta
|
|
||||||
|
|
||||||
with open(self.json_file, "w") as f:
|
|
||||||
json.dump(data, f, indent=4)
|
|
||||||
|
|
||||||
return True
|
|
||||||
else:
|
|
||||||
return False
|
|
||||||
|
|
||||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
|
||||||
print(f"⚠️ save_response - errore: {e}")
|
|
||||||
return False
|
|
||||||
|
|
||||||
def get_response(self) -> Optional[str]:
|
|
||||||
try:
|
|
||||||
with open(self.json_file, "r") as f:
|
|
||||||
data = json.load(f)
|
|
||||||
|
|
||||||
# Verifica se esiste la chiave "response"
|
|
||||||
if "response" in data:
|
|
||||||
response = data["response"] # Ottieni la risposta direttamente
|
|
||||||
|
|
||||||
if response is not None and self.on_response_callback:
|
|
||||||
self.on_response_callback(response)
|
|
||||||
|
|
||||||
return response
|
|
||||||
|
|
||||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
|
||||||
print(f"get_response - errore: {e}")
|
|
||||||
return None
|
|
||||||
|
|
||||||
def clear_file(self) -> bool:
|
|
||||||
try:
|
|
||||||
with open(self.json_file, "w") as f:
|
|
||||||
json.dump({}, f)
|
|
||||||
print(f"File {self.json_file} è stato svuotato con successo.")
|
|
||||||
return True
|
|
||||||
|
|
||||||
except Exception as e:
|
|
||||||
print(f"⚠️ clear_file - errore: {e}")
|
|
||||||
return False
|
|
@ -1,16 +0,0 @@
|
|||||||
httpx
|
|
||||||
bs4
|
|
||||||
rich
|
|
||||||
tqdm
|
|
||||||
m3u8
|
|
||||||
psutil
|
|
||||||
unidecode
|
|
||||||
jsbeautifier
|
|
||||||
pathvalidate
|
|
||||||
pycryptodomex
|
|
||||||
googlesearch-python
|
|
||||||
fake-useragent<2.0.0
|
|
||||||
qbittorrent-api
|
|
||||||
python-qbittorrent
|
|
||||||
Pillow
|
|
||||||
pyTelegramBotAPI
|
|
@ -1,56 +0,0 @@
|
|||||||
# 04.02.25
|
|
||||||
# Made by: @GiuPic
|
|
||||||
|
|
||||||
import json
|
|
||||||
|
|
||||||
session_data = {}
|
|
||||||
|
|
||||||
def set_session(value):
|
|
||||||
session_data['script_id'] = value
|
|
||||||
|
|
||||||
def get_session():
|
|
||||||
return session_data.get('script_id', 'unknown')
|
|
||||||
|
|
||||||
def updateScriptId(screen_id, titolo):
|
|
||||||
json_file = "../../scripts.json"
|
|
||||||
try:
|
|
||||||
with open(json_file, 'r') as f:
|
|
||||||
scripts_data = json.load(f)
|
|
||||||
except FileNotFoundError:
|
|
||||||
scripts_data = []
|
|
||||||
|
|
||||||
# cerco lo script con lo screen_id
|
|
||||||
for script in scripts_data:
|
|
||||||
if script["screen_id"] == screen_id:
|
|
||||||
# se trovo il match, aggiorno il titolo
|
|
||||||
script["titolo"] = titolo
|
|
||||||
|
|
||||||
# aggiorno il file json
|
|
||||||
with open(json_file, 'w') as f:
|
|
||||||
json.dump(scripts_data, f, indent=4)
|
|
||||||
|
|
||||||
return
|
|
||||||
|
|
||||||
print(f"Screen_id {screen_id} non trovato.")
|
|
||||||
|
|
||||||
def deleteScriptId(screen_id):
|
|
||||||
json_file = "../../scripts.json"
|
|
||||||
try:
|
|
||||||
with open(json_file, 'r') as f:
|
|
||||||
scripts_data = json.load(f)
|
|
||||||
except FileNotFoundError:
|
|
||||||
scripts_data = []
|
|
||||||
|
|
||||||
for script in scripts_data:
|
|
||||||
if script["screen_id"] == screen_id:
|
|
||||||
# se trovo il match, elimino lo script
|
|
||||||
scripts_data.remove(script)
|
|
||||||
|
|
||||||
# aggiorno il file json
|
|
||||||
with open(json_file, 'w') as f:
|
|
||||||
json.dump(scripts_data, f, indent=4)
|
|
||||||
|
|
||||||
print(f"Script eliminato per screen_id {screen_id}")
|
|
||||||
return
|
|
||||||
|
|
||||||
print(f"Screen_id {screen_id} non trovato.")
|
|
@ -1,4 +1,4 @@
|
|||||||
# 04.02.25
|
# 04.02.26
|
||||||
# Made by: @GiuPic
|
# Made by: @GiuPic
|
||||||
|
|
||||||
import os
|
import os
|
||||||
@ -9,16 +9,141 @@ import uuid
|
|||||||
import json
|
import json
|
||||||
import threading
|
import threading
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import threading
|
||||||
|
from typing import Optional
|
||||||
|
|
||||||
# External libraries
|
# External libraries
|
||||||
import telebot
|
import telebot
|
||||||
|
|
||||||
|
session_data = {}
|
||||||
|
|
||||||
# Fix import
|
class TelegramSession:
|
||||||
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "..")))
|
|
||||||
from StreamingCommunity.TelegramHelp.request_manager import RequestManager
|
def set_session(value):
|
||||||
import threading
|
session_data['script_id'] = value
|
||||||
|
|
||||||
|
def get_session():
|
||||||
|
return session_data.get('script_id', 'unknown')
|
||||||
|
|
||||||
|
def updateScriptId(screen_id, titolo):
|
||||||
|
json_file = "../../scripts.json"
|
||||||
|
try:
|
||||||
|
with open(json_file, 'r') as f:
|
||||||
|
scripts_data = json.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
scripts_data = []
|
||||||
|
|
||||||
|
# cerco lo script con lo screen_id
|
||||||
|
for script in scripts_data:
|
||||||
|
if script["screen_id"] == screen_id:
|
||||||
|
# se trovo il match, aggiorno il titolo
|
||||||
|
script["titolo"] = titolo
|
||||||
|
|
||||||
|
# aggiorno il file json
|
||||||
|
with open(json_file, 'w') as f:
|
||||||
|
json.dump(scripts_data, f, indent=4)
|
||||||
|
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"Screen_id {screen_id} non trovato.")
|
||||||
|
|
||||||
|
def deleteScriptId(screen_id):
|
||||||
|
json_file = "../../scripts.json"
|
||||||
|
try:
|
||||||
|
with open(json_file, 'r') as f:
|
||||||
|
scripts_data = json.load(f)
|
||||||
|
except FileNotFoundError:
|
||||||
|
scripts_data = []
|
||||||
|
|
||||||
|
for script in scripts_data:
|
||||||
|
if script["screen_id"] == screen_id:
|
||||||
|
# se trovo il match, elimino lo script
|
||||||
|
scripts_data.remove(script)
|
||||||
|
|
||||||
|
# aggiorno il file json
|
||||||
|
with open(json_file, 'w') as f:
|
||||||
|
json.dump(scripts_data, f, indent=4)
|
||||||
|
|
||||||
|
print(f"Script eliminato per screen_id {screen_id}")
|
||||||
|
return
|
||||||
|
|
||||||
|
print(f"Screen_id {screen_id} non trovato.")
|
||||||
|
|
||||||
|
class TelegramRequestManager:
|
||||||
|
_instance = None
|
||||||
|
|
||||||
|
def __new__(cls, *args, **kwargs):
|
||||||
|
if not cls._instance:
|
||||||
|
cls._instance = super().__new__(cls)
|
||||||
|
return cls._instance
|
||||||
|
|
||||||
|
def __init__(self, json_file: str = "active_requests.json"):
|
||||||
|
if not hasattr(self, 'initialized'):
|
||||||
|
self.json_file = json_file
|
||||||
|
self.initialized = True
|
||||||
|
self.on_response_callback = None
|
||||||
|
|
||||||
|
def create_request(self, type: str) -> str:
|
||||||
|
request_data = {
|
||||||
|
"type": type,
|
||||||
|
"response": None,
|
||||||
|
"timestamp": time.time()
|
||||||
|
}
|
||||||
|
|
||||||
|
with open(self.json_file, "w") as f:
|
||||||
|
json.dump(request_data, f)
|
||||||
|
|
||||||
|
return "Ok"
|
||||||
|
|
||||||
|
def save_response(self, message_text: str) -> bool:
|
||||||
|
try:
|
||||||
|
# Carica il file JSON
|
||||||
|
with open(self.json_file, "r") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
# Controlla se esiste la chiave 'type' e se la risposta è presente
|
||||||
|
if "type" in data and "response" in data:
|
||||||
|
data["response"] = message_text # Aggiorna la risposta
|
||||||
|
|
||||||
|
with open(self.json_file, "w") as f:
|
||||||
|
json.dump(data, f, indent=4)
|
||||||
|
|
||||||
|
return True
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||||
|
print(f"⚠️ save_response - errore: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
|
def get_response(self) -> Optional[str]:
|
||||||
|
try:
|
||||||
|
with open(self.json_file, "r") as f:
|
||||||
|
data = json.load(f)
|
||||||
|
|
||||||
|
# Verifica se esiste la chiave "response"
|
||||||
|
if "response" in data:
|
||||||
|
response = data["response"] # Ottieni la risposta direttamente
|
||||||
|
|
||||||
|
if response is not None and self.on_response_callback:
|
||||||
|
self.on_response_callback(response)
|
||||||
|
|
||||||
|
return response
|
||||||
|
|
||||||
|
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||||
|
print(f"get_response - errore: {e}")
|
||||||
|
return None
|
||||||
|
|
||||||
|
def clear_file(self) -> bool:
|
||||||
|
try:
|
||||||
|
with open(self.json_file, "w") as f:
|
||||||
|
json.dump({}, f)
|
||||||
|
print(f"File {self.json_file} è stato svuotato con successo.")
|
||||||
|
return True
|
||||||
|
|
||||||
|
except Exception as e:
|
||||||
|
print(f"⚠️ clear_file - errore: {e}")
|
||||||
|
return False
|
||||||
|
|
||||||
# Funzione per caricare variabili da un file .env
|
# Funzione per caricare variabili da un file .env
|
||||||
def load_env(file_path="../../.env"):
|
def load_env(file_path="../../.env"):
|
||||||
@ -140,7 +265,7 @@ class TelegramBot:
|
|||||||
self.authorized_users = authorized_users
|
self.authorized_users = authorized_users
|
||||||
self.chat_id = authorized_users
|
self.chat_id = authorized_users
|
||||||
self.bot = telebot.TeleBot(token)
|
self.bot = telebot.TeleBot(token)
|
||||||
self.request_manager = RequestManager()
|
self.request_manager = TelegramRequestManager()
|
||||||
|
|
||||||
# Registra gli handler
|
# Registra gli handler
|
||||||
self.register_handlers()
|
self.register_handlers()
|
||||||
|
@ -4,17 +4,18 @@ import os
|
|||||||
import sys
|
import sys
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
from pathlib import Path
|
||||||
from typing import Any, List
|
from typing import Any, List
|
||||||
|
|
||||||
|
|
||||||
class ConfigManager:
|
class ConfigManager:
|
||||||
def __init__(self, file_path: str = 'config.json') -> None:
|
def __init__(self, file_name: str = 'config.json') -> None:
|
||||||
"""Initialize the ConfigManager.
|
"""Initialize the ConfigManager.
|
||||||
|
|
||||||
Parameters:
|
Parameters:
|
||||||
- file_path (str, optional): The path to the configuration file. Default is 'config.json'.
|
- file_path (str, optional): The path to the configuration file. Default is 'config.json'.
|
||||||
"""
|
"""
|
||||||
self.file_path = file_path
|
self.file_path = Path(__file__).parent.parent.parent / file_name
|
||||||
self.config = {}
|
self.config = {}
|
||||||
self.cache = {}
|
self.cache = {}
|
||||||
|
|
||||||
|
@ -13,6 +13,7 @@ import subprocess
|
|||||||
import contextlib
|
import contextlib
|
||||||
import urllib.request
|
import urllib.request
|
||||||
import importlib.metadata
|
import importlib.metadata
|
||||||
|
from pathlib import Path
|
||||||
|
|
||||||
|
|
||||||
# External library
|
# External library
|
||||||
@ -452,6 +453,8 @@ class OsSummary:
|
|||||||
if not getattr(sys, 'frozen', False):
|
if not getattr(sys, 'frozen', False):
|
||||||
requirements_file = 'requirements.txt'
|
requirements_file = 'requirements.txt'
|
||||||
|
|
||||||
|
requirements_file = Path(__file__).parent.parent.parent / requirements_file
|
||||||
|
|
||||||
if not os.path.exists(requirements_file):
|
if not os.path.exists(requirements_file):
|
||||||
self.download_requirements(
|
self.download_requirements(
|
||||||
'https://raw.githubusercontent.com/Arrowar/StreamingCommunity/refs/heads/main/requirements.txt',
|
'https://raw.githubusercontent.com/Arrowar/StreamingCommunity/refs/heads/main/requirements.txt',
|
||||||
|
@ -22,8 +22,7 @@ from StreamingCommunity.Util.logger import Logger
|
|||||||
|
|
||||||
|
|
||||||
# Telegram util
|
# Telegram util
|
||||||
from StreamingCommunity.TelegramHelp.session import get_session, deleteScriptId
|
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance, TelegramSession
|
||||||
from StreamingCommunity.TelegramHelp.telegram_bot import get_bot_instance
|
|
||||||
|
|
||||||
|
|
||||||
# Config
|
# Config
|
||||||
@ -347,6 +346,6 @@ def main(script_id = 0):
|
|||||||
bot.send_message(f"Chiusura in corso", None)
|
bot.send_message(f"Chiusura in corso", None)
|
||||||
|
|
||||||
# Delete script_id
|
# Delete script_id
|
||||||
script_id = get_session()
|
script_id = TelegramSession.get_session()
|
||||||
if script_id != "unknown":
|
if script_id != "unknown":
|
||||||
deleteScriptId(script_id)
|
TelegramSession.deleteScriptId(script_id)
|
||||||
|
@ -3,19 +3,17 @@
|
|||||||
import sys
|
import sys
|
||||||
from StreamingCommunity.run import main
|
from StreamingCommunity.run import main
|
||||||
from StreamingCommunity.Util._jsonConfig import config_manager
|
from StreamingCommunity.Util._jsonConfig import config_manager
|
||||||
from StreamingCommunity.TelegramHelp.request_manager import RequestManager
|
from StreamingCommunity.TelegramHelp.telegram_bot import TelegramRequestManager, TelegramSession
|
||||||
from StreamingCommunity.TelegramHelp.session import set_session
|
|
||||||
|
|
||||||
# Svuoto il file
|
# Svuoto il file
|
||||||
TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
|
TELEGRAM_BOT = config_manager.get_bool('DEFAULT', 'telegram_bot')
|
||||||
|
|
||||||
if TELEGRAM_BOT:
|
if TELEGRAM_BOT:
|
||||||
request_manager = RequestManager()
|
request_manager = TelegramRequestManager()
|
||||||
request_manager.clear_file()
|
request_manager.clear_file()
|
||||||
script_id = sys.argv[1] if len(sys.argv) > 1 else "unknown"
|
script_id = sys.argv[1] if len(sys.argv) > 1 else "unknown"
|
||||||
|
|
||||||
set_session(script_id)
|
TelegramSession.set_session(script_id)
|
||||||
main(script_id)
|
main(script_id)
|
||||||
|
|
||||||
else:
|
else:
|
||||||
main()
|
main()
|
Loading…
x
Reference in New Issue
Block a user