Modification complète du CSS en cours

This commit is contained in:
Gu1llaum-3 2023-01-01 21:30:14 +01:00
parent 121da9eefd
commit a8f96501c2
8 changed files with 527 additions and 167 deletions

14
app.py
View File

@ -1,6 +1,7 @@
from flask import Flask, request, redirect, url_for, send_file, render_template
from subprocess import run
import os
import logging
app = Flask(__name__)
@ -18,17 +19,22 @@ def process_file(urls):
os.chdir('downloads')
#os.system(f'rm -rf *')
logs = [] # Créer une liste vide pour stocker les logs
for url in urls:
if url:
if "album" in url:
#os.system(f'python3 -m spotdl {url} --output "{download_param_album}"')
run(['python3', '-m', 'spotdl', url, '--output', download_param_album])
logs.append(f'Téléchargement de l album à l\'adresse {url}')
elif "playlist" in url:
os.system(f'python3 -m spotdl {url} --output "{download_param_playlist}"')
logs.append(f'Téléchargement de la playlist à l\'adresse {url}')
# os.system(f'zip -r musics.zip ./downloads')
run(['zip', '-r', 'musics.zip', '.'])
logs.append(f'Création du fichier ZIP musics.zip')
return logs # Retourner la liste des logs
@app.route('/', methods=['GET', 'POST'])
def index():
@ -45,12 +51,14 @@ def index():
return render_template('erreur.html')
urls = [url1, url2, url3, url4, url5]
process_file(urls)
logs = process_file(urls)
#process_file(urls)
#print(resultProcessFile)
with open('/home/gu1ll4um3/github/SpotDL_Web/logs/erreurs.log', 'r') as f:
result2 = f.readlines()
return render_template('download_complete.html', result2=result2)
return render_template('download_complete.html', logs=logs)
#return render_template('download_complete.html', result2=result2)
@app.route('/download', methods=['GET'])
def download():

View File

@ -1,140 +1,72 @@
body{
display: flex;
justify-content: center;
align-items: center;
body {
background-color: black;
}
h1 {
/* border: 2px #eee solid; */
.erreur {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.download_complete {
display: flex;
justify-content: center;
align-items: center;
flex-direction: column;
}
.all {
align-items: center;
flex-direction: column;
}
.titre{
display: flex;
justify-content: center;
color: rgb(24,216,96);
background-color: black;
text-align: center;
padding: 10px;
/* align-items: center; */
}
h2 {
.procedure {
display: flex;
justify-content: center;
flex-direction: column;
text-align: center;
margin: auto;
padding: 10px;
}
h2, a {
color: white;
}
.url {
display: flex;
display: block;
justify-content:center;
width: auto;
flex: 1 1 0;
/* align-items: center; */
}
.urlbox {
display: block;
/* align-items: flex-start; */
flex: 1 1 0;
width: 225;
}
form {
display: flex ;
justify-content: center;
align-items: center;
/* min-height:100%; */
background-color: black;
color: white
}
div {
display: flex;
justify-content: center;
/* align-items: center; */
/* min-height:100%; */
background-color: black;
color: white
}
.logs {
justify-content: center;
background-color: black;
color: white
}
input[type="submit"] {
display: block;
margin: auto;
flex-direction: column;
width : auto ;
}
button {
display: block;
margin: 10px auto;
}
/* .urlbox{
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
} */
/* .urlbox:empty {
border: 2px solid #999999;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:valid:not(:placeholder-shown){
border:rgb(24,216,96) 2px;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:invalid{
border: red solid 2px;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
} */
.urlbox:empty {
border: 2px solid grey;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:valid:not(:placeholder-shown) {
border: 2px solid rgb(24,216,96);
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:invalid {
border: 2px solid red;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
button{
/* margin-right: 0px; */
height: 30px;
width:130px;
border-radius: 5px ;
border: none;
/* float: right; */
background-color: #ddd;
font-weight: bold;
}
button:hover{
background-color: rgb(24,216,96);
color: white;
}
}

208
static/css/style.css.old Normal file
View File

@ -0,0 +1,208 @@
@media (max-width: 600px) {
.urlbox {
/* les styles pour les appareils mobiles vont ici */
width: 100%; /* étend l'élément sur toute la largeur de l'écran */
}
}
@media (min-width: 601px) and (max-width: 900px) {
.urlbox {
/* les styles pour les tablettes vont ici */
width: 50%; /* étend l'élément sur la moitié de la largeur de l'écran */
}
}
@media (min-width: 901px) {
.urlbox {
/* les styles pour les écrans de bureau vont ici */
width: 25%; /* étend l'élément sur un quart de la largeur de l'écran */
}
}
body {
background-color: black;
}
h1 {
/* border: 2px #eee solid; */
color: rgb(24,216,96);
background-color: black;
text-align: center;
padding: 10px;
}
h2 {
text-align: center;
margin: auto;
padding: 10px;
color: white;
}
.url {
display: flex;
justify-content: center;
align-items: center;
/* min-height:100%; */
background-color: black;
color: white
}
div {
display: flex;
justify-content: center;
/* align-items: center; */
/* min-height:100%; */
background-color: black;
color: white
}
.logs {
justify-content: center;
background-color: black;
color: white
}
input[type="submit"] {
display: block;
margin: auto;
}
button {
display: block;
margin: 10px auto;
}
.urlbox:empty {
border: 2px solid grey;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:valid:not(:placeholder-shown) {
border: 2px solid rgb(24,216,96);
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
.urlbox:invalid {
border: 2px solid red;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
width:100%;
height:30px;
}
button{
/* margin-right: 0px; */
height: 30px;
width:130px;
border-radius: 5px ;
border: none;
/* float: right; */
background-color: #ddd;
font-weight: bold;
}
button:hover{
background-color: rgb(24,216,96);
color: white;
}
@media (max-width: 600px) {
body {
background-color: black;
}
h1 {
color: rgb(24,216,96);
background-color: black;
text-align: center;
padding: 10px;
}
h2 {
text-align: center;
margin: auto;
padding: 10px;
color: white;
}
.url {
display: flex;
justify-content: center;
align-items: center;
background-color: black;
color: white;
}
div {
display: flex;
justify-content: center;
background-color: black;
color: white;
}
.logs {
justify-content: center;
background-color: black;
color: white;
}
input[type="submit"] {
display: block;
margin: auto;
}
button {
display: block;
margin: 10px auto;
}
.urlbox {
border: 2px solid grey;
font-size: 13px;
padding: 7px;
border-radius: 9px;
width: 100%;
height: 30px;
box-sizing: border-box;
}
.urlbox:valid:not(:placeholder-shown) {
border: 2px solid rgb(24,216,96);
}
.urlbox:invalid {
border: 2px solid red;
}
button {
height: 30px;
width: 130px;
border-radius: 5px;
border: none;
background-color: #ddd;
font-weight: bold;
box-sizing: border-box;
}
button:hover {
background-color: rgb(24,216,96);
color: white;
}
}

191
static/css/style.css.old2 Normal file
View File

@ -0,0 +1,191 @@
/* Mise en forme générale */
body {
background-color: black;
}
/* Titre principal */
h1 {
color: rgb(24,216,96);
background-color: black;
text-align: center;
padding: 10px;
margin-top: 10px;
}
/* Titre secondaire */
h2 {
text-align: center;
margin: auto;
padding: 10px;
color: white;
}
/* Conteneur principal */
.url {
display: flex;
flex-direction: column;
align-items: center;
background-color: black;
color: white;
}
/* Conteneurs secondaires */
div {
display: flex;
flex-direction: column;
align-items: center;
background-color: black;
color: white;
}
/* Conteneur des logs */
.logs {
display: flex;
flex-direction: column;
align-items: center;
background-color: black;
color: white;
}
/* Bouton de soumission du formulaire */
input[type="submit"] {
display: block;
margin: auto;
}
/* Bouton générique */
button {
display: block;
margin: 10px auto;
}
/* Champ de saisie de l'URL */
.urlbox:empty {
border: 2px solid grey;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
height: 30px;
/* width: 150; */
}
.urlbox:valid:not(:placeholder-shown) {
border: 2px solid rgb(24,216,96);
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
/* width: 150%; */
height: 30px;
}
.urlbox:invalid {
border: 2px solid red;
font-size: 13px;
padding-left: 7px;
padding-right: 7px;
border-radius: 9px;
/* width: 150%; */
height: 30px;
}
/* Bouton de téléchargement */
button {
height: 30px;
width: 130px;
border-radius: 5px;
border: none;
background-color: #ddd;
font-weight: bold;
}
button:hover {
background-color: rgb(24,216,96);
color: white;
}
/* Mise en forme pour écrans de smartphone */
@media only screen and (max-width: 480px) {
/* Titre principal */
h1 {
font-size: 18px;
}
/* Titre secondaire */
h2 {
font-size: 14px;
}
/* Conteneur principal */
.url {
padding: 0 5px;
}
/* Champ de saisie de l'URL */
.urlbox {
width: 150%;
padding: 0 10%;
}
/* Bouton de téléchargement */
button {
width: 80%;
}
}
/* Mise en forme pour écrans de tablette */
@media only screen and (min-width: 481px) and (max-width: 768px) {
/* Titre principal */
h1 {
font-size: 22px;
}
/* Titre secondaire */
h2 {
font-size: 16px;
}
/* Conteneur principal */
.url {
padding: 0 10px;
}
/* Champ de saisie de l'URL */
.urlbox {
width: 150%;
}
/* Bouton de téléchargement */
button {
width: 80%;
}
}
/* Mise en forme pour écrans d'ordinateur */
@media only screen and (min-width: 769px) {
/* Titre principal */
h1 {
font-size: 28px;
}
/* Titre secondaire */
h2 {
font-size: 20px;
}
/* Conteneur principal */
.url {
padding: 0 20px;
}
/* Champ de saisie de l'URL */
.urlbox {
width: 200%;
}
/* Bouton de téléchargement */
button {
width: 80%;
}
}

View File

@ -4,22 +4,31 @@
<title>SpotDL Web</title>
</head>
<body>
<h1> SpotDL Web </h1>
<h2> Téléchargement Terminé </h2>
<!-- <a class="btn btn-success" href="{{url_for('download')}}">Download</a> -->
<button onclick="window.location.href ='{{url_for('download')}}';">Download</button>
<button onclick="window.location.href = '/';">Télécharger à nouveau</button>
<form class="logs">
<div class="download_complete">
<h1> SpotDL Web </h1>
<h2> Téléchargement Terminé </h2>
<!-- <a class="btn btn-success" href="{{url_for('download')}}">Download</a> -->
<button onclick="window.location.href ='{{url_for('download')}}';">Download</button>
<button onclick="window.location.href = '/';">Télécharger à nouveau</button>
<form class="logs">
<div><h1>Fichier de texte</h1></div>
<div>
<a>
{% for line in result2 %}
<p>{{ line }}<br></p>
{% endfor %}
{% for line in result2 %}
<p>{{ line }}<br></p>
{% endfor %}
</a>
</div>
</form>
</div>
<div>
<a>
{% for log in logs %}
<p>{{ log }}<br></p>
{% endfor %}
</a>
</div>
</form>
</div>
</body>

View File

@ -4,10 +4,16 @@
<title>SpotDL Web</title>
</head>
<h1> SpotDL Web </h1>
<h2> Veuillez entrer au moins une URL ! </h2>
<button onclick="window.location.href = '/';">Télécharger à nouveau</button>
<body>
<div class="erreur">
<h1> SpotDL Web </h1>
<h2> Veuillez entrer au moins une URL ! </h2>
<button onclick="window.location.href = '/';">Télécharger à nouveau</button>
{% if message %}
<p>{{ message }}</p>
{% endif %}
</div>
</body>
{% if message %}
<p>{{ message }}</p>
{% endif %}

View File

@ -4,8 +4,8 @@
<body>
<h1>Fichier de texte</h1>
<ul>
{% for line in lines %}
<li>{{ line }}</li>
{% endfor %}
{% for log in logs %}
<p>{{ log }}</p>
{% endfor %}
</ul>
</body>

View File

@ -3,56 +3,62 @@
<link rel="stylesheet" href="{{ url_for('static', filename= 'css/style.css') }}">
<title>SpotDL Web</title>
</head>
<h1>SpotDL Web</h1>
<div><a href="https://open.spotify.com/" style="color:white;" target="_blank">Aller sur Spotify</a></div>
<div> - Chercher un album ou une playlist</div>
<div> - Copier le ou les lien(s) url ci-dessous</div>
<body>
<div class="all">
<div class="procedure">
<h1 class="titre">SpotDL Web</h1>
<a href="https://open.spotify.com/" style="color:white;" target="_blank">Aller sur Spotify <br> </a>
<a>- Chercher un album ou une playlist <br> </a>
<a>- Copier le ou les lien(s) url ci-dessous <br> </a>
</div>
<div class="url" style="padding-top: 10px;">
<form method="POST">
<!-- <label for="url">URL:</label>
<input type="text" name="url" id="url"> -->
<!-- regex="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" -->
<div style="margin-top: 10px;">
<!-- <label for="url1">URL 1:</label> -->
<input type="text" name="url1" id="url1" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)$" placeholder="Copier un lien d'album ou de playlist">
<input type="text" name="url1" id="url1" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Copier un lien d'album ou de playlist">
</div>
<div style="margin-top: 10px;">
<!-- <label for="url2">URL 2:</label> -->
<input type="text" name="url2" id="url2" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)$" placeholder="Copier un lien d'album ou de playlist">
<input type="text" name="url2" id="url2" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Copier un lien d'album ou de playlist">
</div>
<div style="margin-top: 10px;">
<!-- <label for="url3">URL 3:</label> -->
<input type="text" name="url3" id="url3" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)$" placeholder="Copier un lien d'album ou de playlist">
<input type="text" name="url3" id="url3" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Copier un lien d'album ou de playlist">
</div>
<div style="margin-top: 10px;">
<!-- <label for="url4">URL 4:</label> -->
<input type="text" name="url4" id="url4" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)$" placeholder="Copier un lien d'album ou de playlist">
<input type="text" name="url4" id="url4" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Copier un lien d'album ou de playlist">
</div>
<div style="margin-top: 10px;">
<!-- <label for="url5">URL 5:</label> -->
<input type="text" name="url5" id="url5" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)$" placeholder="Copier un lien d'album ou de playlist">
<input type="text" name="url5" id="url5" class="urlbox" pattern="^https://open\.spotify\.com/(?:album|playlist)/[\w-]+(?:\?si=[\w-]+)?$" placeholder="Copier un lien d'album ou de playlist">
</div>
<div style="margin-top: 10px;">
<button type="submit" id="btn" class="btn" value="Téléchargement">Téléchargement</button>
<script>
// Récupère l'élément bouton grâce à son ID
const bouton = document.getElementById('btn');
// Ajoute un écouteur d'événement 'click' au bouton
bouton.addEventListener('click', function() {
// Met à jour la valeur de l'attribut innerHTML du bouton
this.innerHTML = "Téléchargement en cours ...";
});
</script>
</div>
</form>
</div>
</div>
<script>
// Récupère l'élément bouton grâce à son ID
const bouton = document.getElementById('btn');
// Ajoute un écouteur d'événement 'click' au bouton
bouton.addEventListener('click', function() {
// Met à jour la valeur de l'attribut innerHTML du bouton
this.innerHTML = "Téléchargement en cours ...";
});
</script>
</body>