source: cpc/trunk/project/batch/presences/parse_orga_inter.pl @ 2647

Last change on this file since 2647 was 2647, checked in by teymour, 9 years ago

Mise en forme selon le format JO

File size: 2.2 KB
Line 
1#!/usr/bin/perl
2
3require ("../common/common.pm");
4use WWW::Mechanize;
5use POSIX qw<mktime strftime>;
6
7$a = WWW::Mechanize->new();
8
9$url = shift;
10$organisme = shift;
11$a->get($url);
12$html = $a->content;
13utf8::encode($html);
14$html =~ s/’/'/g;
15$html =~ s/<\/[^ab][^>]*>//gi;
16$html =~ s/<[^ba\/][^ba>][^>]*>//gi;
17$html =~ s/(\n|<br>)/ /gi;
18
19$html =~ s/<\/b>\s*<b>/ /gi;
20
21$html =~ s/<\/b>/<\/b>\n/g;
22$html =~ s/<b>/\n<b>/g;
23$html =~ s/\r//g;
24
25sub findDate($) {
26        $_ = shift;
27        $_ =~ s/&[^;]+;/ /g;
28
29        @mois = ();
30        @jours = ();
31        $year = '';
32        $cpt = 1;
33
34        if (/\D(2\d{3})\D/) {
35                $year = $1;
36        }
37        while(/\D+(\d+)\D+(janvier|f[^v ]*vrier|mars|avril|mai|juin|juillet|ao[^t ]*t|septembre|octobre|novembre|d[^c ]*cembre)/gi) {
38                $jours[$cpt] = $1;
39                $mois[$cpt--] = $2;
40        }
41        if ($cpt > -1) {
42
43                $fin = $jours[0] = $jours[1];
44                $mois[0] = $mois[1];
45                if (/(\d+)\D{1,10}$fin\D/) {
46                        $jours[0] = $1;
47                }
48        }
49
50        @datesrange = sort (join('-', datize($jours[0]." ".$mois[0]." ".$year)), join('-', datize($jours[1]." ".$mois[1]." ".$year)));
51        @dates =();
52       
53        my ( $year, $month, $day )  = split /-/, $datesrange[0];
54        my ($eyear, $emonth, $eday) = split /-/, $datesrange[1];
55
56        my $end_date   = mktime( 0, 0, 0, $eday, $emonth -1, $eyear - 1900 );
57        while ( 1 ) { 
58            my $date = mktime( 0, 0, 0, $day, $month - 1, $year - 1900 );
59            ($sec, $min, $hour, $day, $month, $year, $wday, $yday) = localtime($date);
60            $year += 1900; $month += 1;
61            push @dates, sprintf("%04d-%02d-%02d", $year, $month, $day);
62            $day++;
63            last if $date >= $end_date;
64        }
65
66        return @dates;
67}
68
69foreach (split /\n/, $html) {
70        if (/^<b>/) {
71                $titre = $_;
72                $titre =~ s/<[^>]*>//g;
73                $titre =~ s/&nbsp;/ /g;
74                $titre =~ s/\s+/ /g;
75                $titre =~ s/^\s*//;
76                $titre =~ s/\s*$//;
77                $titre =~ s/\’/\'/g;
78                $titre =~ s/&#8217;/'/g;
79                $titre =~ s/&#8211;/-/g;
80                $titre =~ s/\xc2\x92/'/g;
81                $titre =~ s/\xc2\x96/-/g;
82                @date = findDate($_);
83                next;
84        }
85        %id = ();
86        while (/fiches_id.(\d+).asp">([^<]*)<\/a>/g) {
87                $nom = $2; $id = $1;
88                next if ($id{$id});
89                $id{$id} = 1;
90                $nom =~ s/&nbsp;/ /g;
91                foreach $d (@date) {
92                        print "{\"depute\":\"$nom\", \"id_an\":\"$id\", \"reunion\":\"$d\", \"commission\":\"$organisme\", \"source\": \"$url\", \"session\":\"$titre\"}\n";
93                }
94        }
95}
96
Note: See TracBrowser for help on using the repository browser.