Skip to content

Commit 182f4c4

Browse files
Magnetarmangithub-actions
andauthored
V 3.0 - **Release**
* V 3.0 Alpha - Add "main.py" - Adesso conviene lanciare "main.py" che fa un elenco di tutti gli script presenti nella repo, - Eliminato il bisogno di ricordarsi il nome dello script * V 3.0.1 Alpha - Add Possibilità di scegliere lo script oppure digitare exit per uscire * V 3.0.2 Alpha - Fix "Readme.md" posizione errata * V 3.1.0 Beta - Add organizzazione in ordine alfabetico degli script - Add breve descrizione degli script nella lista di selezione - Update "Readme.md" con info sulla V 3.0 * V 3.1.1 Beta - Update "Readme.md" * V 3.1.2 Alpha - Add "install.ps1" installa le corrette versioni di python e fa partire il "main.py" tutto in maniera automatica - Test di automazione in corso... * V 3.1.3 Alpha - Update "main.py" - Add installazione di Python 3.10 necessario per alcuni script - Update "transcribe_wav.py" - Fix adesso lo script viene eseguito con la corretta versione di python in maniera automatica * chore: auto-update requirements.txt * V 3.1.4 Alpha - Update "main.py" - Eliminati i controlli sulle versioni di python che bloccano lo script - Spostati i controlli nel file "install.ps1" * V 3.1.5 Alpha - Update "install.ps1" - Aggiornato il file di installazione pe includere solo python 3.10 release con cui tutti gli script funzionano dai test senza errori, ulteriori test sono in corso - Update "transcribe_wav.py" - Aggiunta la possibilità dello script di utilizzare python 3.10 anche se sono installate versione successive o diverse in modo da lavorare correttamente col motore wishper. - Add possibilità dello script di convertire file in ".flac", ".aac",".mp3" di essere convertiti in .wave per funzionare correttamente con wishper * chore: auto-update requirements.txt * V 3.1.6 Beta - Update "transcribe_wav.py" - Aggiunti ulteriori check in modo che wishper venga correttamente inizializzato e lo script funzioni sempre * chore: auto-update requirements.txt * V 3.1.7 Beta - Add "codec_expoler.py" with GUI - Add "png_converter.py" - Update "README.md" documentation for the new scripts. * chore: auto-update requirements.txt --------- Co-authored-by: github-actions <[email protected]>
1 parent d18433c commit 182f4c4

18 files changed

+878
-494
lines changed

README.md

Lines changed: 358 additions & 404 deletions
Large diffs are not rendered by default.

Transcribe_wav.py

Lines changed: 0 additions & 83 deletions
This file was deleted.

install.ps1

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
# Funzione per verificare se PowerShell è in modalità amministratore
2+
function Check-Admin {
3+
$isAdmin = [bool]([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
4+
return $isAdmin
5+
}
6+
7+
# Se PowerShell non è in modalità amministratore, chiedi i privilegi di amministratore
8+
if (-not (Check-Admin)) {
9+
Write-Host "PowerShell non è in modalità amministratore. Avvio con privilegi di amministratore..."
10+
11+
# Crea un nuovo processo PowerShell con privilegi di amministratore
12+
Start-Process powershell -ArgumentList "Start-Process powershell -Verb runAs -ArgumentList '$PSCommandPath'" -Verb runAs
13+
exit
14+
}
15+
16+
# Funzione per verificare se una versione specifica di Python è installata
17+
function Check-PythonVersion {
18+
param (
19+
[string]$version
20+
)
21+
22+
$pythonPath = Get-Command "python$version" -ErrorAction SilentlyContinue
23+
return $pythonPath -ne $null
24+
}
25+
26+
# Funzione per installare Python tramite winget
27+
function Install-Python {
28+
param (
29+
[string]$version
30+
)
31+
32+
Write-Host "Installando Python $version tramite winget..."
33+
switch ($version) {
34+
"3.10" { winget install --id Python.Python.3.10 -e --source winget }
35+
default { Write-Host "Versione Python non supportata. Procedo con Python.Launcher." }
36+
}
37+
}
38+
39+
# Controllo e installazione per Python 3.10
40+
$pythonVersion = "3.10"
41+
if (-not (Check-PythonVersion -version $pythonVersion)) {
42+
Install-Python -version $pythonVersion
43+
} else {
44+
Write-Host "Python $pythonVersion è già installato."
45+
}
46+
47+
# Visualizzare il messaggio "Attendere..." per 2 secondi
48+
Write-Host "Attendere..."
49+
Start-Sleep -Seconds 2
50+
51+
# Ottieni il percorso della cartella in cui è stato eseguito lo script PowerShell
52+
$scriptDir = Get-Location
53+
54+
# Verifica se il file main.py esiste nella stessa cartella dello script PowerShell
55+
$mainScript = Join-Path $scriptDir "main.py"
56+
if (Test-Path $mainScript) {
57+
Write-Host "Eseguo main.py..."
58+
59+
# Esegui main.py nella stessa finestra di PowerShell
60+
py $mainScript
61+
} else {
62+
Write-Host "Il file main.py non è stato trovato nella stessa cartella dello script PowerShell."
63+
}

main.py

Lines changed: 115 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,115 @@
1+
#!/usr/bin/env python3
2+
import os
3+
import sys
4+
import subprocess
5+
6+
def install_requirements():
7+
"""
8+
Installa le dipendenze presenti nel file requirements.txt.
9+
Se il file non esiste, stampa un messaggio di avviso.
10+
"""
11+
requirements_file = 'requirements.txt'
12+
13+
if os.path.isfile(requirements_file):
14+
print("Trovato requirements.txt. Installazione delle dipendenze...")
15+
try:
16+
subprocess.run([sys.executable, "-m", "pip", "install", "-r", requirements_file], check=True)
17+
print("Dipendenze installate con successo.")
18+
except subprocess.CalledProcessError as e:
19+
print(f"Errore durante l'installazione delle dipendenze: {e}")
20+
else:
21+
print("requirements.txt non trovato. Nessuna dipendenza da installare.")
22+
23+
def get_scripts(directory):
24+
"""
25+
Restituisce una lista di file .py presenti in 'directory',
26+
escludendo questo script principale (main.py).
27+
La lista viene ordinata alfabeticamente.
28+
"""
29+
scripts = []
30+
for file in os.listdir(directory):
31+
if file.endswith('.py') and file != 'main.py':
32+
scripts.append(file)
33+
return sorted(scripts)
34+
35+
def get_description(filepath):
36+
"""
37+
Estrae una breve descrizione dallo script in 'filepath'.
38+
La funzione cerca il primo commento (linea che inizia con "#") o docstring che non sia uno shebang.
39+
Se non viene trovata una descrizione, restituisce un messaggio generico.
40+
"""
41+
try:
42+
with open(filepath, 'r', encoding='utf-8') as f:
43+
for line in f:
44+
line = line.strip()
45+
# Ignora shebang e linee vuote
46+
if line.startswith("#!") or not line:
47+
continue
48+
# Se è un commento, lo considera descrizione
49+
if line.startswith("#"):
50+
return line.lstrip("#").strip()
51+
# Se è l'inizio di una docstring in formato triple quotes
52+
if line.startswith('"""') or line.startswith("'''"):
53+
# Rimuove i delimitatori se presenti sulla stessa linea
54+
desc = line.strip('"""').strip("'''").strip()
55+
if desc: # Se contiene del testo, lo restituisce
56+
return desc
57+
# Altrimenti, continua a leggere le righe successive fino a chiudere la docstring
58+
description_lines = []
59+
for next_line in f:
60+
next_line = next_line.strip()
61+
if next_line.endswith('"""') or next_line.endswith("'''"):
62+
description_lines.append(next_line.rstrip('"""').rstrip("'''").strip())
63+
break
64+
description_lines.append(next_line)
65+
return " ".join(description_lines).strip()
66+
return "Nessuna descrizione disponibile."
67+
except Exception:
68+
return "Nessuna descrizione disponibile."
69+
70+
def main():
71+
72+
# Installa le dipendenze da requirements.txt (se presente)
73+
install_requirements()
74+
75+
# Se esiste una cartella "scripts", usiamola, altrimenti la directory corrente
76+
base_dir = os.getcwd()
77+
scripts_dir = os.path.join(base_dir, "scripts")
78+
if os.path.isdir(scripts_dir):
79+
directory = scripts_dir
80+
else:
81+
directory = base_dir
82+
83+
scripts = get_scripts(directory)
84+
if not scripts:
85+
print("Nessuno script disponibile da eseguire.")
86+
return
87+
88+
# Stampa il menu di selezione in ordine alfabetico
89+
print("Seleziona lo script da eseguire:\n")
90+
for idx, script in enumerate(scripts, start=1):
91+
desc = get_description(os.path.join(directory, script))
92+
print(f"{idx}. {script} - {desc}")
93+
94+
print("\n0. Esci")
95+
96+
try:
97+
choice = int(input("\nInserisci il numero corrispondente alla tua scelta: "))
98+
except ValueError:
99+
print("Scelta non valida. Inserire un numero.")
100+
return
101+
102+
if choice == 0:
103+
print("Uscita.")
104+
return
105+
106+
if 1 <= choice <= len(scripts):
107+
selected_script = os.path.join(directory, scripts[choice - 1])
108+
print(f"Esecuzione di {scripts[choice - 1]}...\n")
109+
# Avvia lo script selezionato usando l'interprete Python
110+
subprocess.run([sys.executable, selected_script])
111+
else:
112+
print("Scelta non valida.")
113+
114+
if __name__ == '__main__':
115+
main()

requirements.txt

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
beautifulsoup4==4.13.3
2-
matplotlib==3.10.1
3-
numpy==2.2.4
1+
beautifulsoup4==4.13.4
2+
matplotlib==3.10.3
3+
numpy==2.3.0
4+
pandas==2.3.0
45
pdfkit==1.0.0
5-
Pillow==11.1.0
6-
pydub==0.25.1
7-
Requests==2.32.3
8-
scikit_learn==1.6.1
6+
Pillow==11.2.1
7+
Requests==2.32.4
8+
scikit_learn==1.7.0
99
whisper==1.1.10
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
# Estrazione tracce audio .flac da file .mkv (anche ricorsiva).
12
import os
23
import subprocess
34

0 commit comments

Comments
 (0)