Diverses corrections sur app.py et ajout de la possibilité de télécharger des pistes en plus des albums et des playlists.

Modification du fichier index.html afin d'accepter les liens avec "track"
This commit is contained in:
Gu1llaum-3 2023-05-13 23:29:32 +02:00
parent 433e219e62
commit 1c47cf5f94
2 changed files with 18 additions and 12 deletions

20
app.py
View File

@ -1,16 +1,18 @@
from flask import Flask, request, redirect, url_for, send_file, render_template, send_from_directory, jsonify from flask import Flask, request, send_file, render_template
from subprocess import run from subprocess import run
from datetime import datetime import os
import os, logging, json, secrets import secrets
app = Flask(__name__) app = Flask(__name__)
app.secret_key = secrets.token_hex(16) app.secret_key = secrets.token_hex(16)
@app.route('/', methods=['GET', 'POST']) @app.route('/', methods=['GET', 'POST'])
def download_file(): def download_file():
session_id = secrets.token_hex(16) session_id = secrets.token_hex(16)
download_param_album = '{artist}/{album}/{artist} - {title}' download_param_album = '{artist}/{album}/{artist} - {title}'
download_param_playlist = '{playlist}/{artists}/{album} - {title} {artist}' download_param_playlist = '{playlist}/{artists}/{album} - {title} {artist}'
download_param_track = '{artist}/{album}/{artist} - {title}'
if request.method == 'POST': if request.method == 'POST':
url1 = request.form['url1'] url1 = request.form['url1']
@ -38,18 +40,22 @@ def download_file():
run(['python3', '-m', 'spotdl', url, '--output', download_param_album]) run(['python3', '-m', 'spotdl', url, '--output', download_param_album])
elif "playlist" in url: elif "playlist" in url:
run(['python3', '-m', 'spotdl', url, '--output', download_param_playlist]) run(['python3', '-m', 'spotdl', url, '--output', download_param_playlist])
elif "track" in url:
run(['python3', '-m', 'spotdl', url, '--output', download_param_track])
run(['zip', '-r', 'musics.zip', '.']) run(['zip', '-r', 'musics.zip', '.'])
os.chdir('../') os.chdir('../')
PATH = "downloads/musics.zip" path = "downloads/musics.zip"
return send_file(PATH, as_attachment=True) return send_file(path, as_attachment=True)
return render_template('index.html') return render_template('index.html')
@app.errorhandler(404) @app.errorhandler(404)
def page_not_found(error): def page_not_found():
return render_template('404.html'), 404 return render_template('404.html'), 404
if __name__ == '__main__': if __name__ == '__main__':
app.run(debug=True, port=3000) app.run(debug=True, port=3000)

View File

@ -17,19 +17,19 @@
</div> </div>
<form action="/" method="POST"> <form action="/" method="POST">
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" name="url1" id="url1" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist"> <input type="text" class="form-control" name="url1" id="url1" pattern="^https://open\.spotify\.com/(?:album|playlist|track)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist">
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" name="url2" id="url2" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist"> <input type="text" class="form-control" name="url2" id="url2" pattern="^https://open\.spotify\.com/(?:album|playlist|track)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist">
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" name="url3" id="url3" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist"> <input type="text" class="form-control" name="url3" id="url3" pattern="^https://open\.spotify\.com/(?:album|playlist|track)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist">
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" name="url4" id="url4" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist"> <input type="text" class="form-control" name="url4" id="url4" pattern="^https://open\.spotify\.com/(?:album|playlist|track)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist">
</div> </div>
<div class="form-group"> <div class="form-group">
<input type="text" class="form-control" name="url5" id="url5" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist"> <input type="text" class="form-control" name="url5" id="url5" pattern="^https://open\.spotify\.com/(?:album|playlist|track)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Entrez l'URL d'un Album ou d'une Playlist">
</div> </div>
<button type="submit" class="btn" id="download-button" onclick="startDownload()">Télécharger</button> <button type="submit" class="btn" id="download-button" onclick="startDownload()">Télécharger</button>
<button type="reset" class="btn" id="refresh-button" onclick="refreshPage()">Rafraîchir</button> <button type="reset" class="btn" id="refresh-button" onclick="refreshPage()">Rafraîchir</button>