WIP: Aller chercher les cookies directement dans le navigateur

This commit is contained in:
Sdj Geek 2020-06-15 21:05:27 +02:00
parent 3734eeed87
commit 6f7028bb0e
4 changed files with 43 additions and 33 deletions

View File

@ -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"

View File

@ -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 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",
'Cookie': 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",
'Cookie': self.cookie_jar,
'Referer': f"https://lcr.churchofjesuschrist.org/records/member-profile/{member_id}?lang=fra"})
r.raise_for_status()
return r.json()

View File

@ -38,30 +38,32 @@ Version : 3.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 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 inscrire les fichiers de sortie :param chemin_repertoire_sortie: chemin vers le répertoire 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 +78,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 +99,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 +116,4 @@ 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) trouver_decedes(param.chemin_base_donnees, param.numeros_unites, param.chemin_repertoire_sortie, param.cookie)

View File

@ -1,2 +1,3 @@
peewee peewee
requests requests
browser_cookie3