Yop yop, ca faisait un petit bout que j'avais pas posté sur le forum même si je traînais toujours dans les parages quotidiennement.
Aujourd'hui je propose un outils concocté par mes soins, vous ne m'en voudrez pas si je n'ai pas développé d'interface graphique, ni même lié les deux scripts (extraction et visionneur) en un seul, je ferai sans doutes tout ça, mais pour l'heure j'avais trop hâte de mettre en ligne tout ça.... !
Première chose, le script est fait pour fonctionner avec les fichiers sauvegardes de
SMS Backup & Restore, je sais pas si le stockage de sms est le même avec d'autres applications ou même avec d'autres OS... Bref avec celui là, ca marche ! ^^
Le but premier était d'exporter des sms que j'ai avec une amie (ayant formaté son tel sans sauvegarder nos messages), donc pour moi, de faire une sauvegarde et de trier les messages pour garder que ceux que j'ai avec elle :
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Warden
#ce ----------------------------------------------------------------------------
#include <File.au3>
#region ------------------------------------------------------------------------
#region Variables :
#endregion ---------------------------------------------------------------------
Global $pFichier1 = "[b]sms-20120117191657.xml[/b]", $pFichier2 = "[b]trié.xml[/b]"
Global $ContactName = "[b]Toto le Chat[/b]"
#region ------------------------------------------------------------------------
#region Script :
#endregion ---------------------------------------------------------------------
$Fichier1 = FileOpen($pFichier1,0)
$Fichier2 = FileOpen($pFichier2,1)
$NbrLignes = _FileCountLines($pFichier1)
If $Fichier1 = -1 Then
MsgBox(0, "Error", "Unable to open file1.")
Exit
EndIf
If $Fichier2 = -1 Then
MsgBox(0, "Error", "Unable to open file2.")
Exit
EndIf
$ligne = 0
$Copies = 0
While $ligne <= $NbrLignes
$ligne += 1
$ContenuLigne = FileReadLine($Fichier1,$ligne)
If StringInStr($ContenuLigne,'contact_name="'&$ContactName&'"') <> 0 Then
FileWriteLine($Fichier2,$ContenuLigne)
$Copies += 1
EndIf
ToolTip("Message n°"&$ligne&"/"&$NbrLignes&"."&@CRLF&"Copiés : "&$Copies)
WEnd
MsgBox(0,"Fin","Messages copiés avec succès ! :D")
Exit
J'ai mis en gras les variables à modifier.
Le code était du bricolage, donc n'est pas spécialement propre et suis bien plus content de celui qui suit.
Afin de pouvoir réimporter les messages sur le téléphone une remise en forme du fichier manuelle est nécessaire en remettant les trois premières lignes ainsi que la dernière que contient le fichier initial, et aussi de remettre un nombre de messages corrects. Voir d'inverser tout un tas de valeurs si la sauvegarde n'est pas pour vous...
Le second script sert à présenter d'une façon esthétique le fichier de messages triés afin de pouvoir lire les messages sur le pc comme ceci :
Le script met en forme d'une facon extrèmement simple, il crée un fichier HTML dans lequel il place les messages en fonction de leur provenance, voilà c'est tout, et le script :
► Afficher le texte
Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version: 3.3.6.1
Author: Warden
#ce ----------------------------------------------------------------------------
#include <File.au3>
#region ------------------------------------------------------------------------
#region Variables :
#endregion ---------------------------------------------------------------------
;~ Variables de mise en forme
Global $cContact1 = "[b]66CCFF[/b]", $cContact2 = "[b]CCCCCC[/b]", _
$cBordure = "[b]999999[/b]", $tMarge = [b]2[/b]
Global $largeur_totale = [b]300[/b], $largeur_vides = [b]50[/b], _
$largeur_messages = $largeur_totale - $largeur_vides
Global $eCompil = @ScriptDir & "\Res\sms_compil_" & @YEAR & "-" & @MON & "-" & @MDAY & ".htm"
;~ Variables à modifier
Global $nContact1 = "[b]Lau[/b]", $nContact2 = "[b]Yann[/b]"
$xmlFile = "[b]Fichier-a-Ouvrir.xml[/b]"
;~ Variables déclarées
Dim $file,$Ligne,$rLigne,$fType
#region ------------------------------------------------------------------------
#region Script :
#endregion ---------------------------------------------------------------------
$totalLigne = _FileCountLines($xmlFile)
$xmlOpened = FileOpen($xmlFile)
_tHead()
While $Ligne <= $totalLigne
$Ligne += 1
$rLigne = FileReadLine($xmlOpened,$Ligne)
If StringInStr($rLigne,"sms protocol") <> 0 Then
If StringInStr($rLigne,'type="1"') Then $fType = 1
If StringInStr($rLigne,'type="2"') Then $fType = 2
$cMessage = StringRegExp($rLigne, 'body=(.*?) toa=', 1)
$cMessage = StringReplace($cMessage[0], 1, " ")
$cMessage = StringReplace($cMessage, stringlen($cMessage), " ")
_tContact($fType,$cMessage)
_tInterligne()
EndIf
ToolTip("Mise en page en cours, message n°" & $Ligne-3 & "/" & $totalLigne-4)
WEnd
_tFoot()
_Close()
#region ------------------------------------------------------------------------
#region Fonctions :
#endregion ---------------------------------------------------------------------
Func _Close()
FileClose($xmlOpened)
MsgBox(0, "Mise en page terminée !", "La mise en page de vos sms est terminée ;)", 1)
Exit
EndFunc
Func _tContact($type,$message)
$contenu = ""
If $type = 1 Then
$contenu = '<tr>' & @CRLF & _
'<td width="' & $largeur_messages & '" colspan="2" bgcolor="#' & $cContact1 & '" class="marge"><div align="justify"> <b>' & $nContact1 & ' :</b><br>' & $message & '</div></td>' & @CRLF & _
'<td width="' & $largeur_vides & '"></td>' & @CRLF & _
'</tr>' & @CRLF
ElseIf $type = 2 Then
$contenu = '<tr>' & @CRLF & _
'<td width="' & $largeur_vides & '"></td>' & @CRLF & _
'<td colspan="2" bgcolor="#' & $cContact2 & '" class="marge" width="' & $largeur_messages & '"><div align="justify"> <b>' & $nContact2 & ' :</b><br>' & $message & '</div></td>' & @CRLF & _
'</tr>' & @CRLF
EndIf
FileWrite($file,$contenu)
EndFunc
Func _tHead()
$file = FileOpen($eCompil,1)
$contenu = '<style type="text/css">' & @CRLF & _
'.marge {' & @CRLF & _
' border: thin solid ' & $cBordure & ';' & @CRLF & _
'padding: ' & $tMarge & 'px;' & @CRLF & _
'}' & @CRLF & _
'</style>' & @CRLF & _
'<b>Total des messages :</b>' & $totalLigne-4 & '' & @CRLF & _
'<div align="center">' & @CRLF & _
'<table width="' & $largeur_totale & '">' & @CRLF
FileWrite($file,$contenu)
EndFunc
Func _tFoot()
$contenu = '</table></div>' & @CRLF
FileWrite($file,$contenu)
FileClose($file)
EndFunc
Func _tInterligne()
$contenu = '<tr>' & @CRLF & _
'<td></td>' & @CRLF & _
'<td></td>' & @CRLF & _
'<td></td>' & @CRLF & _
'</tr>' & @CRLF
FileWrite($file,$contenu)
EndFunc
Tout est customisable en modifiant les valeurs de la partie "variables".
Reste à faire :
- Inclure la date dans les messages.
- Une GUI afin de remplir plus aisément les variables et afin de pouvoir exporter le projet final surtout
- Un navigateur intégré afin d'afficher les pages sans aller les chercher dans le dossier.
Voilà !! Bonne soirée à tous