Darkenar94 / youtube_downloader

Per scaricare musica e video da youtube
0 stars 1 forks source link

Bug alla conversione video in audio #2

Open harisont opened 3 years ago

harisont commented 3 years ago

Eilà! Sono utente entusiasta di youtube-dl ma a volte mi darebbe gusto usare il tuo programma, che non richiede di memorizzare cinquemila opzioni da linea di comando. Provandolo noto che, se seleziono la modalità 1 (conversione), ottengo il seguente messaggio di errore:

Traceback (most recent call last):
  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 202, in <module>
    main()
  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 199, in main
    avvio_downloader(info_ricevuta)
  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 176, in avvio_downloader
    scarica_file(info_video, ".getbestaudio()")
  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 103, in scarica_file
    percorso = os.getenv("USERPROFILE") + "\\Downloads"
TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

Ora non chiedermi perché os.getenv("USERPROFILE") restituisca NoneType, ma anche senza guardare il codice noto che:

A occhio sembra che il codice sia molto modulare, per cui immagino che tu possa risolvere facilmente questo problema :)

PS: non fa mai male listare le dependencies del programma, altrimenti uno prova a usarlo e va a finire così:

➜  youtube_downloader git:(main) python youtube\ downloader.py
Traceback (most recent call last):
  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 3, in <module>
    from moviepy.editor import *
ModuleNotFoundError: No module named 'moviepy'
Darkenar94 commented 3 years ago

Ciao! scusami ma ho notato solamente ieri sera che avevi aperto un issue su gitub per il repo in questione e devo dire che mi ha fatto molto piacere il fatto che nonostante le nostre lezioni siano finite tu mi abbia lasciato una specie di esercizio per casa in ogni caso ti ringrazio per avermi parlato di alcuni dei problemi che potrebbero causare il crash del programma su linux penso però che il farmi notare che il programma non funzioni sul sistema operativo appena citato e il consigliarmi di listare le dipendenze poteva bastare infatti da alcuni dei miei commit precedenti si può notare che "provai" a risolvere proprio i problemi di cui parli ma questi non sono gli unici a causare il crash ad ogni modo grazie Arianna e magari tutti fossero espliciti come lo sei stata tu controllando il codice e riportando i possibili problemi che causano un determinato malfunzionamento del programma per quanto riguarda il listare le dipendenze la trovo un'idea fantastica ed immagino che debba farlo nel readme ma non ne sono sicuro potresti darmene la conferma? penso sarà un'ottimo esercizio e lo farò con molto piacere appena ne avrò la possibilità molto contento di averti risentito e dell'idea che hai avuto.

Lorenzo

Il 16/07/2021 12:12 Arianna Masciolini ***@***.***> ha scritto:

Eilà!
Sono utente entusiasta di youtube-dl https://github.com/ytdl-org/youtube-dl ma a volte mi darebbe gusto usare il tuo programma, che non richiede di memorizzare cinquemila opzioni da linea di comando.
Provandolo noto che, se seleziono la modalità 1 (conversione), ottengo il seguente messaggio di errore:

Traceback (most recent call last):

  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 202, in <module>

    main()

  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 199, in main

    avvio_downloader(info_ricevuta)

  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 176, in avvio_downloader

    scarica_file(info_video, ".getbestaudio()")

  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 103, in scarica_file

    percorso = os.getenv("USERPROFILE") + "\\Downloads"

TypeError: unsupported operand type(s) for +: 'NoneType' and 'str'

Ora non chiedermi perché os.getenv("USERPROFILE") restituisca NoneType, ma anche senza guardare il codice noto che:

    * probabilmente funziona solo su Windows, perché percorso (e quindi suppongo anche altri path) contiene \ e non /
    * potresti risolvere questo e altri problemi evitando di concatenare i path a mano. Il modo classico di farlo in modo che tutto funzioni su ogni piattaforma è usare os.path.join https://docs.python.org/3/library/os.path.html#os.path.join

A occhio sembra che il codice sia molto modulare, per cui immagino che tu possa risolvere facilmente questo problema :)

PS: non fa mai male listare le dependencies del programma, altrimenti uno prova a usarlo e va a finire così:

➜  youtube_downloader git:(main) python youtube\ downloader.py

Traceback (most recent call last):

  File "/home/harisont/Repos/youtube_downloader/youtube downloader.py", line 3, in <module>

    from moviepy.editor import *

ModuleNotFoundError: No module named 'moviepy'

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub https://github.com/Darkenar94/youtube_downloader/issues/2 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ANS6NU6HLKSAXZ4P72G4OBDTYAAZFANCNFSM5APJALWQ .
harisont commented 3 years ago

Ciao! Per quel che riguarda il listare le dependency sì, il modo più semplice è scriverle nel readme.

C'é però anche un modo automatico per ottenere la lista completa (molto molto molto completa!) di dependencies (il che è molto fico perché uno si scorda sempre quante librerie esterne ha installato nel corso del tempo e tende a darle per scontate): basta entrare nella cartella dove hai il tuo progetto Python ed eseguire

pip freeze > requirements.txt

Il risultato è che ti ritrovi tutte le dependencies e relative versioni minime scritte su un nuovo file requirements.txt.

Poi una volta che c'é sto file basta eseguire

pip install -r requirements.txt

e tutte le dependencies mancanti vengono installate automaticamente.

Ovviamente questo vale solo per le dipendenze in termini di pacchetti Python (che nel tuo caso sono le uniche). Voglio dire che se il tuo programma per esempio utilizza un eseguibile qualunque (per esempio apre un browser specifico, o esegue un comando della shell tipo tree) lo devi per forza esplicitare in qualche altro modo, tipicamente nel readme.

harisont commented 3 years ago

Per quel che riguarda il crash: in effetti non sono andata molto a fondo, ho guardato solo che eccezioni venivano lanciate ;)