...
|
...
|
@@ -83,40 +83,43 @@ function update_database () {
|
83
|
83
|
begin=$(date +%s)
|
84
|
84
|
for scrutin in $(seq $((${first:-0}+1)) $last); do
|
85
|
85
|
w3m -cols 512 -dump "http://www2.assemblee-nationale.fr/scrutins/detail/(legislature)/$mandature/(num)/$scrutin" \
|
86
|
|
- | sed -n '/^Analyse du scrutin n° /,/^Votes des groupes/{/^Navigation/,/^ • Non inscrits/d;/^[[:space:]]*$/d;p}' \
|
|
86
|
+ | sed -n '/^Analyse du scrutin n°/,/^Votes des groupes/{/^Navigation/,/^ • Non inscrits/d;/^[[:space:]]*$/d;p}' \
|
87
|
87
|
| awk -v sq="'" -v dq='"' '
|
88
|
|
- BEGIN { adoption = -1; map = 0 }
|
89
|
|
- /^Analyse du scrutin/ { scrutin = $NF }
|
90
|
|
- /séance du [0-3][0-9]\/[01][0-9]\/(19|20)[0-9]+/ { date = $NF; seance = $1 }
|
91
|
|
- /^Scrutin public sur / { titre = gensub("^Scrutin public sur l[ae" sq "]s? ?", "", "1") }
|
92
|
|
- /^L.Assemblée .+ adopté/ { adoption = NF == 3 }
|
|
88
|
+ BEGIN {
|
|
89
|
+ adoption = -1
|
|
90
|
+ map = 0
|
|
91
|
+ split("janvier février mars avril mai juin juillet août septembre octobre novembre décembre", mois)
|
|
92
|
+ }
|
|
93
|
+ /^Analyse du scrutin n°/ { scrutin = gensub("n°([0-9]+)", "\\1", "1", $NF) }
|
|
94
|
+ /séance du [a-z]+ ([0-3][0-9]?) ([a-z]+) ((19|20)[0-9]+)/ {
|
|
95
|
+ seance = $1
|
|
96
|
+ mois_seance = gensub("^.+[0-3][0-9]? ([a-z]+) (19|20)[0-9]+$", "\\1", "1")
|
|
97
|
+ for (i=1; i<=12; i++) {
|
|
98
|
+ if (mois[i] == mois_seance) {
|
|
99
|
+ date = sprintf("%02d/%02d/%d", $(NF-2), i, $NF)
|
|
100
|
+ break
|
|
101
|
+ }
|
|
102
|
+ }
|
|
103
|
+ }
|
|
104
|
+ /^Scrutin public n°[0-9]+ sur / { titre = gensub("^Scrutin public n°[0-9]+ sur l[ae" sq "]s? ?", "", "1") }
|
|
105
|
+ /^L.Assemblée nationale .+ adopté/{ adoption = NF == 4 }
|
93
|
106
|
/^Nombre de votants :/ { votants = $NF }
|
94
|
107
|
/^Nombre de suffrages exprimés :/ { exprimes = $NF }
|
95
|
108
|
/^Majorité absolue :/ { majo_absolue = $NF }
|
96
|
|
- /^Pour l.adoption :/ { pour = $NF }
|
97
|
|
- /^Contre :/ { contre = $NF }
|
98
|
|
- /^Groupe / { groupe = gensub("^Groupe (.+) \\([1-9].+$", "\\1", "1")
|
99
|
|
- groupe = gensub("^(la|les|le|l" sq "|du|des|de|de la|d" sq ") ", "", "1", groupe)
|
|
109
|
+ /^ • Pour l.adoption :/ { pour = $NF }
|
|
110
|
+ /^ • Contre :/ { contre = $NF }
|
|
111
|
+ /^ [A-Z]/ { groupe = gensub("^ +", "", "1")
|
|
112
|
+ if (groupe == "Députés non inscrits")
|
|
113
|
+ groupe = "Non inscrits"
|
|
114
|
+ }
|
|
115
|
+ /^ □ (Pour|Abstention|Contre) *:/{ position = gensub("^.+(Pour|Abstention|Contre) *:.*$", "\\1", "1") }
|
|
116
|
+ /^ □ Non votants? :/ { position = "Non-votant" }
|
|
117
|
+ /^ ☆ / { votes[groupe][position][gensub("^.+ (M\\.|Mme|Mlle) +", "", "1")]++ }
|
|
118
|
+ /^Mises au point/,/^Votes des groupes/ {
|
|
119
|
+ if ($1 != "(Sous" && $0 != "Il n" sq "y a pas de mise au point enregistrée pour ce scrutin") {
|
|
120
|
+ mises_au_point[map++] = $0
|
|
121
|
+ }
|
100
|
122
|
}
|
101
|
|
- /^Non inscrits/ { groupe = "Non inscrits" }
|
102
|
|
- /^(Pour|Abstention|Contre):/ { position = gensub(":", "", "1", $1) }
|
103
|
|
- /^Non-votants?:/ {
|
104
|
|
- position = gensub("s?:", "", "1", $1)
|
105
|
|
- nvl = ""
|
106
|
|
- while ($1 != "Groupe" || $0 != "Contenus annexes") {
|
107
|
|
- getline
|
108
|
|
- if ($1 == "Groupe" || $0 == "Contenus annexes")
|
109
|
|
- break
|
110
|
|
- nvl = nvl $0
|
111
|
|
- }
|
112
|
|
- f = split(nvl, nv, "(, | et )")
|
113
|
|
- for (i=1; i<=f; i++) {
|
114
|
|
- votes[groupe][position][gensub("(^ +|M\\. |Mme |Mlle | \\(.+)", "", "g", nv[i])]++
|
115
|
|
- }
|
116
|
|
- groupe = gensub("^Groupe (.+) \\([1-9].+$", "\\1", "1")
|
117
|
|
- }
|
118
|
|
- /^ • / { votes[groupe][position][gensub("^[^A-Z]*", "", "1")]++ }
|
119
|
|
- /^Mises au point/,/^Votes des groupes/ { if ($1 != "(Sous") mises_au_point[map++] = $0 }
|
120
|
123
|
END {
|
121
|
124
|
if (adoption < 0)
|
122
|
125
|
adoption = pour >= majo_absolue
|