page parametres
This commit is contained in:
15
README.md
15
README.md
@@ -1,16 +1,17 @@
|
||||
# 🎵 Deezer Downloader for Nextcloud
|
||||
# 🎵 Deezer Downloader for Nextcloud WebDav
|
||||
|
||||
## 🧩 Description
|
||||
|
||||
Ce projet a pour objectif d’évoluer en une **application Nextcloud**.
|
||||
Pour l’instant, il s’agit d’une **application externe**.
|
||||
Pour l’instant, il s’agit d’une **application externe utilasant WEBDAV **.
|
||||
|
||||
Le projet est basé sur le dépôt GitHub de [deezer-downloader](https://github.com/kmille/deezer-downloader).
|
||||
Un grand merci aux auteurs pour leur excellent travail !
|
||||
|
||||
## ❓ Pourquoi
|
||||
|
||||
Je souhaitais intégrer à **Nextcloud** un **raccourci** permettant aux utilisateurs de **télécharger leur musique, playlists, albums**, etc., directement depuis **Deezer**.
|
||||
Je souhaitais intégrer à **Nextcloud** un **raccourci** permettant aux utilisateurs de **télécharger leur musique, playlists, albums**, etc., directement depuis **Nextcloud**.
|
||||
Les téléchargement sont directement accessible des **Fichiers** de Nextcloud. Vous pouvez aussi choisir un répertoire situé dans le dossier de syncronisation de l'application interne **Musique** pour profiter directement du téléchargement sur une appli de streaming style subsonic...
|
||||
|
||||
## 🔧 Modifications apportées par rapport au dépôt original
|
||||
|
||||
@@ -19,14 +20,6 @@ Je souhaitais intégrer à **Nextcloud** un **raccourci** permettant aux utilisa
|
||||
* 🍪 Utilisation d’un **cookie** pour sauvegarder le répertoire de destination choisi par l’utilisateur.
|
||||
* 🚫 Vérification de la **connexion à Nextcloud** : si non connecté → retour **403 Forbidden**.
|
||||
|
||||
## ⚠️ Limites actuelles
|
||||
|
||||
* 💡 Fonctionne uniquement avec le plugin **AppExterne**.
|
||||
* 👥 Pas de gestion de **sessions utilisateurs séparées** :
|
||||
il est possible que le répertoire de destination ne soit pas correct si deux utilisateurs téléchargent simultanément.
|
||||
Cependant, chaque utilisateur ayant son propre cookie, cela **devrait fonctionner correctement** dans la plupart des cas.
|
||||
|
||||
|
||||
## Dev sous windows (vsCode):
|
||||
|
||||
Pour que powershell accepte d'exécuter des scripts:
|
||||
|
||||
@@ -6,7 +6,6 @@ import requests
|
||||
import atexit
|
||||
from flask import Flask, render_template, request, jsonify, session
|
||||
from markupsafe import escape
|
||||
from flask_autoindex import AutoIndex
|
||||
import warnings
|
||||
import giphypop
|
||||
|
||||
@@ -17,8 +16,6 @@ from deezer_downloader.nextcloud import addJwtInUserSession
|
||||
|
||||
app = Flask(__name__)
|
||||
app.secret_key = "vilvhmqerjgùqrgojpùqjgvnùzevoijrpùvqpzejgijzepgùg"
|
||||
auto_index = AutoIndex(app, config["download_dirs"]["base"], add_url_rules=False)
|
||||
auto_index.add_icon_rule('music.png', ext='m3u8')
|
||||
|
||||
warnings.filterwarnings("ignore", message="You are using the giphy public api key")
|
||||
giphy = giphypop.Giphy()
|
||||
@@ -95,6 +92,14 @@ def index():
|
||||
static_root=config["http"]["static_root"],
|
||||
use_mpd=str(config['mpd'].getboolean('use_mpd')).lower())
|
||||
|
||||
@app.route("/save_config", methods=['POST'])
|
||||
@validate_schema("login", "password", "dirPath")
|
||||
def parameters():
|
||||
user_input = request.get_json(force=True)
|
||||
dir = user_input['dirPath']
|
||||
|
||||
#return jsonify({'error': 'Champs requis manquants'}), 400
|
||||
return jsonify()
|
||||
|
||||
@app.route("/debug")
|
||||
def show_debug():
|
||||
@@ -110,21 +115,6 @@ def show_debug():
|
||||
return jsonify({'debug_msg': stdout.decode()})
|
||||
|
||||
|
||||
@app.route("/downloads/")
|
||||
@app.route("/downloads/<path:path>")
|
||||
def autoindex(path="."):
|
||||
# directory index - flask version (let the user download mp3/zip in the browser)
|
||||
try:
|
||||
gif = giphy.random_gif(tag="cat")
|
||||
media_url = gif.media_url
|
||||
except requests.exceptions.HTTPError:
|
||||
# the api is rate-limited. Fallback:
|
||||
media_url = "https://cataas.com/cat"
|
||||
|
||||
template_context = {'gif_url': media_url}
|
||||
return auto_index.render_autoindex(path=session['user_base_dir'], template_context=template_context)
|
||||
|
||||
|
||||
@app.route('/queue', methods=['GET'])
|
||||
def show_queue():
|
||||
"""
|
||||
|
||||
@@ -84,3 +84,15 @@ h3, th, td {
|
||||
.btn {
|
||||
color: white !important;
|
||||
}
|
||||
|
||||
form {
|
||||
background-color: #292929;
|
||||
border-radius: 8px;
|
||||
padding: 30px;
|
||||
max-width: 500px;
|
||||
margin: 60px auto;
|
||||
box-shadow: 0 0 15px rgba(0,0,0,0.5);
|
||||
}
|
||||
form label {
|
||||
color: white;
|
||||
}
|
||||
@@ -293,6 +293,25 @@ $(document).ready(function() {
|
||||
});
|
||||
// END DEEZER FAVORITE SONGS
|
||||
|
||||
$('#paramters').on('submit', function(e) {
|
||||
e.preventDefault();
|
||||
$.ajax({
|
||||
url: deezer_downloader_api_root + '/save_config',
|
||||
type: 'POST',
|
||||
contentType: 'application/json', // essentiel pour Flask.get_json()
|
||||
data: JSON.stringify({ dirPath: $('#param-directry-path').val(),
|
||||
login: $('#param-login').val(),
|
||||
password: $('#param-password').val()}),
|
||||
success: function(response) {
|
||||
$.jGrowl("Sauvegarder avec succès", { life: 4000 });
|
||||
},
|
||||
error: function(xhr) {
|
||||
const err = xhr.responseJSON?.error || 'Erreur inconnue';
|
||||
$('#result').css('color', 'red').text(err);
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
function show_tab(id_nav, id_content) {
|
||||
// nav
|
||||
|
||||
@@ -57,6 +57,9 @@
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="nav-task-queue" data-toggle="tab" href="#queue">Queue (5)</a>
|
||||
</li>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" id="nav-task-param" data-toggle="tab" href="#param">Parameter (6)</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div> <!-- end row -->
|
||||
|
||||
@@ -105,7 +108,7 @@
|
||||
<br>
|
||||
<h3>Download stuff via youtube-dl</h3>
|
||||
<div class="input-group">
|
||||
<input type="text" class="form-control" id="youtubedl-query" placeholder="Download audio from YouTube, Invidious, Vimeo, Soundcloud, YouPorn, ... " />
|
||||
<input type="text" class="form-control" id="youtubedl-query" placeholder="Download audio from YouTube, Invidious, Vimeo, Soundcloud, ... " />
|
||||
|
||||
</div>
|
||||
<br>
|
||||
@@ -188,6 +191,31 @@
|
||||
</table>
|
||||
</div> <!-- end div tab queue -->
|
||||
|
||||
<div id="param" class="container tab-pane fade">
|
||||
<br>
|
||||
<h3 class="mb-4 text-center">Configuration</h3>
|
||||
|
||||
<form class="p-4 rounded" id="paramters" >
|
||||
<div class="form-group">
|
||||
<label for="directory-path">Directory Path</label>
|
||||
<input type="text" class="form-control" id="param-directry-path" name="directory_path" placeholder="/path/to/folder" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="login">Login</label>
|
||||
<input type="text" class="form-control" id="param-login" name="login" placeholder="Username" required>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label for="password">Password</label>
|
||||
<input type="password" class="form-control" id="param-password" name="password" placeholder="••••••" required>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn btn-info btn-block font-weight-bold">Save</button>
|
||||
</div>
|
||||
|
||||
<!-- end div tab parameters -->
|
||||
|
||||
<footer class="footer">
|
||||
<div class="container">
|
||||
<span class="text-muted">
|
||||
|
||||
Reference in New Issue
Block a user