uso nexcloud su un raspberry pi4 e sto cercando di far funzionare lo script sotto in modo che legga per ogni riga i links in un qualsiasi .txt e li passi al programma yt-dlp per scaricarli
la cartella sul server nextcloud è monitorata da inotifywait
il programma detox serve per normalizzare unix like i file creati
poi resetto i permessi e alla fine riscanziono i file nella cartella dell’utente
se creo il file sul computer e lo carico tramite l’interfaccia web di nextcloud funziona mente se creo direttamente il file da nextcloud non c’è modo di farlo funzionare
quello che volevo chiedere è se nextcloud usa un formato particolare per i file che crea dall’interfaccia web e se qualcuno ha qualche idea per farlo funzionare.
Sono nuovo qui se ho sbagliato sezione vi prego di spostarmi su quella giusta.
#!/bin/bash
WATCH_DIR="/PERCORSO/files/Musica/Youtube"
IGNORED_PREFIX="_"
DETOX_CMD="sudo detox --remove-trailing $WATCH_DIR/"
PERMISSION_CMD="sudo chown -R www-data:www-data $WATCH_DIR"
NEXTCLOUD_CMD="sudo -u www-data php /var/www/html/occ files:scan --path=NOMEUTENTE/files/Musica/Youtube"
# Monitoraggio di file rinominati nella directory
inotifywait -m -e moved_to --format "%w%f" "$WATCH_DIR" | while read -r FILEPATH; do
FILENAME=$(basename "$FILEPATH")
echo "Trovato file: $FILENAME"
# Ignora file che iniziano con "_"
if [[ "$FILENAME" == ${IGNORED_PREFIX}* ]]; then
echo "File ignorato: $FILENAME (inizia con il prefisso '${IGNORED_PREFIX}')"
continue
fi
# Controlla che sia un file .txt
if [[ "$FILENAME" == *.txt ]]; then
echo "Elaborando file: $FILENAME"
# Attendi che il file sia completamente scritto
echo "Verifica della disponibilità del file..."
while lsof "$FILEPATH" >/dev/null 2>&1; do
sleep 1
done
# Normalizza i terminatori di riga
echo "Normalizzando i terminatori di riga per: $FILEPATH"
sed -i 's/\r$//' "$FILEPATH"
# Leggi ogni link dal file e scarica il contenuto
while IFS= read -r LINK; do
echo "Scaricando: $LINK"
yt-dlp -f bestaudio --extract-audio --audio-format mp3 --audio-quality 0 --embed-thumbnail --add-metadata --output "$WATCH_DIR/%(title)s.%(ext)s" "$LINK"
done < "$FILEPATH"
# Esegui i comandi post-download
echo "Eseguendo comandi post-download..."
rm "${WATCH_DIR}/${FILENAME}"
$DETOX_CMD
$PERMISSION_CMD
$NEXTCLOUD_CMD
else
echo "Il file non è un file di testo: $FILENAME (ignorato)"
fi
done