Auteur Sujet: Script (python) permettant d'interroger son éllibilité SFR  (Lu 2708 fois)

0 Membres et 1 Invité sur ce sujet

sazom

  • Abonné SFR fibre FttH
  • *
  • Messages: 129

Je cree un sujet dédié pour cet utilitaire (voir précédant sujet pour l'historique)

Tout est ici:
https://github.com/mem0x959c/sfr_ftth

Vos questions / remarques sont les bienvenus

KeepOn

  • Abonné SFR fibre FttH
  • *
  • Messages: 406
  • Brétigny-sur-Orge (91)
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #1 le: 11 juin 2020 à 19:06:53 »
Salut ! Code testé avec mon adresse, ça fonctionne.

J'ai tout de même tenté une amélioration.
Y'a t-il une possibilité d'interroger les serveurs de SFR à la pelle pour demander l'éligibilité de plusieurs adresses ?
J'ai basiquement essayé de faire une boucle qui interrogeait chaque adresse une à une dans un fichier texte mais cela
n'a pas l'air de fonctionner... Je suis un peu novice en Python mais en gros chaque ligne du fichier est lue, puis
demandée. J'obtiens le code "Adresse inconnue" mais quand j'active le debug des fonctions dans sfr_ftth je remarque
que l'idRa est souvent trouvé mais le test échoue quand même (sûrement quand les données sont récupérées chez SFR).

Peut-être un timeout ou une feature qui empêche de multiplier les requêtes depuis la même origine sans changer tel ou tel id utilisé
pour se connecter ? Ou alors tout simplement une bêtise de programmation de ma part.
Côté sfr_ftth.py, j'ai juste passé les "debug = False" en "debug = True"
Voici ma tentative de code sur test_sfr_ftth_1.py :

source = open("adresses.txt", "r")
line = source.readline()

while line:
    print(line)
    print(sfr_ftth.GetEligibilityByPostalAddress(line))
    print("Done.")
    line = source.readline()

source.close

vivien

  • Administrateur
  • *
  • Messages: 47 187
    • Twitter LaFibre.info
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #2 le: 11 juin 2020 à 19:32:16 »
Il est possible et même probable qu'une même IP ne puisse pas demander plus de 20 à 50 adresses au serveur d'éligibilité.

sazom

  • Abonné SFR fibre FttH
  • *
  • Messages: 129
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #3 le: 11 juin 2020 à 20:15:43 »
Y'a t-il une possibilité d'interroger les serveurs de SFR à la pelle pour demander l'éligibilité de plusieurs adresses ?

C'est le but de https://github.com/mem0x959c/sfr_ftth/blob/master/test_sfr_ftth2.py qui fait ca sur un fichier csv.
Par exemple, dans le sujet que je references sur mon 1er post, je fais ca sur tout les logements de ma ville.
Si tu veux en savoir plus cf le fichier readme.

Si tu shouhaites utiliser un fichier txt au lieu de csv, tu peux modifier CompareArcepSfrEligibility() comme ceci:

   
def GetEligibilityFromTxtFile(txtFilePath):
    addresses = GetAdressesFromTxtFile(txtFilePath)
    session = requests.Session()
    with multiprocessing.Pool(processes=16) as pool:
        results = pool.starmap(sfr_ftth.GetEligibilityByPostalAddress2, [(a, session, False) for a in addresses])
    print(results)

ou GetAdressesFromTxtFile() est definie comme ceci:

   
def GetAdressesFromTxtFile(txtFilePath):
    with open(txtFilePath) as f:
         adresses= f.readlines()
    return [sfr_ftth.NormalizePostalAddress(address) for address in adresses]

2 choses a noté :
- il faut utiliser NormalizePostalAddress() sinon il y a un rique d'avoir "addresse inconnue" car l'api rest attend des addresses dans un format specifique. debug=True t'aurais peut-etre permis de voir ca.
- GetEligibilityFromTxtFile() ci-dessus utilise 16 instances pour faire ca de maniere concurrente. Si tu veux faire ca de maniere sequentielle remplace par une simple loop.


KeepOn

  • Abonné SFR fibre FttH
  • *
  • Messages: 406
  • Brétigny-sur-Orge (91)
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #4 le: 11 juin 2020 à 20:22:21 »
Il est possible et même probable qu'une même IP ne puisse pas demander plus de 20 à 50 adresses au serveur d'éligibilité.

C'est possible. Mais j'ai corrigé mon code, apparemment, ma liste d'adresses avait un espace invisible à chaque
saut de ligne, ce qui rendait l'adresse incorrecte (puisque le saut de ligne comptait comme un caractère en plus).
J'ai modifié la valeur de line pour retirer le dernier caractère de chaque ligne lue.
Mon code fonctionne désormais.

L'intérêt du mode débug est aussi de retourner l'intégralité du résultat de la requête d'éligibilité côté SFR,
cela rend lisible des données issues du SI (PM lié, opérateur d'infrastructure)
Il y a certains champs qui peuvent être utiles pour comprendre l'avancée de l'éligibilité comme work_in_progress etc...

while line:
    line = line[:-1]
    print(line)
    print(sfr_ftth.GetEligibilityByPostalAddress(line))
    print("Done.")
    line = source.readline()

EDIT: écrit avant la réponse de @sazom

OK alors j'ai testé la version avec .txt sur test_sfr_ftth2.py
J'ai réussi à obtenir le lancement du test mais toutes les adresses donnent "Adresse inconnue".
Peut-être le problème de saut invisible à la lecture, j'essaie de regarder cela.

Merci!

KeepOn

  • Abonné SFR fibre FttH
  • *
  • Messages: 406
  • Brétigny-sur-Orge (91)
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #5 le: 11 juin 2020 à 20:51:24 »
C'est sûrement du bricolage mais j'ai réussi à régler le problème du caractère "saut de ligne" qui
bloquait l'outil de check d'éligibilité. Passer en mode débug sur test_sfr_ftth2.py m'a permis de voir
qu'effectivement un "\n" se glissait à chaque saut de ligne.
J'ai modifié manuellement dans NormalizePostalAddress en ajoutant une nouvelle condition de modification
de la chaîne de caractère :

elif c == '\n':
            c = ''

Le code se lance désormais même si j'ai bien l'impression que certaines adresses ne passent pas.
Sur une vingtaine d'adresses testées, le test fonctionne pour 12-13. Il doit y avoir des erreurs de mon côté
dans leur écriture (ou des idRa qui ne sont pas trouvés). À noter que ce sont toujours les mêmes adresses qui sont concernées.
Je cherche un moyen de créer un output en fichier texte (ça va m'occuper un peu haha ça faisait longtemps que je n'avais pas codé).

EDIT: Bon pour l'output le résultat est une liste donc c'est compliqué. J'arrête ma session de codage ici !
C'est un super outil tout de même pour voir l'intégralité du retour de la requête d'éligibilité, trouver son PM etc...
Mais le SI est peu locace si l'on est pas éligible ou très bientôt éligible... Je peux juste me réjouir de savoir que
mon adresse est la seule à être "work _in_progress = true" sur le SI SFR. Je sais pas ce que ça veut dire, peut-être que
l'arrivée de la fibre avance sur mon logement.

J'ai aussi remarqué que le code retourné pour l'éligibilité câble semble être le même que celui retourné pour l'éligibilité de la ville et du logement dans les prochains mois. Je vais essayer de retrouver l'id de l'erreur un peu plus tard...
En tout cas merci pour cet outil @sazom!
« Modifié: 11 juin 2020 à 21:11:43 par KeepOn »

sazom

  • Abonné SFR fibre FttH
  • *
  • Messages: 129
Script (python) permettant d'interroger son éllibilité SFR
« Réponse #6 le: 12 juin 2020 à 00:05:23 »

je viens de corriger NormalizePostalAddress() afin de prendre en compte les whitespace (\t, \n, ...etc). Merci pour ce feedback.
J'ai aussi aujouté un exemple qui fait exactement ce que tu veux:
https://github.com/mem0x959c/sfr_ftth/blob/master/test_sfr_ftth3.py

Prenons un exemple (quelque addresses dans ma ville).

si mon fichier addresse.txt contient ceci:
32 avenue président kennedy , 38300 Bourgoin-Jallieu
8 rue clemenceau, 38300 Bourgoin-Jallieu
3 rue des alouettes , 38300 Bourgoin-Jallieu

python test_sfr_ftth3.py addresses.txt me donne
3 RUE DES ALOUETTES , 38300 BOURGOIN JALLIEU, Addresse inconnue
32 AVENUE PRESIDENT KENNEDY, 38300 BOURGOIN JALLIEU, Une difficulté a été rencontrée sur le raccordement fibre de votre adresse
8 RUE CLEMENCEAU , 38300 BOURGOIN JALLIEU, Addresse inconnue

Le probleme vient de l'espace avantla virgule dans les adresses!
Si je corriges addresses.txt :
32 avenue président kennedy, 38300 Bourgoin-Jallieu
8 rue clemenceau, 38300 Bourgoin-Jallieu
3 rue des alouettes, 38300 Bourgoin-Jallieu

c'est mieux !
3 RUE DES ALOUETTES, 38300 BOURGOIN JALLIEU, VOUS ÊTES ÉLIGIBLE AUX OFFRES TRÈS HAUT DÉBIT (cable) DE SFR
32 AVENUE PRESIDENT KENNEDY, 38300 BOURGOIN JALLIEU, Une difficulté a été rencontrée sur le raccordement fibre de votre adresse
8 RUE CLEMENCEAU, 38300 BOURGOIN JALLIEU, status inconnu: 3302 !

je sais pas encore a quoi correspond le status 3302.

Si je veux maintenant ecrire le resultat dans une fichier, il suffit de faire
python test_sfr_ftth3.py addresses.txt > output.txt