Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 16/08/2010, à 15:27

shamanyan

[SCRIPT] iPhone : Convertion et ajout facile de sonneries

Bonjour,

Voici un script pour convertir automatiquement des fichiers mp3 en sonneries pour iPhone et les ajouter à celui-ci.
Ceci est mon premier script, il est surement largement perfectible big_smile . Aussi, n'hésitez pas à me mettre un commentaire et/ou remarque.

Je l'ai testé sur ma configuration: Ubuntu 10.04 et Iphone 3G-OS4.0.1 (jailbreak mais je ne penses que ce soit  obligatoire ??!!)
Si vous tournez avec d'autre système, merci de l'indiquer pour pouvoir créer une liste de compatibilités.

Je poste le script lui-même ainsi qu'un mod op pour les débutants.


Testé avec succès sur :
10.04 et Iphone 3G -> OS 4.0.1 jailbreak
10.04 et Iphone 3G -> OS 4.0.2 non-jailbreak
10.10 et Iphone 4 -> OS 4.2.1 non-jailbreak  (ne necessite plus le reboot de l'iphone)


Le script:

#!/bin/bash

#####################################################################################
#                                 iRingtones                                        #
#                                 ----------                                        #
# BUT: Ce script a été conçu pour faciliter l'ajout de sonnerie sur un iPhone.      #
# Il convertit les mp3 du dossier dans lequel il se trouve et crée le fichier       #
# de configuration, sans perdre les sonneries déjà existantes.                      #
# La configuration et les sonneries sont ensuite copiées vers l'iPhone.             #
#-----------------------------------------------------------------------------------#
# Dépendances :                                                                     #
# - ffmpeg                                                                          #
# - libfaac (dispo dans libavcodec-extra-52                                         #
#                                                                                   #
#-----------------------------------------------------------------------------------#
# Author: ShamanYan        Contact: shamanyan (at) gmail (dot) com                  #
# Version: 0.1            Date: 16/08/2010                                          #
# What's new: First release!                                                        #
#                                                                                   #
#####################################################################################

#création de l'alias de cd
alias chgrep='cd'                                
#recup. chemin absolu du répertoire de travail
wkrep=$PWD                                    
#Création d'un dossier temporaire pour stocker les sonneries modifiées
mkdir $wkrep/ringtemp                                
#recup. du nom du iPhone
chgrep $HOME/.gvfs/                                
Iph=$(ls 2>&1)
#vérifie que l'iPhone est branché
color=`tput bold ; tput setaf 3`
if ! [ -e "$HOME/.gvfs/$Iph/Safari" ];                        
then
#Affiche message d'erreur si non branché
        echo "${color}
\t**********************************************************
\t*                                                        *
\t* Veillez à connecter l'iPhone avant de lancer le script *
\t*                                                        *
\t**********************************************************
"; tput sgr0                                     
        exit 0;
fi

#Si un fichier de config existe déjà, sauvegarde des sonneries existantes et du fichier de config
if [ -e "$HOME/.gvfs/$Iph/iTunes_Control/iTunes/Ringtones.plist" ];         
    then
        echo  "$color\n\nSauvegarde en cours ..."; tput sgr0
        chgrep $HOME'/.gvfs/'$Iph'/iTunes_Control/Ringtones/'
            for i in *.m4r;                     
                do
                    cp $i $wkrep/ringtemp/$i;
                done

cp $HOME/.gvfs/$Iph/iTunes_Control/iTunes/Ringtones.plist $wkrep        
#supprime les 3 dernieres lignes du fichier pour pouvoir y inserer la conf. des nouveaux morceaux
maxlin=$(wc -l $wkrep/Ringtones.plist | cut -d' ' -f1)                              
for i in `seq 0 2`;
    do 
        delete=$((maxlin-i))
        sed -i".bak" ''$delete'd' $wkrep/Ringtones.plist
    done

    else
#si le fichier de config n'existait pas : création de la première partie
        echo '<?xml version="1.0" encoding="UTF-8"?>\n<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">\n<plist version="1.0">\n<dict>\n\t<key>Ringtones</key>\n\t<dict>'> $wkrep/Ringtones.plist

fi




#retourne au répertoire de travail
chgrep $wkrep


#Boucle pour lancer la conversion des fichiers mp3 du répertoire et récupérer les différentes infos nécessaires
for i in *.mp3; 
    do 
        tune=${i%.mp3}
        newnom=`< /dev/urandom tr -dc A-Z | head -c4`;                   #nouveau nom du morceau au format iphone
        echo "$color "$tune" ... conversion en cours";tput sgr0
        ffmpeg -i "$i" -acodec libfaac -ab 128k "$PWD/ringtemp/${newnom%mp3}.m4a" #conversion du mp3 en m4a dans le répertoire temporaire
    
        guid=`< /dev/urandom tr -dc A-Z | head -c16`;                   #création du GUID (identifiant unique du morceau)
        duree=$(ffmpeg -i "$i" 2>&1 | grep Duration | cut -c13-23);          #recup. de la durée du morceau puis conversion en ms
        minute=$(echo $duree | cut -d":" -f2);
        seconde=$(echo $duree | cut -d":" -f3 | cut -d"." -f1);
        milli=$(echo $duree | cut -d":" -f3 | cut -d"." -f2);
        totaltime=$((${minute#0}*60000 + ${seconde#0}*1000 + ${milli#0}*10))
#mise en forme du fichier avec nouvelles données
        echo '\t\t<key>'$newnom'.m4r</key>\n\t\t<dict>\n\t\t\t<key>GUID</key><string>'$guid'</string>\n\t\t\t<key>Name</key><string>'$tune'</string>\n\t\t\t<key>Total Time</key><integer>'$totaltime'</integer>\n\t\t\t<key>Purchased</key><false/>\n\t\t</dict>'>> Ringtones.plist;
                                        
    done

#cloturer le fichier de configuration
echo '\t</dict>\n</dict>\n</plist>'>>$wkrep/Ringtones.plist        

#change l'extension de m4a en m4r puis copie vers iPhone
chgrep $wkrep/ringtemp/
echo  "$color\n\ncopie vers iPhone ..."
for i in *.m4a; do mv $i ${i%m4a}m4r; done
#copie les morceaux et le fichier de config. dans l'iPhone
for i in *.m4r; do cp $i $HOME/.gvfs/$Iph/iTunes_Control/Ringtones/$i; done
cp $wkrep/Ringtones.plist $HOME/.gvfs/$Iph/iTunes_Control/iTunes/Ringtones.plist
echo "\n\tTerminé !\n "; tput sgr0
#Suppression des fichiers et du dossier créés lors du script
rm -r $wkrep/Ringtones.plist
rm -r $wkrep/Ringtones.plist.bak
rm -r $wkrep/ringtemp
exit 0;

#####################################################################################
# Remerciements: JPMessager pour sa passion du libre(EIP083) - Luchiban et twocats  #
# pour leurs aides - CLYC pour le soutien - RsxUTC ChF et JMB - mao-40 - FloS -     #
# Anaei .                                                                           #
# PFFFffffff: C(b)M69 -                                                             #
#####################################################################################

mode-op:

1) installer les programmes nécessaires au fonctionnement, dans un terminal, lancez:

sudo apt-get install ffmpeg
sudo apt-get install libfaac0
ou
sudo apt-get install libavcodec-extra-52

Si vous passez sous Maverick: pensez à mettre à jour libavcodec-extra-52

2) Télécharger le fichier et le copier dans le répertoire ou ce trouve les mp3 à convertir
3) rendre le fichier exécutable

cd /DossierDesMp3
sudo chmod u+x iRingtones

4) Brancher l'Iphone, fermer les fenêtres qui peuvent s'ouvrir
5) lancer le script

sh iRingtones

6) Redémarrez le téléphone pour la prise en compte des nouvelles sonneries ...  Enjoy !! big_smile

Infos: la durée des fichiers n'a pas d'importance, ils doivent être en .mp3.




Pistes d'améliorations envisagées:
- rendre le script utilisable en "nautilus-scripts"
- intégrer la conversion d'autres formats de piste audio
- supprimer les infos retournés lors de la conversion par ffmpeg (si pas en nautilus-Scripts)
- intégrer une barre de progression lors de la conversion et du transfert des fichiers de et vers l'iPhone.

Bref encore pas mal de boulot et de découverte ... tout ce que j'aime wink;oP

Dernière modification par shamanyan (Le 10/01/2011, à 13:45)

Hors ligne

#2 Le 18/08/2010, à 21:26

al_boon

Re : [SCRIPT] iPhone : Convertion et ajout facile de sonneries

ne fonctionne pas chez moi Iphone a jour (4.0.1)...

les répertoires internes ne sont pas les mêmes apparemment

Dernière modification par al_boon (Le 18/08/2010, à 21:27)


viva ubuntu ^^ et deux personnes converties !!

ps: il est pas beau mon fils ? (cf mon avatar)

Hors ligne

#3 Le 19/08/2010, à 22:01

shamanyan

Re : [SCRIPT] iPhone : Convertion et ajout facile de sonneries

al_boon a écrit :

ne fonctionne pas chez moi Iphone a jour (4.0.1)...

les répertoires internes ne sont pas les mêmes apparemment

J'ai moi aussi un iphone à jour (4.0.1) et ça fonctionne neutral , as-tu un iPhone 3, 3G, 3GS ou 4?? Jailbreak ou non?

Merci d'avance

Hors ligne

#4 Le 13/05/2019, à 20:38

damoioi

Re : [SCRIPT] iPhone : Convertion et ajout facile de sonneries

7 ans plus tard, ce script fonctionne presque pareil, deux ptits trucs:

- en suivant les instructions ici, j'avais mon iPhone monté à "/media/$USER/ipomme", j'ai donc fait un

ln -s /media/$USER/ipomme .gfvs/ipomme

pour que le script reconnaisse le tel
- j'ai changé le convertisseur en AAC car la commande utilisée dans le script ne fonctionne plus (sur le dernier Elementary OS en tout cas), voila ma commande:

ffmpeg -i "$i" -c:a aac -ab 128k "$PWD/ringtemp/${newnom%mp3}.m4a" (le plus important c'est le "-c:a aac")

EDIT: Et aussi un ptit

mkdir /home/gj/.gvfs/ipomme/iTunes_Control/Ringtones

mille mercis, ca fait un an que j'avais abandonné, j'aurai jamais cru que c'était possible ! wow ! tellement genial !

Dernière modification par damoioi (Le 13/05/2019, à 20:52)

Hors ligne