Récupérer un livre Audible
Quand on part en vacances sans internet ni smart device, on peut vouloir écouter un livre audio qu’on possède sur son compte Audible.
Voici comment procéder pour l’écouter sur son baladeur MP3.
Version simple
On utilise Libation https://github.com/rmcrackan/Libation qui est une interface graphique qui permet d’automatiser toutes ces étapes.
Version manuelle
Installer audible-cli
Il faut récupérer audible-cli
disponible ici : https://github.com/mkb79/audible-cli
Soit on récupère la version pré-compilée, spot on récupère le module Python.
Pour la version pré-compilée, on trouve le lien sur la page. L’auteur conseille la version “OneDir” qui démarrera plus rapidement que la version “OneFile”.
Pour le module Python :
pip install audible-cli
Dans la suite de ce tutoriel, on part du principe qu’on utilise la version binaire Windows, téléchargée en “OneDir” et qu’on est dans une ligne de commande, dans le répertoire “audible” de l’archive extraite.
Cela fonctionne pareil avec le module Python.
Confirgurer audible-cli
Avant de l’utiliser, il faut le configurer pour qu’il soit connecté à notre compte.
Pour cela, on utilise la commande suivante :
audible quickstart
qui va nous poser plusieurs questions :
Welcome to the audible-cli 0.2.3 quickstart utility.
=====================================================
Quickstart will guide you through the process of build a basic
config, create a first profile and assign an auth file to the profile now.
The profile created by quickstart will set as primary. It will be used, if no
other profile is chosen.
An auth file can be shared between multiple profiles. Simply enter the name of
an existing auth file when asked about it. Auth files have to be stored in the
config dir. If the auth file doesn't exists, it will be created. In this case,
an authentication to the audible server is necessary to register a new device.
Selected dir to proceed with:
là, on peut utiliser la valeur par défaut qui écrira dans %appdata%/../local/audible
C:\Users\USER\AppData\Local\Audible
Please enter values for the following settings (just press Enter to accept a default value, if one is given in brackets).
Please enter a name for your primary profile [audible]:
Pour le nom du profil, on appuie sur Entrée
pour utiliser la valeur par défaut.
Enter a country code for the profile: fr
Please enter a name for the auth file [audible.json]:
Do you want to encrypt the auth file? [y/N]:N
Do you want to login with external browser? [y/N]: y
Do you want to login with a pre-amazon Audible account? [y/N]:
+--------------------+--------------+
| Option | Value |
+--------------------+--------------+
| profile_name | audible |
| auth_file | audible.json |
| country_code | fr |
| auth_file_password | - |
| audible_username | |
| audible_password | *** |
+--------------------+--------------+
Do you want to continue? [y/N]: y
Login with amazon to your audible account now.
Please copy the following url and insert it in a web browser of your choice:
https://www.amazon.fr/ap/signin?openid.oa2.response_type=code&openid.oa2.code_challenge_method=S256&openid.oa2.code_challenge=BLABLABLA_tres_tres_long
Now you have to login with your Amazon credentials. After submit your username and password you have to do this a second time and solving a captcha before sending the login form.
After login, your browser will show you a error page (not found). Do not worry about this. It has to be like this. Please copy the url from the address bar in your browser now.
IMPORTANT:
If you are using MacOS and have trouble insert the login result url, simply import the readline module in your script.
Please insert the copied url (after login):
On a choisi l’authentification par navigateur externe. Le programme nous donne une grosse URL qu’il faut copier / coller dans un navigateur.
Le navigateur nous demandera de nous connecter au compte Audible, puis redemandera avec un captcha. Le navigateur retournera une page d’erreur (“page introuvable”) : pas de panique c’est normal !
Il faut à présent copier l’URL de cette page et la coller dans la ligne de commande.
https://www.amazon.fr/ap/maplanding?captcha_verified=1&openid.assoc_handle=amzn_audible_ios_fr&openid.claimed_id=https%3A%2F%2Fwww.amazon.fr%2Fap%2Fid%2Famzn1.account.BLABLABLA_tres_tres_long
Successfully registered Mon Nom's Audible for iPhone.
Profile audible added to config
Config written to config.toml
Voilà, audible-cli
est désormais configuré !
Liste des livres de la bibliothèque
On peut voir la liste des livres avec la commande
audible library list
Récupérer un livre
Pour récupérer un livre, il faut d’abord connaître son identifiant. On peut trouver son identifiant soit avec la commande audible library list
soit directement dans l’URL du livre : c’est la partie entre le titre du livre et ?ref
.
Une fois l’identifiant connu, on peut récupérer le fichier AAX avec la commande :
audible download -a A01B02C08D --aax
en remplaçant A01B02C08D
par l’identifiant du livre à télécharger.
On peut choisir le répertoire de sortie avec l’option -o chemin
ou la qualité avec -q
. Toutes les options sont disponibles avec la commande :
audible download -h
On peut aussi récupérer la liste des chapitres et la couverture avec les commandes :
audible download -a A01B02C08D --chapter
audible download -a A01B02C08D --cover
Convertir en MP3
Une fois le fichier récupéré, il est au format AAX. Or ce format est chiffré. Pour pouvoir le transformer en MP3, il faut connaître la clé. Elle se récupère avec la commande :
audible activation-bytes
(c’est généralement un code de 8 chiffres / lettres, par exemple 01a02b03
)
Pour convertir le fichier, on va utiliser FFmpeg qu’il faut avoir installé sur son ordinateur : https://ffmpeg.org/download.html
La commande pour convertir le fichier est :
ffmpeg -activation_bytes 01a02b03 -i "Le_livre_que_je_viens_de_recuperer-LC_128_44100_stereo.aax" Le_livre_que_je_viens_de_recuperer.mp3
ou
ffmpeg -activation_bytes 01a02b03 -i "Le_livre_que_je_viens_de_recuperer-LC_128_44100_stereo.aax" -c copy Le_livre_que_je_viens_de_recuperer.mb4
pour conserver les métadatas.
On peut utiliser d’autres paramètres de FFmpeg pour modifier la qualité, le format de sortie, …
Cette méthode va créer un fichier MP3 qui contient tout le livre. Si on souhaite avoir le livre découpé en chapitres, on peut utiliser l’outil https://github.com/izneo-get/audible-tools qui permet de donner la commande FFmpeg à utiliser pour avoir le découpage.
python split_audible.py "Le_livre_que_je_viens_de_recuperer-chapters.json" "Le_livre_que_je_viens_de_recuperer.mp3"
L’application retournera une commande du style :
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 00:00:00.000 -t 00:45:43.877 -c copy "000 Chapitre 1.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 00:45:43.877 -t 00:53:09.910 -c copy "001 Chapitre 2.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 01:38:53.787 -t 00:56:43.139 -c copy "002 Chapitre 3.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 02:35:36.926 -t 00:46:52.122 -c copy "003 Chapitre 4.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 03:22:29.048 -t 00:45:39.118 -c copy "004 Chapitre 5.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 04:08:08.166 -t 00:39:17.104 -c copy "005 Chapitre 6.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 04:47:25.270 -t 00:49:47.131 -c copy "006 Chapitre 7.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 05:37:12.401 -t 00:35:31.127 -c copy "007 Chapitre 8.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 06:12:43.528 -t 00:37:40.114 -c copy "008 Chapitre 9.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 06:50:23.642 -t 00:37:49.123 -c copy "009 Chapitre 10.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 07:28:12.765 -t 00:39:19.124 -c copy "010 Chapitre 11.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 08:07:31.889 -t 00:36:40.439 -c copy "011 Chapitre 12.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 08:44:12.328 -t 00:35:44.455 -c copy "012 Chapitre 13.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 09:19:56.783 -t 00:41:16.129 -c copy "013 Chapitre 14.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 10:01:12.912 -t 00:43:23.142 -c copy "014 Chapitre 15.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 10:44:36.054 -t 00:40:27.112 -c copy "015 Chapitre 16.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 11:25:03.166 -t 00:44:50.124 -c copy "016 Chapitre 17.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 12:09:53.290 -t 00:41:16.129 -c copy "017 Chapitre 18.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 12:51:09.419 -t 00:45:00.132 -c copy "018 Chapitre 19.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 13:36:09.551 -t 00:45:50.124 -c copy "019 Chapitre 20.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 14:21:59.675 -t 00:53:07.124 -c copy "020 Chapitre 21.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 15:15:06.799 -t 00:52:24.121 -c copy "021 Chapitre 22.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 16:07:30.920 -t 00:49:52.123 -c copy "022 Chapitre 23.mp3" && ^
ffmpeg -i "Le_livre_que_je_viens_de_recuperer.mp3" -ss 16:57:23.043 -t 00:51:20.753 -c copy "023 Chapitre 24.mp3" && ^
echo Done!
qu’il faudra copier / coller dans le prompt pour effectuer le découpage.