Streamripper

Un article de Wiki de la communauté Mandriva.

Jump to: navigation, search
Streamripper permet l'enregistrement de certaines webradios qui émettent en streaming. Il sait détecter les débuts et fin des morceaux musicaux ou des chansons et les enregistre à raison d'un fichier au format mp3 par morceau ou chanson.

Manuel de Streamripper - Rippage de flux radio Shoutcast en fichiers MP3

Sommaire

[modifier] Nom

Streamripper - Rippage de flux radio Shoutcast en fichiers MP3

[modifier] Synopsis

streamripper URL [options]

[modifier] Description

Streamripper enregistre les flux compatibles avec Shoutcast et Icecast. Il utilise les métadonnées à l'intérieur du flux Shoutcast pour déterminer le début et la fin de chaque chanson, et enregistre les chansons sur votre disque dur en fichiers mp3 individuels. De plus, streamripper inclut un serveur relais pour écouter la station pendant l'enregistrement.

[modifier] Options

-h 
Imprime l'aide et quitte
-v 
Imprime la version et quitte
-d dir 
Le répertoire de destination
Choisissez un répertoire différent pour le rippage, juste au cas où vous ne désirez pas déposer des tonnes de mp3 dans n'importe quel répertoire.
-s 
Ne pas créer de répertoire pour chaque flux
Normalement, streamripper créera un répertoire avec le même nom que le flux pour y placer les pistes, cette option désactivera cela.
-D motif 
Utilise un motif pour formater les nom de fichiers de sortie.

Cette option indique à streamripper comment former les nom de fichiers. Si -D est utilisé, les options -s et -P seront ignorées. Si le motif représente un chemin absolu, l'option -d sera aussi ignorée. Si -D et -q sont simultanément spécifiés, -q sera seul utilisé pour établir le départ du décompte si un jeton %q est inclus. Par défaut les fichiers de sortie sont placés dans un répertoire qui porte le même nom que le flux, et les nom de fichiers sont formés d'après l'artiste et le titre. Mais vous pouvez passer outre ce comportement et créer les nom de fichiers de sortie comme vous le souhaitez. Les nom de fichiers de sortie sont générés en substituant des jetons par des valeurs qui dépendent du flux, de la piste ou de l'environnement. Les jetons suivants peuvent être utilisés pour la substitution :

   %S        Flux
   %A        Artist
   %T        Titre
   %a        Album
   %D        Date et heure (par chanson)
   %d        Date et heure (pa exécution)
   %q        Numéro de sèquence ( detection automatique)
   %Nq       Numéro de sèquence (commençant à N)
   %%        Signe %

Remarque  : Sur Windows, vous pouvez être amené à noter un % supplémentaire car le symbole est utilisé par le shell. Ainsi vous devrez noter "%%S/%%A/%%T" à la place de "%S/%A/%T". L'extension (telle que .mp3) est ajoutée automatiquement.

Les jetons %D et %d diffèrent car %D donne un horodatage pour chaque chanson, alors que %d donne un horodatage unique à chaque démarrage de streamripper.

Les jetons %Q et %q diffèrent car %Q essaye de trouver la séquence correcte de nombres à partir des fichiers existants, alors que %q ne le fait pas. Le jeton %q démarre avec le nombre optionnel de départ. Par exemple %32q commence la numérotation à 32.

-r [port de base] 
Crée un serveur relais sur le port de base, port par défaut : 8000
Crée un serveur relais sur le port de base. si le port de base n'est pas spécifié, le 8000 est pris par défaut, sinon c'est tout port qui est spécifié. Notez que si l'option -z n'est pas utilisée, il continuera d'essayer les ports supérieurs si le port spécifié n'est pas disponible.
-R num_conn 
Nombre maximum de connexions pour relayer les flux
En plus de créer un relais serveur, vous pouvez aussi contrôler le nombre de clients qui sont simultanément autorisés à se connecter. C'est un client par défaut, mais si vous spécifiez l'option -R vous pouvez augmenter ce nombre jusqu'à <num_conn>. Si <num_conn> est mis à 0, le nombre de connexions n'est limité que par votre processeur et la vitesse du réseau. L'option -R est sans effet si -r n'était pas utilisé lors de la création du flux relais.
-z 
Ne pas scanner les ports libres si le port de base n'est pas valide
Invalide le « scan des ports libres ». Utilisez le si vous êtes parano, uu si vous n'aimez pas que les ports soient ouverts.
-p URL 
Utiliser le serveur proxy HTTP à <URL>
Si vous êtes derrière un serveur proxy, utilisez le drapeau -p pour spécifier son URL. Vous pouvez aussi utiliser la variable d'environnement http_proxy pour spécifier votre serveur proxy.
-a [motif] 
Rippe vers un fichier unique
Le mode d'action par défaut est de séparer chaque chanson (piste) en fichiers distincts. Mais ce n'est pas toujours ce que vous souhaitez. Des fois vous désirez enregistrer le flux dans un unique (gros) fichier sans le découper en chansons. L'option -a fait cela. Si vous utilisez -a sans le [motif], un nom de fichier horodaté sera automatiquement utilisé.
Le motif peut être utilisé de façon similaire au drapeau -D, mais généralement, seuls %S, %q et %d sont utiles.
-A 
Ne pas créer de pistes individuelles
Le mode d'action par défaut est de séparer chaque chanson (piste) en fichiers distincts. Mais ce n'est pas toujours ce que vous souhaitez. Des fois vous désirez enregistrer le flux dans un fichier unique (en utilisant l'option -a), ou vous désirez utiliser streamripper comme relais (en utilisant l'option -r), sans créer ces fichiers. Avec l'option -A, les fichiers individuels de chaque piste ne sont pas créés.
-o (always | never | larger) 
Remplacer les pistes dans le répertoire complet.
Quand streamripper rippe les pistes, elles sont placées dans un répertoire incomplet jusqu'à ce qu'elles soient terminées. Normalement, elles sont ensuite déplacées dans le répertoire complet. Cependant, quand la piste est déjà là, vous pouvez utiliser cette option pour indiquer à streamripper ce que vous désirez faire. Il y a trois choix : toujours (always), jamais (never) et plus grand (larger). si vous ne précisez aucune des options de -o sur la ligne de commande, la stratégie "-o larger" est utilisée.
Si vous utilisez l'option "-o never", cela indique à streamripper de ne jamais remplacer (écrire par dessus) un fichier existant dans le répertoire complet.
Si vous utilisez l'option "-o always", cela indique à streamripper de toujours remplacer un fichier existant dans le répertoire complet.
Si vous utilisez l'option "-o larger", cela indique à streamripper de remplacer un fichier existant dans le répertoire complet si le nouveau fichier est plus grand.
-t 
Ne pas remplacer les pistes dans le répertoire incomplet
Normalement streamripper écrit les fichiers dans le répertoire incomplet, puis les déplace dans le répertoire de base (le répertoire complet) quand c'est fini. Si le fichier avec le nom de la piste existe déjà dans l'incomplet, il remplacera l'ancienne piste. Quand vous utilisez le drapeau -t, cela indique à streamripper de sauvegarder le fichier existant dans l'incomplet (en ajoutant un numéro de version), puis de créer le nouveau fichier.
Ceci est utile pour les flux qui n'ont pas de méta données. Car ces flux n'ont qu'un seul fichier, se reconnecter causera le remplacement du fichier existant, ce qui n'est pas souhaité.
-T 
Tronquer les pistes terminées dans le répertoire incomplet
Quand vous ne remplacez pas les fichiers du répertoire complet, un duplicata des fichiers reste normalement dans le répertoire incomplet. Cette option indique à streamripper de tronquer à zéro octet les fichier du répertoire incomplet s'il existe un duplicata.
-c 
Pas de reconnexion automatique
Normalement streamripper sera très agressif et essaiera de se reconnecter sur un flux interrompu. Cette option invalide ce mode de fonctionnement.
-l secondes 
S'exécute pour un temps pré-derterminé, en secondes
Habituellement, streamripper s'exécute jusqu'à ce qu'il plante. Ou plutôt, je devrais dire jusqu'à ce que vous le tuiez. Mais vous pouvez aussi dire à streamripper de s'exécuter pour une certaine durée, puis de quitter en utilisant ce drapeau.
-M megaoctets 
Arrêter de ripper après cette quantité de mégaoctets.
Utilisez ce drapeau pour dire à streamripper de ripper un certain nombre de mégaoctets, puis d'arrêter.


-q [début] 
Ajoute un numéro de séquence aux fichiers de sortie.
Quand les fichiers sont copiés depuis le répertoire incomplet vers le complet, le nom de fichier peut être complété par un numéro de séquence (commençant à 0000). Ceci peut être utilisé pour, par exemple, indiquer l'ordre de création des fichiers. Si désiré, le comptage peut démarrer à n'importe qu'elle valeur en utilisant -q.
-i 
Ne pas ajouter les tags ID3 au fichier de sortie.
Les fichiers mp3 ont deux types différents d'informations d'en-tête qui décrivent le contenu du fichier : ID3V1 et ID3V2. Par défaut, les deux sont inclus dans les fichiers mp3 générés par streamripper. Si vous utilisez l'option, aucun n'est inclus.
-k nombre 
Sauter <nombre> pistes avant de commencer à ripper.
Quelque fois les premières quelques pistes générées par un flux ne sont pas utiles, car ce sont des publicités, l'introoduction de la station de radio, des extraits de chansons, etc. Utilisez cette option et ces pistes ne seront pas sauvegardées.
-m temps_d'attente 
Temps d'attente avant de reconnecter.
Certains flux "restent bloqués", ce qui signifie qu'ils ne se déconnectent pas bien qu'ils n'envoient plus aucune donnée. Quand cela arrive, si vous utilisez le drapeau -m, streamripper arrêtera le flux et le reconnectera après <temps d'attente> secondes d'inactivité.
-u agent utilisateur 
Utiliser un Agent Utilisateur différent de "Streamripper"
Dans le requête http, streamripper inclut un chaîne de caractères qui identifie quelle type de programme requête la connexion. Par défaut c'est la chaîne de caractères "Streamripper/1.x". Ici, vous pouvez décider de vous identifier comme étant un autre agent si vous le désirez.
-w fichier_d'analyse 
Utiliser des règles d'analyse personnalisées
Ceci indique à streamripper d'utiliser des règles personnalisées d'analyse des métadonnées. Sans ce drapeau, streamripper utilisera ses règles d'analyse incorporées.
Il existe deux cas où vous pouvez désirer faire cela. Dans le premier cas, vous utilisez un flux qui change les métadonnées à l'intérieur d'une chanson. Habituellement c'est une note de remerciement ou éventuellement une publicité pour une prochain spectacle. quand cela arrive, la piste en cours sera divisée en segments. Pour l'éviter, vous pouvez indiquer à streamripper d'ignorer les métadonnées.
Le second cas arrive lorsque les informations sur l'artiste et le titre sont envoyées dans un format inhabituel. Par exemple, elles peuvent être séparées par une virgule au lieu d'un trait d'union, ou il peut y avoir une publicité supplémentaire attachée à la fin de la chaîne de caractères des métadonnées. Dans ce cas, vous pouvez indiquer à streamripper comment il doit identifier le titre, l'artiste, l'album et les pistes d'après les métadonnées en utilisant des expressions ordinaires
Voir le fichier parse_rules.txt, qui est inclus dans votre distribution pour avoir des exemples de règles d'analyse.
-E commande_externe 
Utiliser une commande externe pour obtenir les informations de la piste.
Certains flux n'envoient pas les informations sur l'artiste ou le titre en utilisant les métadonnées, mais à la place ils utilisent d'autre moyens. Par exemple,des flux mettent à jour l'artiste et le titre courant en utilisant le html ou xml. Un autre exemple est Icecast 1.x qui envoie les métadonnées au travers d'un socket UDP.
Streamripper peut obtenir les informations sur l'artiste et le titre depuis ce genre de flux en utilisant une application d'aide, spécifiée grâce à l'option -E. L'application d'aide fonctionne en trouvant le titre et l'artiste et en l'envoyant à stdout. Streamripper lit la sortie du programme d'aide et découpe conformément la piste.
Pour vous aider à créer des commandes externes pour streamripper, regardez le fichier d'exemples fetch_external_metadata.pl, qui est inclus dans votre distribution
--debug 
Enregistre les logs de deboggage
Ceci crée un fichier appelé "gcs.txt" qui contient toutes sortes d'informations de déboggage.
--quiet 
Operation calme
N'écrit aucun texte sur la console, exepté les messages d'erreur.
--xs_silence_length=nombre 
Définit la durée du silence
Le volume doit être inférieur à xsd_min_volume pour une durée supérieure à cela.
--xs_search_window=nombre:nombre 
Etablit l'intervalle de temps de la recherche. (NdT : la fenêtre de recherche)
Cela est le temps consacré à la recherche du silence. Le premier nombre est # millisecondes avant le centre nominal, le deuxième est # ms après la position nominale de changement de piste.
--xs_offset=nombre 
Etablit le décalage du centre de l'intervalle de silence.
--xs_padding=nombre:nombre 
Etablit la durée du silence de part et d'autre du point de coupure ('prepad' avant et 'postpad' après). Le premier nombre est la durée en millisecondes à ajouter à la fin de chaque chanson. le deuxième est la durée en millisecondes à ajouter au début de chaque chanson.

[modifier] Démarrage

La façon la plus facile pour démarrer est de trouver l'URL d'un flux que vous désirez ripper, en général, je trouve l'URL (N° IP) en la chargeant dans Winamp ou xmms et en requêtant pour l'URL de la source (clic droit sur la playlist). Une fois que vous avez l'URL, vous pouvez commencer le rippage :

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper http://205.188.245.132:8038

Cela devrait ripper Monkey Radio (au 1/10/2001), les pistes sont placées dans deux répertoires, un est appelé "Monkey Radio" et un sous répertoire "Monkey Radio/incomplete", le répertoire incomplet est destiné aux pistes dont streamripper ne connait pas le début ou la fin. La première et la dernière piste que vous rippez par exemple, sont dans le répertoire incomplet.

Vous pouvez aussi écouter le flux en créant un serveur relais :

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper http://205.188.245.132:8038 -r

Quand le programme démarre il affichera quel port relaye le flux, le 8000 par défault mais vous pouvez en choisir un autre. Pour écouter le serveur relais, ouvrez XMMS ou Winamp et entrez le nom de votre machine avec le port comme vous le feriez avec n'importe quel autre flux.

[modifier] Détection du point de coupure

Streamripper coupe automatiquement les pistes d'après la détection d'un silence prés du méta-intervalle du changement de piste. Cependant, cette méthode est imparfaite, et quelque fois la coupure de la piste se produit trop tôt ou trop tard. Ces options permettront un réglage précis de la coupure de piste pour les flux qui utilisent le fondu-enchaîné et qui provoquent l'échec de la routine de détection automatique des silences de Streamripper.

Divers drapeaux --xs peuvent être utilisés pour ajouter un décalage aux flux qui ont un méta-intervalle qui arrive trop tôt ou trop tard, pour ajouter un silence supplémentaire au début et à la fin de chaque chanson, et pour décider où placer les fenêtres de recherche et les silences.

[modifier] Coupure par défaut

L'algorithme de coupure par défaut est utilisé quand aucun silence ne peut être trouvé. Supposez que vous ayez un méta-int (NdT : ??) avec une information de changement de piste au temps "mi" (voir figure ci-dessous).

Si le xs_offset est positif, le point de séparation des pistes "ts" est après le point "mi". Si xs_offset est négatif, "ts" est avant"mi". Une fois "ts" déterminé, les valeurs "prepad" et "postpad" définies par l'utilisateur sont utilisées pour définir où commence la piste suivante "ntb", et où se termine la piste précédente "pte". L'intervalle entre "ntb" et "pte" sera copié sur les deux chansons.

/mi
|
|           /ts
|-----------|
  xs_offset |
            |
            |
  /ntb      |         /pte
  |---------|---------|
    prepad    postpad

Nota:

  • ts = track separation = séparation des pistes
  • ntb = new track beginning = début de la nouvelle piste
  • pte = previous track ending = fin de la piste précédente
  • prepad = precedent padding = intervalle antérieur
  • postpad = posterior padding = intervalle postérieur

[modifier] Silences de séparation

Le découpage basé sur les silences de séparation est similaire au découpage par défaut, seulement un peu plus complexe. De nouveau, supposons que vous ayez un meta-int (NdT ??) avec l'information de changement de piste au temps "mi" (voir figure ci-dessous).

Un fenêtre de recherche "search_win" est déterminée par les champs xs_offset, pre_sw, et post_sw. Le début de la fenêtre de recherche est à : mi + xs_offset - pre_sw et la fin de la fenêtre de recherche est à : mi + xs_offset + post_sw.

S'il y a un intervalle de silence de longueur "silence_win" à l'intérieur de "search_win", le centre de "silence_win" est choisi comme point de séparation des pistes "ts".

Une fois "ts" déterminé, les valeurs "prepad" et "postpad" définies par l'utilisateur sont utilisées pour définir où commence la piste suivante "ntb", et où se termine la piste précédente "pte". L'intervalle entre "ntb" et "pte" sera copié sur les deux chansons.


    /mi
    |
    |-----------|
      xs_offset |
                |
            ts\ |
      |-------+-|---------| *search_win (intervalle de recherche)
       pre_sw |   post_sw
              |
          |---+---| *silence_win (intervalle de silence)
              |
/ntb          |         /pte
|-------------|---------|
     prepad    postpad

Nota:

  • win = windows = fenêtre (au sens intervalle compris entre début et fin d'un laps de temps)
  • search_win = fenêtre de recherche
  • pre_sw = previous searching windows = fenêtre de recherche antérieure
  • post_sw = posterior searching windows = fenêtre de recherche postérieure

[modifier] Exemples

Ripper depuis un flux:

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL

Ripper depuis un flux pendant une heure:

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL -l 3600

Ripper depuis un flux, en plaçant les fichiers mp3 dans le répertoire /my/music/stream1:

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL -d /my/music/stream1 -s

Ripper depuis un flux, en créant un seul fichier et non pas des pistes individuelles :

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL -a -A

Ripper depuis un flux, et créer un flux relais au port 9000:

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL -r 9000

Ripper depuis un flux, créer un flux relais au port 8000, et autoriser 20 clients à se connecter :

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL -r -R 20

[modifier] Exemples de points de coupure

Chaque chanson contient environ 5 secondes de la chanson précédente. Comment puis-je faire cela ?

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL --xs_offset=5000

Chaque chanson contient environ 5 secondes de la chanson suivante. Comment puis-je faire cela ?

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL --xs_offset=-5000

Chaque chanson contient entre 5 et 10 secondes de la chanson précédente, mais cela dépend de la chanson. Comment puis-je inclure toute cette partie dans les deux chansons, et les éditer plus tard ?

Image:Konsole.png
[utilisateur@ordi ~]$ streamripper URL --xs_offset=7500 --xs_padding=2500:2500

[modifier] Ressources

Veuillez vérifier les sites Web suivants. Un forum lié à la page d'accueil de streamripper peut être utilisé pour discuter et poser des questions.

Page d'accueil de streamripper :

http://streamripper.sourceforge.net/

Page du projet Sourceforge :

http://sourceforge.net/projects/streamripper

Shoutcast

http://www.shoutcast.com

Icecast

http://www.icecast.org

[modifier] Licence

Copyright © 2000-2002 Jon Clegg, © 2004-2005 Gregory C. Sharp. La libre utilisation de ce logiciel est autorisée sous les termes de la licence GNU / General Public License (GPL)