ServerX commited on
Commit
fa074f5
·
verified ·
1 Parent(s): f4042ee

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -25
app.py CHANGED
@@ -1,17 +1,17 @@
1
  import gradio as gr
2
- import requests, zipfile, os, shutil, io, json
3
 
4
  # FILE DI CONFIGURAZIONE
5
  SETTINGS_FILE = "settings.json"
6
  DEFAULT_SETTINGS = {
7
- "videolibrarypath": "special://profile/addon_data/plugin.video.s4me/videolibrary/",
8
  "folder_tvshows": "Serie TV",
9
  "folder_movies": "Film",
10
  "videolibrary_kodi": False
11
  }
12
 
13
  def load_settings():
14
- """Carica le impostazioni dal file JSON, se presente, altrimenti usa quelle di default."""
15
  if os.path.exists(SETTINGS_FILE):
16
  try:
17
  with open(SETTINGS_FILE, "r", encoding="utf-8") as f:
@@ -48,7 +48,7 @@ def update_settings(videolibrarypath, folder_tvshows, folder_movies, videolibrar
48
  def get_branches():
49
  """
50
  Recupera la lista dei branch disponibili dal repository GitHub.
51
- Priorità a 'stable' e 'master', il resto in ordine.
52
  """
53
  url = "https://api.github.com/repos/stream4me/addon/branches"
54
  try:
@@ -66,9 +66,9 @@ def get_branches():
66
 
67
  def update_from_zip(branch: str) -> str:
68
  """
69
- Scarica lo zip del branch selezionato da GitHub,
70
- lo estrae e sostituisce la cartella target 'plugin.video.s4me'.
71
- Viene restituito un log delle operazioni.
72
  """
73
  log = []
74
  try:
@@ -83,11 +83,11 @@ def update_from_zip(branch: str) -> str:
83
  f.write(chunk)
84
  log.append("Download completato.")
85
 
86
- # Definizione delle directory
87
- extract_base = f"plugin.video.s4me_{branch}"
88
- target_dir = "plugin.video.s4me"
89
 
90
- # Rimozione della cartella target se esiste già
91
  if os.path.isdir(target_dir):
92
  shutil.rmtree(target_dir)
93
  log.append(f"Vecchia cartella '{target_dir}' rimossa.")
@@ -105,7 +105,7 @@ def update_from_zip(branch: str) -> str:
105
  else:
106
  log.append("Errore: cartella estratta non trovata.")
107
 
108
- # Pulizia finale
109
  os.remove(zip_filename)
110
  shutil.rmtree(extract_base)
111
  log.append("Pulizia completata. Aggiornamento eseguito con successo.")
@@ -121,19 +121,16 @@ def build_interface():
121
  """Costruisce l’interfaccia completa utilizzando Gradio."""
122
  branches = get_branches()
123
 
124
- # CSS personalizzato per Smart TV: font ingranditi e margini per una migliore usabilità
125
  css_custom = """
126
  body { font-size: 32px; }
127
  .gradio-container { font-size: 32px; }
128
  .gr-button { font-size: 32px; padding: 20px; }
129
  .gr-input { font-size: 32px; padding: 10px; }
130
  .gr-dropdown { font-size: 32px; padding: 10px; }
131
- /* Aggiungi margini maggiori per facilitare la navigazione con telecomando */
132
- .gradio-container * {
133
- margin: 20px;
134
- }
135
  """
136
- # Script JS per navigazione via tasti freccia (arrow keys)
137
  js_script = """
138
  <script>
139
  document.addEventListener('keydown', function(event) {
@@ -153,11 +150,11 @@ def build_interface():
153
  """
154
 
155
  with gr.Blocks(css=css_custom, title="Stream4Me Update per Smart TV") as demo:
156
- gr.Markdown("# Stream4Me - Aggiornamento e Configurazione per Smart TV")
157
- gr.HTML(js_script) # Iniezione dello script JS per la navigazione via tasti
158
  with gr.Tabs():
159
  with gr.TabItem("Aggiornamento"):
160
- gr.Markdown("## Aggiorna l'addon dal repository GitHub")
161
  branch_dropdown = gr.Dropdown(choices=branches, value=branches[0], label="Seleziona Branch")
162
  update_button = gr.Button("Avvia Aggiornamento")
163
  update_log = gr.Textbox(label="Log di Aggiornamento", lines=10)
@@ -169,7 +166,7 @@ def build_interface():
169
  input_videolibrarypath = gr.Textbox(value=settings.get("videolibrarypath", ""), label="Percorso Video Library")
170
  input_folder_tvshows = gr.Textbox(value=settings.get("folder_tvshows", ""), label="Cartella Serie TV")
171
  input_folder_movies = gr.Textbox(value=settings.get("folder_movies", ""), label="Cartella Film")
172
- input_videolibrary_kodi = gr.Checkbox(value=settings.get("videolibrary_kodi", False), label="Integrazione Video Library Kodi")
173
  save_button = gr.Button("Salva Impostazioni")
174
  settings_status = gr.Textbox(label="Stato Impostazioni", lines=2)
175
  save_button.click(fn=update_settings,
@@ -183,12 +180,13 @@ def build_interface():
183
  with gr.TabItem("Informazioni"):
184
  gr.Markdown("## Informazioni sul Progetto")
185
  gr.Markdown("""
186
- **Stream4Me** è un progetto per gestire e aggiornare l'addon per Kodi, ora migrato ad una interfaccia web ottimizzata per Smart TV.
 
187
 
188
  **Funzionalità:**
189
- - Aggiornamento automatico dall'API GitHub.
190
  - Configurazione personalizzata tramite interfaccia web.
191
- - Ottimizzato per dispositivi Smart TV con interfaccia responsive e navigazione semplificata.
192
 
193
  **Repository:** [Stream4Me su GitHub](https://github.com/Stream4me/addon)
194
 
 
1
  import gradio as gr
2
+ import requests, zipfile, os, shutil, json
3
 
4
  # FILE DI CONFIGURAZIONE
5
  SETTINGS_FILE = "settings.json"
6
  DEFAULT_SETTINGS = {
7
+ "videolibrarypath": "path/to/videolibrary",
8
  "folder_tvshows": "Serie TV",
9
  "folder_movies": "Film",
10
  "videolibrary_kodi": False
11
  }
12
 
13
  def load_settings():
14
+ """Carica le impostazioni dal file JSON oppure restituisce quelle di default."""
15
  if os.path.exists(SETTINGS_FILE):
16
  try:
17
  with open(SETTINGS_FILE, "r", encoding="utf-8") as f:
 
48
  def get_branches():
49
  """
50
  Recupera la lista dei branch disponibili dal repository GitHub.
51
+ Ordina dando priorità a 'stable' e 'master'.
52
  """
53
  url = "https://api.github.com/repos/stream4me/addon/branches"
54
  try:
 
66
 
67
  def update_from_zip(branch: str) -> str:
68
  """
69
+ Scarica il file zip del branch selezionato da GitHub,
70
+ lo estrae in una cartella target ("s4me_app") e restituisce un log delle operazioni.
71
+ Questa funzione non utilizza alcuna dipendenza da Kodi.
72
  """
73
  log = []
74
  try:
 
83
  f.write(chunk)
84
  log.append("Download completato.")
85
 
86
+ # Definizione delle directory: estraiamo in una cartella temporanea
87
+ extract_base = f"s4me_app_{branch}"
88
+ target_dir = "s4me_app"
89
 
90
+ # Rimuovo la cartella target se esiste già
91
  if os.path.isdir(target_dir):
92
  shutil.rmtree(target_dir)
93
  log.append(f"Vecchia cartella '{target_dir}' rimossa.")
 
105
  else:
106
  log.append("Errore: cartella estratta non trovata.")
107
 
108
+ # Pulizia: rimozione del file zip e della cartella temporanea
109
  os.remove(zip_filename)
110
  shutil.rmtree(extract_base)
111
  log.append("Pulizia completata. Aggiornamento eseguito con successo.")
 
121
  """Costruisce l’interfaccia completa utilizzando Gradio."""
122
  branches = get_branches()
123
 
124
+ # CSS personalizzato per Smart TV: font e padding maggiorati per una migliore usabilità
125
  css_custom = """
126
  body { font-size: 32px; }
127
  .gradio-container { font-size: 32px; }
128
  .gr-button { font-size: 32px; padding: 20px; }
129
  .gr-input { font-size: 32px; padding: 10px; }
130
  .gr-dropdown { font-size: 32px; padding: 10px; }
131
+ .gradio-container * { margin: 20px; }
 
 
 
132
  """
133
+ # Script JS per navigazione tramite tasti freccia (utile con telecomando)
134
  js_script = """
135
  <script>
136
  document.addEventListener('keydown', function(event) {
 
150
  """
151
 
152
  with gr.Blocks(css=css_custom, title="Stream4Me Update per Smart TV") as demo:
153
+ gr.Markdown("# Stream4Me - Aggiornamento e Configurazione")
154
+ gr.HTML(js_script) # Iniezione dello script JS per la navigazione con telecomando
155
  with gr.Tabs():
156
  with gr.TabItem("Aggiornamento"):
157
+ gr.Markdown("## Aggiorna l'applicazione dal repository GitHub")
158
  branch_dropdown = gr.Dropdown(choices=branches, value=branches[0], label="Seleziona Branch")
159
  update_button = gr.Button("Avvia Aggiornamento")
160
  update_log = gr.Textbox(label="Log di Aggiornamento", lines=10)
 
166
  input_videolibrarypath = gr.Textbox(value=settings.get("videolibrarypath", ""), label="Percorso Video Library")
167
  input_folder_tvshows = gr.Textbox(value=settings.get("folder_tvshows", ""), label="Cartella Serie TV")
168
  input_folder_movies = gr.Textbox(value=settings.get("folder_movies", ""), label="Cartella Film")
169
+ input_videolibrary_kodi = gr.Checkbox(value=settings.get("videolibrary_kodi", False), label="Integrazione Video Library (Kodi)")
170
  save_button = gr.Button("Salva Impostazioni")
171
  settings_status = gr.Textbox(label="Stato Impostazioni", lines=2)
172
  save_button.click(fn=update_settings,
 
180
  with gr.TabItem("Informazioni"):
181
  gr.Markdown("## Informazioni sul Progetto")
182
  gr.Markdown("""
183
+ **Stream4Me** è un progetto stand-alone per gestire l’aggiornamento e la configurazione di un’applicazione,
184
+ completamente indipendente da Kodi e ottimizzata per Smart TV.
185
 
186
  **Funzionalità:**
187
+ - Aggiornamento automatico dal repository GitHub.
188
  - Configurazione personalizzata tramite interfaccia web.
189
+ - Interfaccia responsive, con navigazione tramite telecomando.
190
 
191
  **Repository:** [Stream4Me su GitHub](https://github.com/Stream4me/addon)
192