Skip to content

Commit d6dfb41

Browse files
committed
V. 2.1 Update
- Aggiunto script "eml_converter" - Aggiornato "Readme.md" thks @progressify - Aggiunto "Requirements.txt"
1 parent 84a8b35 commit d6dfb41

3 files changed

Lines changed: 220 additions & 99 deletions

File tree

README.md

Lines changed: 95 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -7,14 +7,28 @@ Prima di eseguire gli script assicurati di aver installato Python.
77

88
[Download Python For Windows](https://www.python.org/downloads/)
99

10-
# Autore 📈
10+
### Requisiti 📦
1111

12-
Creato con ❤️ da [Magnetarman](magnetarman.com), potenziato da ChatGPT e grazie ad [Antonio Porcelli](https://progressify.dev/) per avermi inizializzato allo scrivere e capire Python.
12+
Il file requirements.txt incluso in questa repository è progettato per garantire la piena compatibilità con tutti gli script presenti nel pacchetto. Si tratta di una lista generale delle dipendenze necessarie per il corretto funzionamento degli script Python, costantemente aggiornata ogni volta che vengono aggiunti nuovi script o funzionalità.
13+
14+
In questo modo, assicuriamo che tutti gli utenti possano eseguire il progetto senza problemi, mantenendo un ambiente di lavoro completo e affidabile.
15+
16+
Per installare tutte le dipendenze, è sufficiente utilizzare il comando:
17+
18+
```bash
19+
pip install -r requirements.txt
20+
```
1321

1422
## Licenza 📜
1523

1624
Tutto il progetto è concesso sotto licenza **MIT**. Sentiti libero di utilizzarlo, modificarlo e condividerlo!
1725

26+
## Autore 📈
27+
28+
Creato con ❤️ da [Magnetarman](magnetarman.com), potenziato da ChatGPT e grazie ad [Antonio Porcelli](https://progressify.dev/) per avermi inizializzato allo scrivere e capire Python.
29+
30+
---
31+
1832
---
1933

2034
## _Estrattore di Colori Dominanti_ - **color_palette.py** 🎨
@@ -44,18 +58,6 @@ Utile per:
4458

4559
---
4660

47-
### Requisiti 📦
48-
49-
Assicurati di avere installato:
50-
51-
- **Python 3.6+**
52-
- **Pillow**: Per l'elaborazione delle immagini.
53-
- **scikit-learn**: Per il clustering KMeans.
54-
- **Matplotlib**: Per la generazione grafica delle palette.
55-
- **NumPy**: Per la gestione e l'elaborazione delle immagini.
56-
57-
---
58-
5961
### Installazione 🔧
6062

6163
1. Clona questa repository:
@@ -64,12 +66,6 @@ Assicurati di avere installato:
6466
git clone https://github.com/Magnetarman/Python-Script/
6567
```
6668

67-
2. Installa le dipendenze con:
68-
69-
```bash
70-
pip install pillow scikit-learn matplotlib numpy
71-
```
72-
7369
---
7470

7571
### Utilizzo 🚀
@@ -163,16 +159,6 @@ Lo script è interattivo e consente di **confermare l'eliminazione** delle carte
163159

164160
---
165161

166-
### Requisiti 📦
167-
168-
Assicurati di avere installato:
169-
170-
- **Python 3.6+**
171-
172-
Lo script utilizza solo moduli della libreria standard di Python, quindi non è necessaria alcuna installazione aggiuntiva.
173-
174-
---
175-
176162
### Installazione 🔧
177163

178164
1. Clona questa repository:
@@ -272,16 +258,6 @@ Utile per:
272258

273259
---
274260

275-
### Requisiti 📦
276-
277-
Assicurati di avere installato:
278-
279-
- **Python 3.6+**
280-
281-
Lo script utilizza solo moduli della libreria standard di Python, quindi non è necessaria alcuna installazione aggiuntiva.
282-
283-
---
284-
285261
### Installazione 🔧
286262

287263
1. Clona questa repository:
@@ -373,16 +349,6 @@ Lo script stampa le estensioni trovate direttamente nel terminale.
373349

374350
---
375351

376-
### Requisiti 📦
377-
378-
Assicurati di avere installato:
379-
380-
- **Python 3.6+**
381-
382-
Lo script utilizza solo moduli della libreria standard di Python, quindi non è necessaria alcuna installazione aggiuntiva.
383-
384-
---
385-
386352
### Installazione 🔧
387353

388354
1. Clona questa repository:
@@ -471,16 +437,6 @@ Utile per:
471437

472438
---
473439

474-
### Requisiti 📦
475-
476-
Assicurati di avere installato:
477-
478-
- **Python 3.6+**
479-
480-
Lo script utilizza solo moduli della libreria standard di Python, quindi non è necessaria alcuna installazione aggiuntiva.
481-
482-
---
483-
484440
### Installazione 🔧
485441

486442
1. Clona questa repository:
@@ -567,16 +523,6 @@ Utile per:
567523

568524
---
569525

570-
### Requisiti 📦
571-
572-
Assicurati di avere installato:
573-
574-
- **Python 3.6+**
575-
576-
Lo script utilizza solo moduli della libreria standard di Python, quindi non è necessaria alcuna installazione aggiuntiva.
577-
578-
---
579-
580526
### Installazione 🔧
581527

582528
1. Clona questa repository:
@@ -668,20 +614,6 @@ Utile per:
668614

669615
---
670616

671-
### Requisiti 📦
672-
673-
Assicurati di avere installato:
674-
675-
- **Python 3.8+**
676-
- **Whisper** di OpenAI
677-
- **pydub**: Per la conversione dei file audio
678-
679-
Installa le dipendenze con:
680-
681-
```bash
682-
pip install openai-whisper pydub
683-
```
684-
685617
Assicurati di avere **FFmpeg** installato sul tuo sistema, necessario per pydub:
686618

687619
- **Windows**: Scarica FFmpeg da [ffmpeg.org](https://ffmpeg.org/)
@@ -714,12 +646,7 @@ brew install ffmpeg # MacOS
714646
- Apri il Prompt dei comandi.
715647
- Esegui `ffmpeg -version`.
716648

717-
- Assicurati di avere il modello Whisper di OpenAI installato. Puoi installarlo utilizzando:
718-
719649
```sh
720-
pip install openai-whisper pydub
721-
pip --version
722-
723650
# Crea l'ambiente virtuale
724651
python -m venv myenv
725652

@@ -829,16 +756,6 @@ Utile per:
829756

830757
---
831758

832-
## Requisiti 📦
833-
834-
Assicurati di avere installato:
835-
836-
- **Python 3.6+**
837-
838-
Lo script utilizza solo moduli della libreria standard di Python.
839-
840-
---
841-
842759
## Installazione 🔧
843760

844761
1. Clona questa repository:
@@ -903,3 +820,82 @@ I file spostati saranno salvati nella cartella:
903820
- **Output pulito**: I file vengono spostati senza duplicare o sovrascrivere altri contenuti.
904821

905822
---
823+
824+
## _Convertitore di Email in PDF 📧➡️📄_ - **eml_converter.py** 🗂️
825+
826+
Uno script Python per convertire file **.eml** (email salvate) in file **PDF**, mantenendo i dettagli importanti del messaggio come oggetto, mittente, destinatario e contenuto del corpo.
827+
828+
---
829+
830+
## Descrizione 📄
831+
832+
Questo **Convertitore di Email in PDF** esplora una cartella specificata dall'utente, trasforma i file **.eml** in HTML leggibile e poi li converte in file **PDF** salvati in una directory dedicata.
833+
834+
Utile per:
835+
836+
- **Archiviazione email** in un formato facilmente consultabile.
837+
- **Creazione di report** PDF di comunicazioni importanti.
838+
- **Automatizzare** il processo di conversione email in PDF.
839+
840+
---
841+
842+
## Funzionalità 🌟
843+
844+
- **Conversione automatica**: Legge file **.eml**, genera un HTML e lo salva come PDF.
845+
- **Output organizzato**: Salva tutti i PDF in una cartella dedicata chiamata **converted_pdfs**.
846+
- **Dettagli inclusi**: Oggetto, mittente, destinatario e corpo del messaggio preservati nel PDF.
847+
848+
---
849+
850+
## Requisiti 📦
851+
852+
- **wkhtmltopdf**: Strumento esterno necessario per generare PDF. Scaricalo e installalo dal sito ufficiale: [wkhtmltopdf.org](https://wkhtmltopdf.org/).
853+
854+
---
855+
856+
## Installazione 🔧
857+
858+
1. Clona questa repository:
859+
860+
```bash
861+
git clone https://github.com/Magnetarman/Python-Script/
862+
```
863+
864+
2. Esegui lo script direttamente:
865+
866+
```bash
867+
python eml_converter.py.py
868+
```
869+
870+
---
871+
872+
## Utilizzo 🚀
873+
874+
1. Esegui lo script dal terminale o da un IDE Python:
875+
876+
```bash
877+
python eml_converter.py.py
878+
```
879+
880+
2. Inserisci il **percorso della cartella** contenente i file **.eml** quando richiesto.
881+
882+
3. Lo script convertirà automaticamente i file e li salverà in una sottocartella chiamata **converted_pdfs**.
883+
884+
### Esempio Output
885+
886+
```plaintext
887+
Inserisci il percorso della cartella contenente i file .eml: /percorso/della/cartella
888+
Converted: email1.eml -> /percorso/della/cartella/converted_pdfs/email1.pdf
889+
Converted: email2.eml -> /percorso/della/cartella/converted_pdfs/email2.pdf
890+
Tutti i file .eml sono stati convertiti in PDF nella cartella 'converted_pdfs'.
891+
```
892+
893+
---
894+
895+
## Note 📝
896+
897+
- **Formati supportati**: Lo script funziona con file **.eml** standard.
898+
- **Percorsi validi**: Assicurati di fornire un percorso esistente e accessibile.
899+
- **Output pulito**: Ogni PDF include i dettagli dell'email in un formato leggibile.
900+
901+
---

eml_converter.py

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
import os
2+
import sys
3+
import pdfkit
4+
from email import message_from_file
5+
6+
# Funzione per convertire il contenuto di un file .eml in HTML
7+
def eml_to_html(eml_file):
8+
with open(eml_file, 'r', encoding='utf-8') as f:
9+
msg = message_from_file(f)
10+
subject = msg["Subject"] or "(No Subject)"
11+
sender = msg["From"] or "(Unknown Sender)"
12+
to = msg["To"] or "(Unknown Recipient)"
13+
14+
body = ""
15+
if msg.is_multipart():
16+
for part in msg.walk():
17+
if part.get_content_type() == "text/plain":
18+
body = part.get_payload(decode=True).decode('utf-8', errors='ignore')
19+
break
20+
else:
21+
body = msg.get_payload(decode=True).decode('utf-8', errors='ignore')
22+
23+
# Creazione dell'HTML
24+
html_content = f"""
25+
<html>
26+
<head><meta charset='utf-8'><title>{subject}</title></head>
27+
<body>
28+
<h1>Subject: {subject}</h1>
29+
<p><strong>From:</strong> {sender}</p>
30+
<p><strong>To:</strong> {to}</p>
31+
<pre>{body}</pre>
32+
</body>
33+
</html>
34+
"""
35+
return html_content
36+
37+
# Funzione per convertire file .eml in PDF
38+
def convert_eml_to_pdf(input_folder):
39+
output_folder = os.path.join(input_folder, "converted_pdfs")
40+
os.makedirs(output_folder, exist_ok=True)
41+
42+
for filename in os.listdir(input_folder):
43+
if filename.lower().endswith('.eml'):
44+
eml_path = os.path.join(input_folder, filename)
45+
html_content = eml_to_html(eml_path)
46+
47+
pdf_filename = os.path.splitext(filename)[0] + ".pdf"
48+
pdf_path = os.path.join(output_folder, pdf_filename)
49+
50+
pdfkit.from_string(html_content, pdf_path)
51+
print(f"Converted: {filename} -> {pdf_path}")
52+
53+
if __name__ == "__main__":
54+
# Richiede il percorso della cartella all'utente
55+
input_folder = input("Inserisci il percorso della cartella contenente i file .eml: ").strip()
56+
57+
if not os.path.isdir(input_folder):
58+
print("Errore: Il percorso specificato non è una cartella valida.")
59+
sys.exit(1)
60+
61+
convert_eml_to_pdf(input_folder)
62+
print("Tutti i file .eml sono stati convertiti in PDF nella cartella 'converted_pdfs'.")

0 commit comments

Comments
 (0)