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

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

Ajout des présences pour l'APF, l'UIP et les groupes d'amitiés

File size: 2.9 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$deforganisme = 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        return () if($year < 2000);
55        my ($eyear, $emonth, $eday) = split /-/, $datesrange[1];
56
57        my $end_date   = mktime( 0, 0, 0, $eday, $emonth -1, $eyear - 1900 );
58        while ( 1 ) { 
59            my $date = mktime( 0, 0, 0, $day, $month - 1, $year - 1900 );
60            ($sec, $min, $hour, $day, $month, $year, $wday, $yday) = localtime($date);
61            $year += 1900; $month += 1;
62            push @dates, sprintf("%04d-%02d-%02d", $year, $month, $day);
63            $day++;
64            last if $date >= $end_date;
65        }
66
67        return @dates;
68}
69
70foreach (split /\n/, $html) {
71        if (/^<b>/) {
72                $titre = $_;
73                $titre =~ s/<[^>]*>//g;
74                $titre =~ s/&nbsp;/ /g;
75                $titre =~ s/\s+/ /g;
76                $titre =~ s/^\s*//;
77                $titre =~ s/\s*$//;
78                $titre =~ s/\’/\'/g;
79                $titre =~ s/&#8217;/'/g;
80                $titre =~ s/&#8211;/-/g;
81                $titre =~ s/&#8209;/-/g;
82                $titre =~ s/\xc2\x92/'/g;
83                $titre =~ s/\xc2\x96/-/g;
84                @date = findDate($_);
85                $organisme = '';
86                if($titre =~ /groupe d'amitié/i) {
87                    $titre =~ s/\s+\-\s+/-/g;
88                    $titre =~ s/- France/-France/gi;
89                    $titre =~ s/Groupe d'amitié France \/ /Groupe d'amitié France-/gi;
90                    $titre =~ s/Royaume Uni/Royaume-Uni/gi;
91                    $titre =~ s/Île Maurice/Île-Maurice/gi;
92                    $titre =~ s/Union des Comores/France-Comores/gi;
93                    $titre =~ s/Cap Vert/Cap-Vert/gi;
94                    $titre =~ s/Burkina Faso/Burkina-Faso/gi;
95                    $titre =~ s/France-Union des Comores/France-Comores/gi;
96                    $organisme = lc($1) if ($titre =~ /(groupe d'amitié [^:.,\( ]*) ?/i);
97                    $organisme =~ s/(\S*)-france/France-$1/i;
98                }
99                next;
100        }
101        %id = ();
102        while (/fiches_id.(\d+).asp">([^<]*)<\/a>/g) {
103                $nom = $2; $id = $1;
104                $nom =~ s/députée?s?//;
105                next if ($id{$id});
106                $id{$id} = 1;
107                $nom =~ s/&nbsp;/ /g;
108                $organisme = $deforganisme unless($organisme);
109                foreach $d (@date) {
110                        print "{\"depute\":\"$nom\", \"id_an\":\"$id\", \"reunion\":\"$d\", \"commission\":\"$organisme\", \"source\": \"$url\", \"session\":\"$titre\"}\n";
111                }
112        }
113}
114
Note: See TracBrowser for help on using the repository browser.