Merge branch 'cookie-fetch' into 'master'
Simplification de la manipulation des cookies See merge request sdjgeek/purge-registres-deces-insee!2
This commit is contained in:
commit
9d216600f8
@ -1,5 +1,9 @@
|
|||||||
# Changelog
|
# Changelog
|
||||||
|
|
||||||
|
### [v4.0] - 2020-06-16
|
||||||
|
- Recherche automatique des cookies dans firefox
|
||||||
|
- Supression du fichier settings.py, remplacé par argparse
|
||||||
|
|
||||||
### [v3.1] - 2020-06-08
|
### [v3.1] - 2020-06-08
|
||||||
- Amélioration de la documentation
|
- Amélioration de la documentation
|
||||||
|
|
||||||
|
50
README.md
50
README.md
@ -34,7 +34,7 @@ exemple) pour s'assurer que les registres restent à jour.
|
|||||||
|
|
||||||
### Logiciels
|
### Logiciels
|
||||||
- Git
|
- Git
|
||||||
- Python 3.6
|
- Python 3.6+
|
||||||
- Virtualenv
|
- Virtualenv
|
||||||
|
|
||||||
Testé uniquement sur GNU/Linux (Ubuntu 18.4)
|
Testé uniquement sur GNU/Linux (Ubuntu 18.4)
|
||||||
@ -65,45 +65,43 @@ pip install -r requirements.txt
|
|||||||
|
|
||||||
## Utilisation
|
## Utilisation
|
||||||
|
|
||||||
Le fichier ```purge-registres-deces-insee/settings.py``` contient les
|
Aller sur le [site de l'Église](https://lcr.churchofjesuschrist.org),
|
||||||
paramètres à configurer :
|
et se connecter au compte SDJ. Puis lancer le script.
|
||||||
|
|
||||||
|
```bash
|
||||||
|
source localenv/bin/activate
|
||||||
|
python purge-registres-deces-insee/trouver_deces.py chemin_base_donnees chemin_repertoire_sortie numeros_unites
|
||||||
|
```
|
||||||
|
|
||||||
|
Avec :
|
||||||
|
|
||||||
- chemin_base_donnees : Le chemin vers le [fichier
|
- chemin_base_donnees : Le chemin vers le [fichier
|
||||||
téléchargé](https://git.roflcopter.fr/sdjgeek/purge-registres-deces-insee/-/wikis/home#t%C3%A9l%C3%A9charger-la-base-de-donn%C3%A9e)
|
téléchargé](https://git.roflcopter.fr/sdjgeek/purge-registres-deces-insee/-/wikis/home#t%C3%A9l%C3%A9charger-la-base-de-donn%C3%A9e)
|
||||||
|
|
||||||
|
- chemin_repertoire_sortie : Le chemin vers le répertoire qui
|
||||||
|
contiendra la fichiers de sortie
|
||||||
|
|
||||||
- numeros_unites : La liste des unités que le programme doit
|
- numeros_unites : La liste des unités que le programme doit
|
||||||
tester. La liste commence par le caractère '['. Les numéros d'unités
|
tester. La liste commence par le caractère '['. Les numéros d'unités
|
||||||
sont séparés par des virgules. La liste se termine par le caractère
|
sont séparés par des virgules. La liste se termine par le caractère
|
||||||
']'. Par exemple [47823, 67745, 31456]
|
']'. Par exemple [47823, 67745, 31456]
|
||||||
|
|
||||||
- cookie : Les cookies de la session au compte SDJ. Pour obtenir ces
|
Le script devrait trouver seul le cookie de session permettant de
|
||||||
cookies il faut :
|
consulter la liste des membres. Mais en cas d'échec, il est possible
|
||||||
|
de lui donner le chemin vers le fichier SQLite que Firefox utilise
|
||||||
|
pour stocker les cookies avec l'option '-c'. En règle générale ce
|
||||||
|
fichier se trouve le répertoire :
|
||||||
|
|
||||||
1- Ouvrir Firefox
|
- sur linux :
|
||||||
|
"~/.mozilla/firefox/<un_code_étrange>.default/cookies.sqlite"
|
||||||
|
|
||||||
2- Ouvrir les outils de développement : CTRL + MAJ + E
|
- sur windows :
|
||||||
|
"C:\Users\<nom_utilisateur>\AppData\Local\Mozilla\Firefox\Profiles\<un_code_étrange>.default\cookies.sqlite"
|
||||||
|
|
||||||
3- Aller sur le site des outils pour greffiers : https://lds.org/lcr
|
Par exemple :
|
||||||
|
|
||||||
4- Entrer identifiant et mot de passe SDJ
|
|
||||||
|
|
||||||
5- Aller dans la liste des membres
|
|
||||||
|
|
||||||
6- Dans l'outil de développement, cliquer sur la dernière ligne
|
|
||||||
|
|
||||||
7- Dans le panneau de droite, dans la section "En-tête de la requête",
|
|
||||||
rechercher le champ "cookie"
|
|
||||||
|
|
||||||
8- Copier la valeur contenue dans ce champ
|
|
||||||
|
|
||||||
- chemin_repertoire_sortie : Le chemin vers le répertoire qui
|
|
||||||
contiendra la fichiers de sortie
|
|
||||||
|
|
||||||
Une fois la configuration effectuée, lancer le script :
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
. localenv/bin/activate
|
python purge-registres-deces-insee/trouver_deces.py ~/Documents/fichier-des-personnes-decedees.sqlite ~/Documents/ 123,854 -c ~/.mozilla/firefox/8h3jsedf.default/cookies.sqlite
|
||||||
python purge-registres-deces-insee/trouver_deces.py
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Le script mettra un peu de temps à s'exécuter. En fin d'exécution, le
|
Le script mettra un peu de temps à s'exécuter. En fin d'exécution, le
|
||||||
|
@ -25,7 +25,7 @@ chemin_base_donnees = "/chemin/vers/fichier-des-personnes-decedees.sqlite"
|
|||||||
numeros_unites = [47823, 67745, 31456]
|
numeros_unites = [47823, 67745, 31456]
|
||||||
|
|
||||||
# Cookie de session compte SDJ
|
# Cookie de session compte SDJ
|
||||||
cookie = ""
|
cookie = "/home/julien/.mozilla/firefox/615tua7r.lds/cookies.sqlite"
|
||||||
|
|
||||||
# Chemin vers le répertoire de sortie
|
# Chemin vers le répertoire de sortie
|
||||||
chemin_repertoire_sortie = "/chemin/vers/repertoire-de-sortie"
|
chemin_repertoire_sortie = "/chemin/vers/repertoire-de-sortie"
|
||||||
|
@ -3,36 +3,43 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
import requests
|
import requests
|
||||||
|
import browser_cookie3
|
||||||
|
|
||||||
|
|
||||||
def get_member_list(unit_number, cookie):
|
class SiteEglise:
|
||||||
"""Recevoir la liste des membres
|
|
||||||
|
|
||||||
:param unit_number: numéro de l'unité (paroisse, branche)
|
def __init__(self, cookie_path=None):
|
||||||
:param cookie: le cookie de session pour l'accès au site
|
"""
|
||||||
:returns: la liste des membres sous forme d'objet JSON
|
|
||||||
|
|
||||||
"""
|
:param cookie_path: chemin vers le répertoire où inscrire les fichiers de sortie
|
||||||
r = requests.get('https://lcr.churchofjesuschrist.org/services/umlu/report/member-list',
|
"""
|
||||||
params={'lang': "fra", 'unitNumber': unit_number},
|
self.cookie_jar = browser_cookie3.firefox(cookie_file=cookie_path)
|
||||||
headers={'Accept': "application/json",
|
|
||||||
'Cookie': cookie})
|
|
||||||
r.raise_for_status()
|
|
||||||
return r.json()
|
|
||||||
|
|
||||||
|
def get_member_list(self, unit_number):
|
||||||
|
"""Recevoir la liste des membres
|
||||||
|
|
||||||
def get_member_profile(member_id, cookie):
|
:param unit_number: numéro de l'unité (paroisse, branche)
|
||||||
"""Recevoir les informations sur un membre
|
:returns: la liste des membres sous forme d'objet JSON
|
||||||
|
|
||||||
:param member_id: ID du membre
|
"""
|
||||||
:param cookie: le cookie de session pour l'accès au site
|
r = requests.get('https://lcr.churchofjesuschrist.org/services/umlu/report/member-list',
|
||||||
:returns: les informations sur le membre sous forme d'objet JSON
|
params={'lang': "fra", 'unitNumber': unit_number},
|
||||||
|
headers={'Accept': "application/json"},
|
||||||
|
cookies=self.cookie_jar)
|
||||||
|
r.raise_for_status()
|
||||||
|
return r.json()
|
||||||
|
|
||||||
"""
|
def get_member_profile(self, member_id):
|
||||||
r = requests.get(f'https://lcr.churchofjesuschrist.org/records/member-profile/service/{member_id}',
|
"""Recevoir les informations sur un membre
|
||||||
params={'lang': "fra"},
|
|
||||||
headers={'Accept': "application/json",
|
:param member_id: ID du membre
|
||||||
'Cookie': cookie,
|
:returns: les informations sur le membre sous forme d'objet JSON
|
||||||
'Referer': f"https://lcr.churchofjesuschrist.org/records/member-profile/{member_id}?lang=fra"})
|
|
||||||
r.raise_for_status()
|
"""
|
||||||
return r.json()
|
r = requests.get(f'https://lcr.churchofjesuschrist.org/records/member-profile/service/{member_id}',
|
||||||
|
params={'lang': "fra"},
|
||||||
|
headers={'Accept': "application/json",
|
||||||
|
'Referer': f"https://lcr.churchofjesuschrist.org/records/member-profile/{member_id}?lang=fra"},
|
||||||
|
cookies=self.cookie_jar)
|
||||||
|
r.raise_for_status()
|
||||||
|
return r.json()
|
||||||
|
@ -33,35 +33,36 @@ Comment utilise ce programme :
|
|||||||
------------------------------------------------------------------------------------------------------------------------
|
------------------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
Auteur : SDJ GeeK <sdjgeek@protonmail.com>
|
Auteur : SDJ GeeK <sdjgeek@protonmail.com>
|
||||||
Date : 1 juin 2020
|
Date : 16 juin 2020
|
||||||
Version : 3.0
|
Version : 4.0
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import argparse
|
||||||
import os
|
import os
|
||||||
import peewee
|
import peewee
|
||||||
import requests
|
import requests
|
||||||
|
|
||||||
from bdd_insee import BddInsee
|
from bdd_insee import BddInsee
|
||||||
import site_eglise
|
from site_eglise import SiteEglise
|
||||||
import settings as param
|
|
||||||
|
|
||||||
|
|
||||||
def trouver_decedes(chemin_base_donnees, numeros_unites, cookie, chemin_repertoire_sortie):
|
def trouver_decedes(chemin_base_donnees, numeros_unites, chemin_repertoire_sortie, cookie_path=None):
|
||||||
"""Recherche les personnes décédées dans les registres
|
"""Recherche les personnes décédées dans les registres
|
||||||
|
|
||||||
:param chemin_base_donnees: chemin vers le fichier SQLite
|
:param chemin_base_donnees: chemin vers le fichier SQLite
|
||||||
:param numeros_unites: liste des numéros d'unités à analyser
|
:param numeros_unites: liste des numéros d'unités à analyser
|
||||||
:param cookie: le cookie de session pour l'accès au site
|
|
||||||
:param chemin_repertoire_sortie: chemin vers le répertoire où inscrire les fichiers de sortie
|
:param chemin_repertoire_sortie: chemin vers le répertoire où inscrire les fichiers de sortie
|
||||||
|
:param cookie_path: chemin vers la base de donnée des cookies
|
||||||
|
|
||||||
"""
|
"""
|
||||||
base_insee = BddInsee(chemin_base_donnees)
|
base_insee = BddInsee(chemin_base_donnees)
|
||||||
|
site_eglise = SiteEglise(cookie_path)
|
||||||
# Boucler sur la liste des unités
|
# Boucler sur la liste des unités
|
||||||
for unite in numeros_unites:
|
for unite in numeros_unites:
|
||||||
print(f"Unité {unite}")
|
print(f"Unité {unite}")
|
||||||
# Récupérer la liste des membres
|
# Récupérer la liste des membres
|
||||||
members = site_eglise.get_member_list(unite, cookie=cookie)
|
members = site_eglise.get_member_list(unite)
|
||||||
|
|
||||||
# Préparer le fichier de sortie
|
# Préparer le fichier de sortie
|
||||||
output_file = os.path.join(chemin_repertoire_sortie, f"liste_membres_decedes_unite_{unite}.txt")
|
output_file = os.path.join(chemin_repertoire_sortie, f"liste_membres_decedes_unite_{unite}.txt")
|
||||||
@ -76,7 +77,7 @@ def trouver_decedes(chemin_base_donnees, numeros_unites, cookie, chemin_repertoi
|
|||||||
ville_registre = None
|
ville_registre = None
|
||||||
# S'il s'agit d'une femme mariée, trouver son nom de jeune fille
|
# S'il s'agit d'une femme mariée, trouver son nom de jeune fille
|
||||||
if member['isSpouse']:
|
if member['isSpouse']:
|
||||||
member_profile = site_eglise.get_member_profile(member['legacyCmisId'], cookie=cookie)
|
member_profile = site_eglise.get_member_profile(member['legacyCmisId'])
|
||||||
maiden_name = member_profile['individual']['maidenNameGroup']['name1']['family']
|
maiden_name = member_profile['individual']['maidenNameGroup']['name1']['family']
|
||||||
ville_registre = member_profile['individual']['birthPlace']
|
ville_registre = member_profile['individual']['birthPlace']
|
||||||
try:
|
try:
|
||||||
@ -97,7 +98,7 @@ def trouver_decedes(chemin_base_donnees, numeros_unites, cookie, chemin_repertoi
|
|||||||
feminin = ""
|
feminin = ""
|
||||||
for person in query:
|
for person in query:
|
||||||
if not ville_registre:
|
if not ville_registre:
|
||||||
member_profile = site_eglise.get_member_profile(member['legacyCmisId'], cookie=cookie)
|
member_profile = site_eglise.get_member_profile(member['legacyCmisId'])
|
||||||
ville_registre = member_profile['individual']['birthPlace']
|
ville_registre = member_profile['individual']['birthPlace']
|
||||||
if not ville_registre:
|
if not ville_registre:
|
||||||
ville_registre = "<VIDE>"
|
ville_registre = "<VIDE>"
|
||||||
@ -114,4 +115,10 @@ décédé{feminin} le {person.jour_deces:0>2}/{person.mois_deces:0>2}/{person.an
|
|||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
trouver_decedes(param.chemin_base_donnees, param.numeros_unites, param.cookie, param.chemin_repertoire_sortie)
|
parser = argparse.ArgumentParser(description='Recherche des personnes décédées dans les registres.')
|
||||||
|
parser.add_argument('chemin_base_donnees', type=str, help="chemin vers la base de données")
|
||||||
|
parser.add_argument('chemin_repertoire_sortie', type=str, help="chemin vers le répertoire de sortie")
|
||||||
|
parser.add_argument('numeros_unites', type=str, help="numéros des l'unités à traiter, séparés par des virgules (ex: 123,753,469)")
|
||||||
|
parser.add_argument('--cookie', '-c', type=str, help='chemin vers la base de donnée des cookies de Firefox')
|
||||||
|
args = parser.parse_args()
|
||||||
|
trouver_decedes(args.chemin_base_donnees, args.numeros_unites.split(','), args.chemin_repertoire_sortie, args.cookie)
|
||||||
|
@ -1,2 +1,3 @@
|
|||||||
peewee
|
peewee
|
||||||
requests
|
requests
|
||||||
|
browser_cookie3
|
Loading…
Reference in New Issue
Block a user