commit
15133c70ad
@ -0,0 +1,33 @@ |
|||||||
|
# PYTHUBE |
||||||
|
|
||||||
|
## DEFINITION |
||||||
|
|
||||||
|
Ce projet a pour but d'automatiser le téléchargement d'une playlist Youtube à partir de l'URL de celle-ci. |
||||||
|
Une fois le téléchargement éffectué, les fichiers sont convertis en MP3 et déplacés dans un dossier. |
||||||
|
|
||||||
|
## UTILISATION |
||||||
|
|
||||||
|
- Installation des dépendances: |
||||||
|
```bash |
||||||
|
python3 -m pip install -r requirements.txt |
||||||
|
``` |
||||||
|
|
||||||
|
- Execution du script: |
||||||
|
Pour télécharger une vidéo: |
||||||
|
```bash |
||||||
|
python3 pyDownload.py |
||||||
|
``` |
||||||
|
Pour convertir une vidéo en MP3: |
||||||
|
```bash |
||||||
|
python3 pyMp3Converter.py |
||||||
|
``` |
||||||
|
Pour télécharger une playlist et la convertir en MP3: |
||||||
|
```bash |
||||||
|
python3 pyPlaylistMaker.py |
||||||
|
``` |
||||||
|
|
||||||
|
## WORKFLOW |
||||||
|
|
||||||
|
- Saisir l'URL de la playlist à télécharger |
||||||
|
- Saisir le nom du dossier de destination |
||||||
|
- Attendre l'arrivée et la conversion des vidéos |
@ -0,0 +1,60 @@ |
|||||||
|
from pytube import Playlist |
||||||
|
import youtube_dl, os, time |
||||||
|
from moviepy.editor import * |
||||||
|
|
||||||
|
### FOR ONE VIDEO ### |
||||||
|
|
||||||
|
## FUNTIONS ## |
||||||
|
# downloading |
||||||
|
def download(): |
||||||
|
try: |
||||||
|
print("downloading...", link) |
||||||
|
with youtube_dl.YoutubeDL(ydl_opts) as ydl: |
||||||
|
ydl.download([link]) |
||||||
|
except: |
||||||
|
print("un probleme est survenu... on réessaye!") |
||||||
|
|
||||||
|
# converting and renaming fonction |
||||||
|
def convert(video): |
||||||
|
videoO = VideoFileClip(video) |
||||||
|
# split the .mp4 |
||||||
|
filename, file_extension = os.path.splitext(str(video)) |
||||||
|
# renvoie le .mp3 dans le repertoire de destination |
||||||
|
return videoO.audio.write_audiofile(os.path.join("./" + destination + "/" + filename + ".mp3")) |
||||||
|
|
||||||
|
|
||||||
|
## MAIN PROGRAM |
||||||
|
# recup des liens de la playlist via lien playlist input |
||||||
|
link = str(input("Entrer le lien de la video youtube a télécharger: ")) |
||||||
|
|
||||||
|
# creation du repertoire destination |
||||||
|
destination = str(input("Entrer le repertoire de destination:")) |
||||||
|
os.mkdir("./" + destination + "") |
||||||
|
|
||||||
|
# options |
||||||
|
ydl_opts = {'format': 'best',} |
||||||
|
|
||||||
|
# download |
||||||
|
download() |
||||||
|
|
||||||
|
# fini! |
||||||
|
print("Téléchargement terminé!") |
||||||
|
|
||||||
|
# convert and rename |
||||||
|
videos = os.listdir('./') |
||||||
|
for video in videos: |
||||||
|
if video.endswith('.mp4'): |
||||||
|
print("convertion en mp3...") |
||||||
|
convert(video) |
||||||
|
|
||||||
|
# cleaning |
||||||
|
try: |
||||||
|
for video in videos: |
||||||
|
if video.endswith('.mp4'): |
||||||
|
print("nettoyage des vidéos converties...") |
||||||
|
os.remove(video) |
||||||
|
except: |
||||||
|
print("rien à nettoyer!") |
||||||
|
|
||||||
|
# done! |
||||||
|
print('Vidéo(s) convertie(s)!') |
@ -0,0 +1,42 @@ |
|||||||
|
from pytube import Playlist |
||||||
|
import youtube_dl, os, time |
||||||
|
from moviepy.editor import * |
||||||
|
|
||||||
|
### FOR DOWNLOAD 1 VIDEO ### |
||||||
|
|
||||||
|
## FUNTIONS ## |
||||||
|
# downloading |
||||||
|
def download(): |
||||||
|
try: |
||||||
|
print("downloading...", link) |
||||||
|
with youtube_dl.YoutubeDL(ydl_opts) as ydl: |
||||||
|
ydl.download([link]) |
||||||
|
except: |
||||||
|
print("un probleme est survenu... on réessaye!") |
||||||
|
|
||||||
|
# converting and renaming fonction |
||||||
|
def convert(video): |
||||||
|
videoO = VideoFileClip(video) |
||||||
|
# split the .mp4 |
||||||
|
filename, file_extension = os.path.splitext(str(video)) |
||||||
|
# renvoie le .mp3 dans le repertoire de destination |
||||||
|
return videoO.audio.write_audiofile(os.path.join("./" + destination + "/" + filename + ".mp3")) |
||||||
|
|
||||||
|
|
||||||
|
## MAIN PROGRAM |
||||||
|
# recup des liens de la playlist via lien playlist input |
||||||
|
link = str(input("Entrer le lien de la video youtube a télécharger: ")) |
||||||
|
|
||||||
|
# creation du repertoire destination |
||||||
|
#destination = str(input("Entrer le repertoire de destination:")) |
||||||
|
destination = "" |
||||||
|
#os.mkdir("./" + destination + "") |
||||||
|
|
||||||
|
# options |
||||||
|
ydl_opts = {'format': 'best',} |
||||||
|
|
||||||
|
# download |
||||||
|
download() |
||||||
|
|
||||||
|
# fini! |
||||||
|
print("Téléchargement terminé!") |
@ -0,0 +1,77 @@ |
|||||||
|
from pytube import Playlist |
||||||
|
import youtube_dl, os, time |
||||||
|
from moviepy.editor import * |
||||||
|
|
||||||
|
### FOR A PLAYLIST ### |
||||||
|
|
||||||
|
## FUNTIONS |
||||||
|
# downloading |
||||||
|
def download(): |
||||||
|
try: |
||||||
|
for link in linkset: |
||||||
|
print("downloading...", link) |
||||||
|
with youtube_dl.YoutubeDL(ydl_opts) as ydl: |
||||||
|
ydl.download([link]) |
||||||
|
except: |
||||||
|
print("un probleme est survenu... on réessaye!") |
||||||
|
retry(2) |
||||||
|
|
||||||
|
# converting and renaming fonction |
||||||
|
def convert(video): |
||||||
|
videoO = VideoFileClip(video) |
||||||
|
# split the .mp4 |
||||||
|
filename, file_extension = os.path.splitext(str(video)) |
||||||
|
# renvoie le .mp3 dans le repertoire de destination |
||||||
|
return videoO.audio.write_audiofile(os.path.join("./" + destination + "/" + filename + ".mp3")) |
||||||
|
|
||||||
|
# retry fonction en cas d'erreurs |
||||||
|
def retry(download, max_tries=10): |
||||||
|
for i in range(max_tries): |
||||||
|
try: |
||||||
|
time.sleep(0.5) |
||||||
|
download() |
||||||
|
break |
||||||
|
except Exception: |
||||||
|
continue |
||||||
|
|
||||||
|
|
||||||
|
## MAIN PROGRAM |
||||||
|
# recup des liens de la playlist via lien playlist input |
||||||
|
playlist = Playlist(str(input("Entrer les liens de la playlist youtube: "))) |
||||||
|
linkset = list(playlist.video_urls) |
||||||
|
print(linkset) |
||||||
|
|
||||||
|
# creation du repertoire destination |
||||||
|
destination = str(input("Entrer le repertoire de destination:")) |
||||||
|
os.mkdir("./" + destination + "") |
||||||
|
|
||||||
|
# download options |
||||||
|
ydl_opts = {'format': 'best',} |
||||||
|
|
||||||
|
# download |
||||||
|
download() |
||||||
|
|
||||||
|
# convert and rename |
||||||
|
try: |
||||||
|
videos = os.listdir("./") |
||||||
|
except: |
||||||
|
print("vidéos à convertir introuvables dans le dossier courant") |
||||||
|
|
||||||
|
for video in videos: |
||||||
|
if video.endswith('.mp4'): |
||||||
|
print("convertion en mp3...") |
||||||
|
convert(video) |
||||||
|
# move to folder |
||||||
|
|
||||||
|
# cleaning |
||||||
|
for video in videos: |
||||||
|
try: |
||||||
|
if video.endswith('.mp4'): |
||||||
|
print(video) |
||||||
|
os.remove(video) |
||||||
|
except: |
||||||
|
print("rien à nettoyer!") |
||||||
|
break |
||||||
|
|
||||||
|
# done! |
||||||
|
print('Done!') |
@ -0,0 +1,11 @@ |
|||||||
|
# PYTHUBE 1 |
||||||
|
bs4 |
||||||
|
PyQt5 |
||||||
|
urllib3 |
||||||
|
pytube==12.0.0 |
||||||
|
PyQtWebEngine |
||||||
|
|
||||||
|
# PYTHUBE 2 |
||||||
|
youtube_dl |
||||||
|
moviepy |
||||||
|
#os |
Loading…
Reference in new issue