Pour nous contacter : soyez au rendez-vous sur IRC ! ⋅ Parcourir l'archive musicale Dogmazic ⋅ Notre Blog
Notre Documentation

Archiver l'archive - script bash

Salut à tous et à toutes,

Bon, clairement, ç'aurait été bien plus utile quelques mois en arrière, mais voici un petit script bash pour les linuxiens/unixiens/mac osiens et linuxiennes/unixiennes/mac osiennes qui permet de faire une sauvegarde de l'intégralité des morceaux de l'archive ;

Il doit être possible de l'utiliser sous Windows avec un émulateur Linux du genre Cygwin

C'est un script en bash, à exécuter avec bash donc ; par exemple si vous l'avez nommé dogbackup.bash il faudra taper

bash dogbackup.bash

Par défaut ce script archive les mp3, si vous voulez des ogg ouvrez-le avec un éditeur de texte et modifiez l'option "format".

Il devrait être assez robuste, mais je ne l'ai que partiellement testé étant donné qu'il n'y a aucun morceau crawlé par le robot dans l'archive actuellement. Je retesterai après la restauration.

Plus d'info sur son fonctionnement dans le script lui même, via les commentaires (les lignes qui commencent par #).

[code:1]

#!/bin/bash

#dogbackup version 0.1 par Shangri-l

#license : http://creativecommons.org/licenses/by-sa/2.0/fr

#nécessite/required : wget

#toutes les opérations se font dans le répertoire courant, aussi connu sous le nom de répertoire de travail
#any operations are be done in the current directory, also know as work directory


#merci de noter que si vous téléchargez un fichier avec ce script, et que plus tard ce fichier est supprimé de Dogmazic, et qu'encore plus tard vous lancez ce script à nouveau, le script ne va pas ller effacer de votre disque dur local les fichiers qui ne seraient plus sur Dogmazic. On peut voir ça comme un bug ou comme une fonctionnalité.
#please note that if you download a file with this script, and it gets deleted from Dogmazic, and later you launch this script again, the script will not delete from your local hard drive the files that are no longer on Dogmazic. This may be seen a a bug or as a feature.

hostname="http://www.dogmazic.net"

#here's the path to get the .m3u playlist for all songs. Will probably have to be modified when the third version of Dogmazic is online. The "format" option allows you to specify in which format you want the files, accepted values currently are "mp3" or "ogg".

#voici le chemin pour obtenir la liste de lecture .m3u pour tous les morceaux. Devra probablement être modifié quand la troisième version de Dogmazic sera en ligne. L'option "format" vous permet de spécifier dans quel format vous voulez les fichiers, les valeurs acceptées actuellement sont "mp3" ou "ogg".

pathtoken1="/radio/styleM3u.php?f="
format="mp3"
pathtoken2="&style="

#ce script est conçu pour tourner en boucle en permanence, il est possible de l'interrompre à tout moment et de le relancer plus tard
#this script is meant to run in a permanent loop, this is possible to interrupt it at any time and to relaunch it later

#avant toute chose on teste l'existence d'un répertoire nommé "archive" où les morceaux seront au final déplacés ; s'il n'existe pas on le crée
#first we test if a directory named "archive" exists, where the tracks will be eventually moved ; if it does not exist we create it

if [ ! -d archive ]; then
mkdir archive
fi


while true; do
#the main loop always running
#la boucle principale qui tourne en permanence

if [ ! -d list.m3u ]; then
rm list.m3u
fi
#si une ancienne liste existe provenant d'une itération précédente, on la supprime
#if an old list exists coming from a previous attempt, we remove it

wget -O list.m3u -c $hostname$pathtoken1$format$pathtoken2

#on télécharge la liste de lecture contenant tous les morceaux
#we download the playlist with each and every song in it

wget -c -i list.m3u

#on télécharge tous les morceaux spécifiés par cette liste
#we download each and every track in this list

mv *\[www.dogmazic.net\].$format archive

#on déplace tous les fichiers qui ont été traité par le robot Dogmazic vers le répertoire "archive". Cette méthode est du bricolage, actuellement tous les fichiers crawlés par le robot se termine par [www.dogmazic.net], ceci peut changer dans le futur. Naturellement si quelqu'un a fourni une url de fichier dont le nom se termine par [www.dogmazic.net] sur Dogmazic, il sera aussi déplacé alors même qu'il n'a pas été crawlé par le robot ; mais une telle chose a peu de chances d'arriver.
#we move any file that has been crawled by the Dogmazic robot to the "archive" directory. This method is kinda ugly hack, for now any file crawled by the robot ends with [www.dogmazic.net], this can change in the future. Naturally if someone submited a file url with the filename ending by [www.dogmazic.net] to Dogmazic, it will be moved as well while it hasn't been crawled by the bot ; but such a thing is not likely to happen.

rm *.$format

#on efface tous les autres fichiers audios, qui n'ont pas encore été traité par le robot, donc leurs tags riquent de ne pas être à jour et on en veut pas. De plus ça évite les doublons, histoire de ne pas avoir deux versions du même fichier, une traitée par le robot et une non traitée par le robot
#we delete any other audio files, that were not crawled by the robot, then their tag may be not updated and we do not want them. Furthermore, this avoid having twice the same file, one of them taggued by the robot and the other one not crawled by it.


done
#fin de la boucle principale qui tourne en permanence
#end of main loop always running
[/code:1]

Bonne journée tout le monde

Réponses

  • Je suis bien désolé, mais de ne pouvoir tester, j'ai laissé passer un truc foireux :

    À chaque itération, l'intégralité de l'archive aurait été téléchargée à nouveau. J'ai corrigé ça, et maintenant à chaque itération le script ne téléchargera que les nouveaux fichiers

    [code:1]
    #!/bin/bash

    #dogbackup version 0.2 par Shangri-l

    #license : http://creativecommons.org/licenses/by-sa/2.0/fr

    #nécessite/required : wget

    #toutes les opérations se font dans le répertoire courant, aussi connu sous le nom de répertoire de travail
    #any operations are be done in the current directory, also know as work directory


    #merci de noter que si vous téléchargez un fichier avec ce script, et que plus tard ce fichier est supprimé de Dogmazic, et qu'encore plus tard vous lancez ce script à nouveau, le script ne va pas ller effacer de votre disque dur local les fichiers qui ne seraient plus sur Dogmazic. On peut voir ça comme un bug ou comme une fonctionnalité.
    #please note that if you download a file with this script, and it gets deleted from Dogmazic, and later you launch this script again, the script will not delete from your local hard drive the files that are no longer on Dogmazic. This may be seen a a bug or as a feature.

    hostname="http://www.dogmazic.net"

    #here's the path to get the .m3u playlist for all songs. Will probably have to be modified when the third version of Dogmazic is online. The "format" option allows you to specify in which format you want the files, accepted values currently are "mp3" or "ogg".

    #voici le chemin pour obtenir la liste de lecture .m3u pour tous les morceaux. Devra probablement être modifié quand la troisième version de Dogmazic sera en ligne. L'option "format" vous permet de spécifier dans quel format vous voulez les fichiers, les valeurs acceptées actuellement sont "mp3" ou "ogg".

    pathtoken1="/radio/styleM3u.php?f="
    format="mp3"
    pathtoken2="&style="

    #ce script est conçu pour tourner en boucle en permanence, il est possible de l'interrompre à tout moment et de le relancer plus tard
    #this script is meant to run in a permanent loop, this is possible to interrupt it at any time and to relaunch it later

    #avant toute chose on teste l'existence d'un répertoire nommé "archive" où les morceaux seront temporairement déplacés ; s'il n'existe pas on le crée
    #first we test if a directory named "archive" exists, where the tracks will be temporarily moved ; if it does not exist we create it

    if [ ! -d archive ]; then
    mkdir archive
    fi


    while true; do
    #the main loop always running
    #la boucle principale qui tourne en permanence

    if [ ! -d list.m3u ]; then
    rm list.m3u
    fi
    #si une ancienne liste existe provenant d'une itération précédente, on la supprime
    #if an old list exists coming from a previous attempt, we remove it

    wget -O list.m3u -c $hostname$pathtoken1$format$pathtoken2

    #on télécharge la liste de lecture contenant tous les morceaux
    #we download the playlist with each and every song in it

    wget -c -i list.m3u

    #on télécharge tous les morceaux spécifiés par cette liste
    #we download each and every track in this list

    mv *\[www.dogmazic.net\].$format archive

    #on déplace tous les fichiers qui ont été traité par le robot Dogmazic vers le répertoire "archive". Cette méthode est du bricolage, actuellement tous les fichiers crawlés par le robot se termine par [www.dogmazic.net], ceci peut changer dans le futur. Naturellement si quelqu'un a fourni une url de fichier dont le nom se termine par [www.dogmazic.net] sur Dogmazic, il sera aussi déplacé alors même qu'il n'a pas été crawlé par le robot ; mais une telle chose a peu de chances d'arriver.
    #we move any file that has been crawled by the Dogmazic robot to the "archive" directory. This method is kinda ugly hack, for now any file crawled by the robot ends with [www.dogmazic.net], this can change in the future. Naturally if someone submited a file url with the filename ending by [www.dogmazic.net] to Dogmazic, it will be moved as well while it hasn't been crawled by the bot ; but such a thing is not likely to happen.

    rm *.$format

    #on efface tous les autres fichiers audios, qui n'ont pas encore été traité par le robot, donc leurs tags riquent de ne pas être à jour et on en veut pas. De plus ça évite les doublons, histoire de ne pas avoir deux versions du même fichier, une traitée par le robot et une non traitée par le robot
    #we delete any other audio files, that were not crawled by the robot, then their tag may be not updated and we do not want them. Furthermore, this avoid having twice the same file, one of them taggued by the robot and the other one not crawled by it.

    mv archive/* .

    #on remet les fichiers dans le répertoire courant, histoire qu'à la prochaine itération ils ne soient pas téléchargés une nouvelle fois
    #we put back files in the current directory, so then at the next iteration they will not be downloaded again


    done
    #fin de la boucle principale qui tourne en permanence
    #end of main loop always running
    [/code:1]

Ajouter un commentaire