68 lines
1.7 KiB
Plaintext
68 lines
1.7 KiB
Plaintext
|
#!/usr/bin/perl
|
||
|
|
||
|
# dumpsms - Dump the SMS logs saved by "SMS Backup & Restore" into friendly
|
||
|
# readable HTML files!
|
||
|
#
|
||
|
# Usage: dumpsms <sms-dump.xml>
|
||
|
# Ex: dumpsms sms-20120629202942.xml
|
||
|
#
|
||
|
# It will create a folder "./sms" if it doesn't exist, and output all the logs
|
||
|
# into that folder. It saves HTML files after the contact name, if available.
|
||
|
# Logs are opened in append mode, so if you run the script multiple times the
|
||
|
# logs get appended to the end of the file!
|
||
|
#
|
||
|
# --Kirsle
|
||
|
# http://sh.kirsle.net/
|
||
|
|
||
|
use 5.14.0;
|
||
|
use strict;
|
||
|
use warnings;
|
||
|
use autodie;
|
||
|
use XML::Simple;
|
||
|
|
||
|
my $xml = shift or die "$0 <*.xml>";
|
||
|
|
||
|
mkdir("sms") unless -d "sms";
|
||
|
my $ref = XMLin($xml);
|
||
|
|
||
|
foreach my $sms (@{$ref->{sms}}) {
|
||
|
my $num = $sms->{address};
|
||
|
|
||
|
my $color = $sms->{type} eq "1" ? "receive" : "send";
|
||
|
my $dir = $sms->{type} eq "1" ? "From" : "Sent to";
|
||
|
|
||
|
my $file = "./sms/$sms->{contact_name}.html";
|
||
|
if (!-f $file) {
|
||
|
open (my $fh, ">", $file);
|
||
|
print {$fh} "<!DOCTYPE html>\n"
|
||
|
. "<html>\n"
|
||
|
. "<head>\n"
|
||
|
. "<title>Conversation with $sms->{contact_name}</title>\n"
|
||
|
. "<style>\n"
|
||
|
. "body {\n"
|
||
|
. " font-family: Verdana,Arial,sans-serif;\n"
|
||
|
. " font-size: small;\n"
|
||
|
. " color: #000000;\n"
|
||
|
. "}\n"
|
||
|
. ".receive {\n"
|
||
|
. " color: #0000FF;\n"
|
||
|
. "}\n"
|
||
|
. ".send {\n"
|
||
|
. " color: #FF0000;\n"
|
||
|
. "}\n"
|
||
|
. "</style>\n"
|
||
|
. "</head>\n"
|
||
|
. "<body>\n\n";
|
||
|
close($fh);
|
||
|
}
|
||
|
|
||
|
open (my $fh, ">>:utf8", "./sms/$sms->{contact_name}.html");
|
||
|
print {$fh} "<strong class='$color'>$sms->{readable_date}</strong><br>\n"
|
||
|
. "<strong>$dir</strong> $sms->{contact_name} - $num\n"
|
||
|
. "<blockquote>$sms->{body}</blockquote>\n"
|
||
|
. "<hr>\n";
|
||
|
close($fh);
|
||
|
}
|
||
|
|
||
|
say "Wrote logs to ./sms";
|