Skip to content

Instantly share code, notes, and snippets.

@matael
Created July 9, 2012 21:28
Show Gist options
  • Select an option

  • Save matael/3079070 to your computer and use it in GitHub Desktop.

Select an option

Save matael/3079070 to your computer and use it in GitHub Desktop.
Migration PP

Renseignez les infos liées aux bases et lancez le script via

perl moulinette_v1.pl

Modules requis :

  • DBI
  • DBD::mysql

Installation

sudo apt-get install perl-dbi perl-dbd-mysql

Modification, redistribution, utilisation : conforme à la WTFPL

DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
Version 2, December 2004
Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
Everyone is permitted to copy and distribute verbatim or modified
copies of this license document, and changing it is allowed as long
as the name is changed.
DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. You just DO WHAT THE FUCK YOU WANT TO.
#!/usr/bin/env perl
use strict;
use warnings;
use IO::File;
use Text::CSV;
use DBI;
# Listing script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL #
# No warranty, feel free to use, modify, redistribute.
my $file_name = "musiques.csv";
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
my $sql = "SELECT id_articles , nomMusique_articles FROM blog_articles ORDER BY id_articles";
my $sth = $dbh_source->prepare($sql);
$sth->execute();
my $file = IO::File->new($file_name, 'w');
print("Writing list to $file_name\n");
my $csv = Text::CSV->new({
binary => 1,
sep_char => ';'
});
$csv->eol("\r\n");
$csv->print($file, ["id article","dump DB","lien reconstitué"]);
my $musique_filename;
while (my $row = $sth->fetchrow_hashref) {
$musique_filename = $row->{nomMusique_articles};
$musique_filename =~ s/mp3/ogg/;
$csv->print($file, [$row->{id_articles}, $musique_filename, "http://partipirate.org/radio/musique/$musique_filename"]);
}
$file->close;
#!/usr/bin/env perl
use strict;
use warnings;
use IO::File;
use DBI;
# Listing script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL #
# No warranty, feel free to use, modify, redistribute.
my $file_name = "musiques.html";
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
my $sql = "SELECT id_articles , nomMusique_articles FROM blog_articles ORDER BY id_articles";
my $sth = $dbh_source->prepare($sql);
$sth->execute();
my $file = IO::File->new($file_name, 'w');
print("Writing fred log to $file_name\n");
my $html = "
<!DOCTYPE html>
<html lang='fr'>
<head>
<title>Liste des musiques DB v4</title>
<meta charset='utf8'/>
</head>
<body>
<h1>Liste des musiques DB v4</h1>
<ul>
";
$file->write($html);
my $musique_filename;
while (my $row = $sth->fetchrow_hashref) {
$musique_filename = $row->{nomMusique_articles};
$musique_filename =~ s/mp3/ogg/;
$file->write('<li><a href="http://partipirate.org/radio/musique/'.$musique_filename.'"> Article #'.$row->{id_articles}.' : '.$musique_filename.'</a></li>')
}
$file->write('</ul>\n</body>\n</html>');
$file->close;
use strict;
use warnings;
use DBI;
# Migration script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL
#
# No warranty, feel free to use, modify, redistribute.
sub format_date {
my $old = shift;
if (defined $old) {
return $old =~ s/(\d{2})\/(\d{2})\/(\d{4})/$3-$2-$1 12:00:00/;
} else {
return "0000-00-00 00:00:00";
}
}
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
## DB CIBLE ##
my %cible = (
'host' => 'localhost',
'dbname' => 'pp2.sqlite',
#'user' => 'root',
#'pass' => 'lolilol'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
my $dbh_cible = DBI->connect("dbi:mysql:host=$cible{host};dbname=$cible{dbname}",
$cible{user}, $cible{pass}, {RaiseError => 1});
## PROCESS ##
# prepa cible
my $sql_cible = q{
INSERT INTO spip_articles
(
`titre`,
`id_rubrique`,
`chapo`,
`date`,
`id_licence`,
`virtuel`
)
VALUES (
?,
?,
?,
?,
?,
?
)
};
my $sth_cible = $dbh_cible->prepare($sql_cible);
my %record;
$record{id_rubrique} = 2;
$record{id_licence} = 0;
my $sql_lien = q{
INSERT INTO spip_auteurs_liens (
`id_auteur`,
`id_objet`,
`objet`
)
VALUES (
3,
?,
"article"
)
};
my $sth_lien = $dbh_cible->prepare($sql_lien);
# select final
my $sql_select = q{
SELECT id_article
FROM spip_articles
ORDER BY id_article DESC
LIMIT 1
};
my $sth_select = $dbh_cible->prepare($sql_select);
# requete source :
my $sql_source = q{
SELECT id_articles, title_articles, content_articles,
dates_articles
FROM blog_articles
ORDER BY id_articles ASC
};
my $sth_source = $dbh_source->prepare($sql_source);
$sth_source->execute();
# Copying
my $tmp;
my $id;
while (my $row = $sth_source->fetchrow_hashref) {
$record{titre} = $row->{title_articles}." (archive)";
#$tmp = split(/<\s?br\s?\/?>/, $row->{content_articles});
#$record{chapo} = $tmp->[0];
$record{chapo} = '';
$record{date} = format_date($row->{date});
$record{virtuel} = "https:/partipirate.org/blog/com.php?id=$row->{id_articles}";
$sth_cible->execute(
$record{titre},
$record{id_rubrique},
$record{chapo},
$record{date},
$record{id_licence},
$record{virtuel}
);
$sth_select->execute();
$tmp = $sth_select->fetchrow_hashref();
$id = $tmp->{id_article};
$sth_lien->execute($id);
print "Article $row->{id_articles} migrated\n";
}
use strict;
use warnings;
use IO::File;
use DBI;
# Migration script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL
#
# No warranty, feel free to use, modify, redistribute.
## CONFIG
my $logfile_name = "log1";
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
## DB CIBLE ##
my %cible = (
'host' => 'localhost',
'dbname' => 'pp_test.sqlite',
#'user' => 'root',
#'pass' => 'lolilol'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
my $dbh_cible = DBI->connect("dbi:mysql:host=$cible{host};dbname=$cible{dbname}",
$cible{user}, $cible{pass}, {RaiseError => 1});
## PROCESS ##
# init a logfile
my $logfile = IO::File->new($logfile_name, 'w');
print("Writing log to $logfile_name\n");
# how to create beautiful dates
sub format_date {
my $old = shift;
if (defined $old) {
return $old =~ s/(\d{2})\/(\d{2})\/(\d{4})/$3-$2-$1 12:00:00/;
} else {
return "0000-00-00 00:00:00";
}
}
# prepa cible
my $sql_cible = q{
INSERT INTO spip_articles
(
`titre`,
`id_rubrique`,
`texte`,
`date`,
`id_licence`
)
VALUES (
?,
?,
?,
?,
?
)
};
my $sth_cible = $dbh_cible->prepare($sql_cible);
my %record;
$record{id_rubrique} = 2;
$record{id_licence} = 0;
my $sql_lien = q{
INSERT INTO spip_auteurs_liens (
`id_auteur`,
`id_objet`,
`objet`
)
VALUES (
3,
?,
"article"
)
};
my $sth_lien = $dbh_cible->prepare($sql_lien);
# select final
my $sql_select = q{
SELECT id_article
FROM spip_articles
ORDER BY id_article DESC
LIMIT 1
};
my $sth_select = $dbh_cible->prepare($sql_select);
# requete source :
my $sql_source = q{
SELECT *
FROM blog_articles
ORDER BY id_articles ASC
};
my $sth_source = $dbh_source->prepare($sql_source);
$sth_source->execute();
# Copying
my $tmp;
my $id;
my $count = 0; # DEBUG
while ($count < 10 and my $row = $sth_source->fetchrow_hashref) {
$record{titre} = $row->{title_articles};
$record{date} = format_date($row->{date});
$record{texte} = " <div>
<audio preload='none' src='".$row->{titreMusique_articles}."' style='width: 160px; height: 30px;' controls>La fonctionalité 'audio' ne fonctionne qu'avec certains navigateurs.</audio><br><br>
by <a href='".$row->{lienMusique_articles}."' target='_blank'>".$row->{nomMusique_articles}."</a>
<img class='imageArticle' src='".$row->{nomLienImage_articles}."' alt='".$row->{nomImage_articles}."' />
<br />https://pad.partipirate.org/zmpOEKR6cw
<a href='".$row->{lienImage_articles}."' target='_blank'>".$row->{titreImage_articles}."</a>
</div>
".$row->{content_articles};
$sth_cible->execute(
$record{titre},
$record{id_rubrique},
$record{texte},
$record{date},
$record{id_licence},
);
$sth_select->execute();
$tmp = $sth_select->fetchrow_hashref();
$id = $tmp->{id_article};
$sth_lien->execute($id);
# print ID to logfile
$logfile->print("$tmp\n");
# Say what we've done
print "Article $row->{id_articles} migrated\n";
$count++; # DEBUG
}
$logfile->close();
#!/usr/bin/env perl
use strict;
use warnings;
use IO::File;
use DBI;
# Migration script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL #
# No warranty, feel free to use, modify, redistribute.
## CONFIG
my $logfile_name = "log1";
my $logfred_name = "log_fred1";
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
## DB CIBLE ##
my %cible = (
'host' => 'mysql2.alwaysdata.com',
'dbname' => 'testpp_spip',
'user' => 'testpp',
'pass' => 'testpp2'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
my $dbh_cible = DBI->connect("dbi:mysql:host=$cible{host};dbname=$cible{dbname}",
$cible{user}, $cible{pass}, {RaiseError => 1});
## PROCESS ##
# init a logfile
my $logfile = IO::File->new($logfile_name, 'w');
print("Writing log to $logfile_name\n");
my $logfred = IO::File->new($logfred_name, 'w');
print("Writing fred log to $logfred_name\n");
# dates/heures, from Harpalos {{{
my %les_dates; my %les_heures;
$les_dates{2}='2008'; $les_heures{2}='00:00';
$les_dates{3}='2008'; $les_heures{3}='00:01';
$les_dates{4}='2008'; $les_heures{4}='00:02';
$les_dates{5}='2008'; $les_heures{5}='00:03';
$les_dates{6}='2008'; $les_heures{6}='00:04';
$les_dates{7}='2008'; $les_heures{7}='00:05';
$les_dates{8}='2008'; $les_heures{8}='00:06';
$les_dates{10}='2008'; $les_heures{10}='00:07';
$les_dates{11}='2008'; $les_heures{11}='00:08';
$les_dates{13}='2008'; $les_heures{13}='00:09';
$les_dates{14}='2008'; $les_heures{14}='00:10';
$les_dates{15}='2008'; $les_heures{15}='00:11';
$les_dates{17}='2008'; $les_heures{17}='00:12';
$les_dates{18}='2008'; $les_heures{18}='00:13';
$les_dates{19}='2008'; $les_heures{19}='00:14';
$les_dates{20}='2008'; $les_heures{20}='00:15';
$les_dates{21}='2008'; $les_heures{21}='00:16';
$les_dates{22}='2008'; $les_heures{22}='00:17';
$les_dates{23}='2008'; $les_heures{23}='00:18';
$les_dates{25}='2008'; $les_heures{25}='00:19';
$les_dates{26}='2008'; $les_heures{26}='00:20';
$les_dates{27}='2008'; $les_heures{27}='00:21';
$les_dates{28}='2008'; $les_heures{28}='00:22';
$les_dates{29}='2008'; $les_heures{29}='00:23';
$les_dates{30}='2008'; $les_heures{30}='00:24';
$les_dates{31}='2008'; $les_heures{31}='00:25';
$les_dates{32}='2008'; $les_heures{32}='00:26';
$les_dates{33}='2008'; $les_heures{33}='00:27';
$les_dates{34}='2008'; $les_heures{34}='00:28';
$les_dates{35}='2008'; $les_heures{35}='00:29';
$les_dates{36}='2008'; $les_heures{36}='00:30';
$les_dates{37}='2008'; $les_heures{37}='00:31';
$les_dates{38}='2008'; $les_heures{38}='00:32';
$les_dates{39}='2008'; $les_heures{39}='00:33';
$les_dates{41}='2008'; $les_heures{41}='00:34';
$les_dates{42}='2008'; $les_heures{42}='00:35';
$les_dates{43}='2008'; $les_heures{43}='00:36';
$les_dates{45}='2008'; $les_heures{45}='00:37';
$les_dates{46}='2008'; $les_heures{46}='00:38';
$les_dates{47}='2008'; $les_heures{47}='00:39';
$les_dates{48}='2008'; $les_heures{48}='00:40';
$les_dates{49}='2008'; $les_heures{49}='00:41';
$les_dates{50}='2008'; $les_heures{50}='00:42';
$les_dates{51}='2008'; $les_heures{51}='00:43';
$les_dates{52}='2008'; $les_heures{52}='00:44';
$les_dates{53}='2008'; $les_heures{53}='00:45';
$les_dates{55}='2008'; $les_heures{55}='00:46';
$les_dates{56}='2008'; $les_heures{56}='00:47';
$les_dates{59}='2008'; $les_heures{59}='00:48';
$les_dates{60}='2008'; $les_heures{60}='00:49';
$les_dates{61}='2008'; $les_heures{61}='00:50';
$les_dates{62}='2008'; $les_heures{62}='00:51';
$les_dates{63}='2008'; $les_heures{63}='00:52';
$les_dates{64}='2008'; $les_heures{64}='00:53';
$les_dates{65}='2008'; $les_heures{65}='00:54';
$les_dates{66}='2008'; $les_heures{66}='00:55';
$les_dates{67}='2008'; $les_heures{67}='00:56';
$les_dates{68}='2008'; $les_heures{68}='00:57';
$les_dates{69}='2008'; $les_heures{69}='00:58';
$les_dates{70}='2008'; $les_heures{70}='00:59';
$les_dates{71}='2008'; $les_heures{71}='01:00';
$les_dates{72}='2008'; $les_heures{72}='01:01';
$les_dates{73}='2008'; $les_heures{73}='01:02';
$les_dates{74}='2008'; $les_heures{74}='01:03';
$les_dates{75}='2008'; $les_heures{75}='01:04';
$les_dates{77}='2008'; $les_heures{77}='01:05';
$les_dates{78}='2008'; $les_heures{78}='01:06';
$les_dates{79}='2008'; $les_heures{79}='01:07';
$les_dates{80}='2008'; $les_heures{80}='01:08';
$les_dates{81}='2008'; $les_heures{81}='01:09';
$les_dates{82}='2008'; $les_heures{82}='01:10';
$les_dates{83}='2008'; $les_heures{83}='01:11';
$les_dates{84}='2008'; $les_heures{84}='01:12';
$les_dates{85}='2009'; $les_heures{85}='00:00';
$les_dates{86}='2009'; $les_heures{86}='00:01';
$les_dates{87}='2009'; $les_heures{87}='00:02';
$les_dates{88}='2009'; $les_heures{88}='00:03';
$les_dates{89}='2009'; $les_heures{89}='00:04';
$les_dates{90}='2009'; $les_heures{90}='00:05';
$les_dates{91}='2009'; $les_heures{91}='00:06';
$les_dates{92}='2009'; $les_heures{92}='00:07';
$les_dates{93}='2009'; $les_heures{93}='00:08';
$les_dates{94}='2009'; $les_heures{94}='00:09';
$les_dates{95}='2009'; $les_heures{95}='00:10';
$les_dates{96}='2009'; $les_heures{96}='00:11';
$les_dates{97}='2009'; $les_heures{97}='00:12';
$les_dates{98}='2009'; $les_heures{98}='00:13';
$les_dates{99}='2009'; $les_heures{99}='00:14';
$les_dates{100}='2009'; $les_heures{100}='00:15';
$les_dates{101}='2009'; $les_heures{101}='00:16';
$les_dates{102}='2009'; $les_heures{102}='00:17';
$les_dates{103}='2009'; $les_heures{103}='00:18';
$les_dates{104}='2009'; $les_heures{104}='00:19';
$les_dates{105}='2009'; $les_heures{105}='00:20';
$les_dates{106}='2009'; $les_heures{106}='00:21';
$les_dates{107}='2009'; $les_heures{107}='00:22';
$les_dates{108}='2009'; $les_heures{108}='00:23';
$les_dates{109}='2009'; $les_heures{109}='00:24';
$les_dates{110}='2009'; $les_heures{110}='00:25';
$les_dates{111}='2009'; $les_heures{111}='00:26';
$les_dates{112}='2009-03-11';
$les_dates{113}='2009-03-12';
$les_dates{114}='2009-03-13';
$les_dates{115}='2009-03-14';
$les_dates{116}='2009-03-15';
$les_dates{117}='2009-03-16';
$les_dates{118}='2009-03-21';
$les_dates{119}='2009-03-22';
$les_dates{120}='2009-03-22';
$les_dates{121}='2009-03-23';
$les_dates{122}='2009-03-24';
$les_dates{123}='2009-03-24';
$les_dates{124}='2009-03-24';
$les_dates{126}='2009-03-25';
$les_dates{127}='2009-04-03';
$les_dates{128}='2009-04-08';
$les_dates{129}='2009-04-08';
$les_dates{130}='2009-04-09';
$les_dates{131}='2009-04-09';
$les_dates{132}='2009-04-09';
$les_dates{133}='2009-04-09';
$les_dates{134}='2009-04-11';
$les_dates{135}='2009-04-13';
$les_dates{136}='2009-04-14';
$les_dates{137}='2009-04-14';
$les_dates{138}='2009-04-15';
$les_dates{139}='2009-04-15';
$les_dates{140}='2009-04-16';
$les_dates{141}='2009-04-17';
$les_dates{142}='2009-04-19';
$les_dates{143}='2009-04-19';
$les_dates{144}='2009-04-20';
$les_dates{146}='2009-04-21';
$les_dates{147}='2009-04-22';
$les_dates{148}='2009-04-23';
$les_dates{149}='2009-04-24';
$les_dates{150}='2009-04-25';
$les_dates{151}='2009-04-26';
$les_dates{152}='2009-04-28';
$les_dates{153}='2009-04-29';
$les_dates{154}='2009-04-30';
$les_dates{155}='2009-05-04';
$les_dates{156}='2009-05-08';
$les_dates{157}='2009-05-09';
$les_dates{158}='2009-05-10';
$les_dates{159}='2009-05-11';
$les_dates{160}='2009-05-12';
$les_dates{162}='2009-05-15';
$les_dates{163}='2009-05-19';
$les_dates{164}='2009-05-20';
$les_dates{165}='2009-05-21';
$les_dates{166}='2009-05-29';
$les_dates{167}='2009-05-30';
$les_dates{168}='2009-05-31';
$les_dates{169}='2009-06-01';
$les_dates{170}='2009-06-04';
$les_dates{171}='2009-06-07';
$les_dates{172}='2009-06-08';
$les_dates{173}='2009-06-08';
$les_dates{174}='2009-06-09';
$les_dates{175}='2009-06-09';
$les_dates{176}='2009-06-10';
$les_dates{177}='2009-06-11';
$les_dates{178}='2009-06-11';
$les_dates{179}='2009-06-13';
$les_dates{181}='2009-06-18';
$les_dates{182}='2009-06-20';
$les_dates{183}='2009-06-21';
$les_dates{184}='2009-06-22';
$les_dates{185}='2009-06-22';
$les_dates{186}='2009-06-24';
$les_dates{187}='2009-07-02';
$les_dates{188}='2009-07-03';
$les_dates{189}='2009-07-16';
$les_dates{190}='2009-07-26';
$les_dates{191}='2009-08-20';
$les_dates{192}='2009-08-28';
$les_dates{193}='2009-09-01';
$les_dates{194}='2009-09-03';
$les_dates{195}='2009-09-03';
$les_dates{196}='2009-09-09';
$les_dates{197}='2009-09-11';
$les_dates{198}='2009-09-12';
$les_dates{199}='2009-09-14';
$les_dates{200}='2009-09-15';
$les_dates{201}='2009-09-18';
$les_dates{202}='2009-09-18';
$les_dates{203}='2009-09-18';
$les_dates{204}='2009-09-18';
$les_dates{205}='2009-09-21';
$les_dates{206}='2009-09-22';
$les_dates{207}='2009-10-01';
$les_dates{208}='2009-10-04';
$les_dates{210}='2009-10-10';
$les_dates{211}='2009-10-17';
$les_dates{212}='2009-10-17';
$les_dates{213}='2009-10-17';
$les_dates{214}='2009-10-18';
$les_dates{215}='2009-10-19';
$les_dates{216}='2009-10-21';
$les_dates{217}='2009-10-22';
$les_dates{218}='2009-10-23';
$les_dates{219}='2009-10-24';
$les_dates{220}='2009-10-26';
$les_dates{221}='2009-10-26';
$les_dates{222}='2009-10-29';
$les_dates{223}='2009-11-02';
$les_dates{224}='2009-11-07';
$les_dates{225}='2009-11-12';
$les_dates{1232}='2009-12-15';
$les_dates{1233}='2009-12-20';
$les_dates{1234}='2009-12-22';
$les_dates{1235}='2009-12-24';
$les_dates{1236}='2009-12-25';
$les_dates{1237}='2009-12-31';
$les_dates{1238}='2010-01-12';
$les_dates{1239}='2010-01-15';
$les_dates{1240}='2010-01-16';
$les_dates{1241}='2010-01-17';
$les_dates{1242}='2010-01-18';
$les_dates{1243}='2010-01-19';
$les_dates{1244}='2010-01-21';
$les_dates{1245}='2010-01-24';
$les_dates{1246}='2010-01-27';
$les_dates{1247}='2010-01-28';
$les_dates{1248}='2010-05-04';
$les_dates{1249}='2010-05-05';
$les_dates{1250}='2010-03-21';
$les_dates{1251}='2010-02-04';
$les_dates{1252}='2010-02-05';
$les_dates{1253}='2010-02-05';
$les_dates{1254}='2010-02-10';
$les_dates{1255}='2010-02-15';
$les_dates{1256}='2010-02-20';
$les_dates{1257}='2010-02-21';
$les_dates{1258}='2010-02-23';
$les_dates{1259}='2010-02-25';
$les_dates{1260}='2010-02-27';
$les_dates{1261}='2010-03-05';
$les_dates{1262}='2010-03-09';
$les_dates{1263}='2010-03-14';
$les_dates{1264}='2010-03-16';
$les_dates{1265}='2010-03-20';
$les_dates{1266}='2010-03-20';
$les_dates{1267}='2010-04-22';
$les_dates{1268}='2010-04-23';
$les_dates{1269}='2010-04-24';
$les_dates{1270}='2010-04-24';
$les_dates{1271}='2010-04-25';
$les_dates{1272}='2010-04-26';
$les_dates{1273}='2010-04-28';
$les_dates{1274}='2010-03-31';
$les_dates{1275}='2010-04-16';
$les_dates{1276}='2010-04-22';
$les_dates{1277}='2010-04-23';
$les_dates{1278}='2010-04-24';
$les_dates{1279}='2010-04-25';
$les_dates{1280}='2010-10-26';
$les_dates{1281}='2010-05-01';
$les_dates{1282}='2010-05-03';
$les_dates{1283}='2010-05-04';
$les_dates{1284}='2010-05-05';
$les_dates{1287}='2010-05-06';
$les_dates{1288}='2010-05-10';
$les_dates{1290}='2010-05-11';
$les_dates{1291}='2010-05-12';
$les_dates{1292}='2010-05-17';
$les_dates{1293}='2010-05-18';
$les_dates{1294}='2010-05-19';
$les_dates{1295}='2010-05-23';
$les_dates{1296}='2010-05-27';
$les_dates{1297}='2010-05-29';
$les_dates{1298}='2010-05-31';
$les_dates{1299}='2010-06-01';
$les_dates{1300}='2010-06-02';
$les_dates{1301}='2010-06-03';
$les_dates{1303}='2010-06-04';
$les_dates{1304}='2010-06-14';
$les_dates{1305}='2010-06-08';
$les_dates{1306}='2010-06-09';
$les_dates{1308}='2010-06-14';
$les_dates{1309}='2010-06-16';
$les_dates{1310}='2010-06-16';
$les_dates{1311}='2010-06-20';
$les_dates{1312}='2010-06-22';
$les_dates{1313}='2010-06-23';
$les_dates{1314}='2010-06-30';
$les_dates{1315}='2010-07-01';
$les_dates{1316}='2010-07-04';
$les_dates{1317}='2010-07-08';
$les_dates{1318}='2010-07-22';
$les_dates{1319}='2010-07-27';
$les_dates{1321}='2010-08-03';
$les_dates{1322}='2010-08-05';
$les_dates{1323}='2010-08-09';
$les_dates{1324}='2010-08-09';
$les_dates{1325}='2010-08-09';
$les_dates{1326}='2010-08-10';
$les_dates{1327}='2010-09-07';
$les_dates{1328}='2010-09-14';
$les_dates{1329}='2010-09-14';
$les_dates{1330}='2010-09-18';
$les_dates{1331}='2010-09-20';
$les_dates{1332}='2010-09-20';
$les_dates{1333}='2010-09-23';
$les_dates{1334}='2010-09-23';
$les_dates{1335}='2010-09-27';
$les_dates{1336}='2010-10-01';
$les_dates{1337}='2010-10-02';
$les_dates{1338}='2010-10-03';
$les_dates{1339}='2010-10-04';
$les_dates{1340}='2010-10-04';
$les_dates{1341}='2010-10-05';
$les_dates{1342}='2010-10-08';
$les_dates{1343}='2010-10-10';
$les_dates{1344}='2010-10-12';
$les_dates{1345}='2010-10-14';
$les_dates{1346}='2010-10-24';
$les_dates{1347}='2010-11-04';
$les_dates{1348}='2010-11-08';
$les_dates{1349}='2010-11-16';
$les_dates{1350}='2010-11-21';
$les_dates{1351}='2010-11-23';
$les_dates{1352}='2010-11-25';
$les_dates{1353}='2010-11-27';
$les_dates{1354}='2010-11-30';
$les_dates{1355}='2010-12-03';
$les_dates{1356}='2010-12-04';
$les_dates{1357}='2010-12-17';
$les_dates{1358}='2010-12-22';
$les_dates{1359}='2010-12-24';
$les_dates{1360}='2010-12-27';
$les_dates{1361}='2011-01-07';
$les_dates{1362}='2011-01-07';
$les_dates{1363}='2011-01-11';
$les_dates{1364}='2011-01-12';
$les_dates{1365}='2011-01-13';
$les_dates{1366}='2011-01-17';
$les_dates{1367}='2011-01-17';
$les_dates{1368}='2011-01-17';
$les_dates{1369}='2011-02-08';
$les_dates{1370}='2011-02-15';
$les_dates{1371}='2011-02-21';
$les_dates{1372}='2011-02-08';
$les_dates{1373}='2011-02-15';
$les_dates{1374}='2011-03-01';
$les_dates{1375}='2011-03-10';
$les_dates{1376}='2011-03-11';
$les_dates{1377}='2011-03-11';
$les_dates{1378}='2011-03-14';
$les_dates{1379}='2011-03-31';
$les_dates{1380}='2011-04-01';
$les_dates{1381}='2011-04-05';
$les_dates{1382}='2011-04-07';
$les_dates{1383}='2011-04-12';
$les_dates{1384}='2011-04-13';
$les_dates{1385}='2011-04-15';
$les_dates{1386}='2011-04-19';
$les_dates{1387}='2011-04-21';
$les_dates{1388}='2011-04-27';
$les_dates{1389}='2011-04-29';
$les_dates{1390}='2011-05-03';
$les_dates{1391}='2011-05-07';
$les_dates{1392}='2011-05-09';
$les_dates{1393}='2011-05-10';
$les_dates{1394}='2011-05-11';
$les_dates{1395}='2011-05-13';
$les_dates{1396}='2011-05-17';
$les_dates{1397}='2011-05-19';
$les_dates{1398}='2011-05-20';
$les_dates{1399}='2011-05-20';
$les_dates{1400}='2011-05-23';
$les_dates{1401}='2011-05-24';
$les_dates{1402}='2011-05-25';
$les_dates{1403}='2011-05-26';
$les_dates{1404}='2011-05-30';
$les_dates{1405}='2011-06-04';
$les_dates{1406}='2011-06-10';
$les_dates{1407}='2011-06-14';
$les_dates{1408}='2011-06-16';
$les_dates{1409}='2011-06-09';
$les_dates{1410}='2011-06-27';
$les_dates{1411}='2011-07-04';
$les_dates{1412}='2011-07-07';
$les_dates{1413}='2011-07-09';
$les_dates{1414}='2011-07-19';
$les_dates{1415}='2011-07-20';
$les_dates{1416}='2011-07-25';
$les_dates{1417}='2011-08-01';
$les_dates{1418}='2011-08-05';
$les_dates{1419}='2011-08-20';
$les_dates{1420}='2011-09-09';
$les_dates{1421}='2011-09-18';
$les_dates{1422}='2011-10-07';
$les_dates{1423}='2011-11-09';
$les_dates{1424}='2011-11-12';
$les_dates{1425}='2011-11-17';
$les_dates{1426}='2012-01-05';
$les_dates{1427}='2012-01-14';
$les_dates{1428}='2012-01-16';
$les_dates{1429}='2012-01-17';
$les_dates{1430}='2012-01-14';
$les_dates{1431}='2012-01-20';
$les_dates{1432}='2012-01-21';
$les_dates{1433}='2012-01-27';
$les_dates{1434}='2012-01-25';
$les_dates{1435}='2012-01-28';
$les_dates{1436}='2012-02-03';
$les_dates{1437}='2012-02-09';
$les_dates{1438}='2012-02-12';
$les_dates{1439}='2012-02-21';
$les_dates{1440}='2012-02-22';
$les_dates{1441}='2012-03-01';
$les_dates{1442}='2012-03-07';
$les_dates{1443}='2012-03-11';
$les_dates{1444}='2012-03-27';
$les_dates{1445}='2012-03-28';
$les_dates{1446}='2012-04-01';
$les_dates{1447}='2012-04-02';
$les_dates{1448}='2012-04-05';
$les_dates{1449}='2012-04-07';
$les_dates{1450}='2012-04-13';
$les_dates{1451}='2012-06-04';
$les_dates{1452}='2012-06-05';
$les_dates{1453}='2012-06-08';
$les_dates{1454}='2012-06-08';
$les_dates{1455}='2012-06-08';
# }}}
# how to create beautiful dates
sub format_date {
my ($old, $id) = @_;
my $date;
my $heure;
# if a date was specified before, keep it.
if (defined $old) {
$old =~ s/(\d{2})\/(\d{2})\/(\d{4})/$3-$2-$1/;
$date = $old;
} elsif (defined $les_dates{$id}) {
$date = $les_dates{$id};
} else {
$date = '0000-00-00';
}
# si la date ne contient pas de tiret, alors reformater.
$date = $date.'-00-00' unless $date =~ /-/;
# hours
if (defined $les_heures{$id}) {
# il faut reformater un peu pour coller au format attendu
$heure = $les_heures{$id}.':00';
} else {
$heure = '12:00:00';
}
return $date.' '.$heure;
}
# prepa cible
my $sql_cible = q{
INSERT INTO spip_articles
(
`id_article`,
`titre`,
`id_rubrique`,
`texte`,
`date`,
`statut`
)
VALUES (
?,
?,
?,
?,
?,
"publie"
)
};
my $sth_cible = $dbh_cible->prepare($sql_cible);
my %record;
$record{id_rubrique} = 2;
my $sql_lien = q{
INSERT INTO spip_auteurs_liens (
`id_auteur`,
`id_objet`,
`objet`
)
VALUES (
3,
?,
"article"
)
};
my $sth_lien = $dbh_cible->prepare($sql_lien);
# select final
my $sql_select = q{
SELECT id_article
FROM spip_articles
ORDER BY id_article DESC
LIMIT 1
};
my $sth_select = $dbh_cible->prepare($sql_select);
# requete source :
my $sql_source = q{
SELECT *
FROM blog_articles
ORDER BY id_articles ASC
};
my $sth_source = $dbh_source->prepare($sql_source);
$sth_source->execute();
# Copying
my $tmp;
my $musique;
$sth_select->execute();
$tmp = $sth_select->fetchrow_hashref();
my $id = $tmp->{id_article} +10;
while (my $row = $sth_source->fetchrow_hashref) {
$record{titre} = $row->{title_articles};
$record{titre} =~ s/é/é/g;
$record{titre} =~ s/è/è/g;
$record{titre} =~ s/Ã/à/g;
$record{titre} =~ s/ê/ê/g;
$record{titre} =~ s/àª/ê/g;
$record{titre} =~ s/ë/ë/g;
$record{titre} =~ s/î/î/g;
$record{titre} =~ s/ï/ï/g;
$record{titre} =~ s/à¯/ï/g;
$record{titre} =~ s/ô/ô/g;
$record{titre} =~ s/à´/ô/g;
$record{titre} =~ s/ç/ç/g;
$record{titre} =~ s/à§/ç/g;
$record{titre} =~ s/ù/ù/g;
$record{titre} =~ s/à‰/É/g;
$record{titre} =~ s/»/»/g;
$record{titre} =~ s/©/©/g;
$record{titre} =~ s/«/«/g;
$record{titre} =~ s/&#39;/'/g;
$record{titre} =~ s/àŽ/Î/g;
$record{titre} =~ s/à¹/ù/g;
$record{date} = format_date($row->{date}, $row->{id_articles});
if (defined $row->{nomMusique_articles} and $row->{nomMusique_articles} ne '') {
$row->{nomMusique_articles} =~ s/mp3/ogg/;
$row->{nomMusique_articles} = $row->{nomMusique_articles}.'.ogg' unless ($row->{nomMusique_articles} =~ /\.ogg$/ );
$musique = '<div><audio preload="none" src="http://www.partipirate.org/musique/'.$row->{nomMusique_articles}.'" style="width: 160px; height: 30px;" controls>La fonctionalité "audio" ne fonctionne qu"avec certains navigateurs.</audio><br><br> by <a href="'.$row->{lienMusique_articles}.'" target="_blank">'.$row->{titreMusique_articles};
} else { $musique = ''; }
$record{texte} = $musique.'</a><img class="imageArticle" style="margin: 25px 25px 25px 25px" src="'.$row->{nomImage_articles}.'" alt="'.$row->{titreImage_articles}.'" /><br /><a href="'.$row->{lienImage_articles}.'" target="_blank">'.$row->{nomLienImage_articles}.'</a></div><p style="font-style: italic">Cet article a fait l\'objet d\'un import automatique. La date donnée par le système est approximative.</p>'.$row->{content_articles};
$record{texte} =~ s/é/é/g;
$record{texte} =~ s/è/è/g;
$record{texte} =~ s/Ã/à/g;
$record{texte} =~ s/ê/ê/g;
$record{texte} =~ s/àª/ê/g;
$record{texte} =~ s/ë/ë/g;
$record{texte} =~ s/î/î/g;
$record{texte} =~ s/ï/ï/g;
$record{texte} =~ s/ô/ô/g;
$record{texte} =~ s/à´/ô/g;
$record{texte} =~ s/ç/ç/g;
$record{texte} =~ s/à§/ç/g;
$record{texte} =~ s/ù/ù/g;
$record{texte} =~ s/à‰/É/g;
$record{texte} =~ s/»/»/g;
$record{texte} =~ s/«/«/g;
$record{texte} =~ s/&#39;/'/g;
$record{texte} =~ s/©/©/g;
$record{texte} =~ s/àŽ/Î/g;
$record{texte} =~ s/à¹/ù/g;
# traitement des playlists
$record{texte} =~ s#(xspf_player[^"]+)#http://www.partipirate.org/musique/$1#g ;
$record{texte} =~ s#(playlist_url=)([^\?]+)#$1http://www.partipirate.org/musique/$2#g ;
$sth_cible->execute(
$id,
$record{titre},
$record{id_rubrique},
$record{texte},
$record{date}
);
$sth_lien->execute($id);
# print ID to logfile
$logfile->write("$id\n");
$logfred->write("$row->{id_articles};$id\n");
# Say what we've done
print "Article $row->{id_articles} migrated (new: $id)\n";
$id++;
}
$logfile->close();
$logfred->close();
#!/usr/bin/env perl
use strict;
use warnings;
use IO::File;
use DBI;
# Migration script for french pirate party website database.
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL #
# No warranty, feel free to use, modify, redistribute.
# File to read from
my $logfile_name = "log1";
my $logfile = IO::File->new($logfile_name, 'r');
print("Reading from $logfile_name\n");
## DB CIBLE ##
my %cible = (
'host' => 'mysql2.alwaysdata.com',
'dbname' => 'testpp_spip',
'user' => 'testpp',
'pass' => 'testpp2'
);
my $dbh_cible = DBI->connect("dbi:mysql:host=$cible{host};dbname=$cible{dbname}",
$cible{user}, $cible{pass}, {RaiseError => 1});
## PROCESS ##
my $sql_article = q{
DELETE
FROM spip_articles
WHERE id_article LIKE ?
};
my $sth_articles = $dbh_cible->prepare($sql_article);
my $sql_lien = q{
DELETE
FROM spip_auteurs_liens
WHERE objet="article"
AND id_objet LIKE ?
};
my $sth_lien = $dbh_cible->prepare($sql_lien);
# Deleting
my $tmp;
while (defined(my $line = $logfile->getline)) {
chomp $line;
# retirer de la table spip_articles
$sth_articles->execute($line);
# idem pour spip_auteurs_liens
$sth_lien->execute($line);
# Say what we've done
print "Article $line removed\n";
}
$logfile->close();
#!/usr/bin/env perl
use strict;
use warnings;
use IO::File;
use Text::CSV;
use Regexp::Common;
use DBI;
# Links test script
#
# Author : mathieu (matael) gaborit <mathieu@matael.org>
# Date : july 2012
# License : WTFPL #
# No warranty, feel free to use, modify, redistribute.
## DB SOURCE ##
my %source = (
'host' => 'localhost',
'dbname' => 'old',
'user' => 'root',
'pass' => 'lolilol'
);
my $dbh_source = DBI->connect("dbi:mysql:host=$source{host};dbname=$source{dbname}",
$source{user}, $source{pass}, {RaiseError => 1});
# requete source :
my $sql_source = q{
SELECT content_articles
FROM blog_articles
ORDER BY id_articles ASC
};
my $sth_source = $dbh_source->prepare($sql_source);
$sth_source->execute();
my $d;
my $uri;
my @tmp;
while (my $row = $sth_source->fetchrow_arrayref) {
$d = @$row[0];
while ($d =~ /$RE{URI}{HTTP}{-keep}/) {
$uri = $1;
if (`wget --spider $uri 2> /dev/null`) {
print(">>>> ".$uri.'\n');
} else { print($uri."\n")}
use Data::Dumper;
$d =~ s/$uri//;
print("===========".$d)
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment