URL: https://linuxfr.org/forums/programmation-python/posts/script-qui-utilise-weboob-casse-apres-une-maj Title: Script qui utilise Weboob cassé après une màj Authors: Coninox Date: 2019年04月01日T16:47:37+02:00 License: CC By-SA Tags: Score: 0 Bonjour à tous ! J'ai l'impression que l'usage de weboob dans des scripts python ne fait pas l'objet de vraie documentation destinée aux utilisateurs. Et j'ai pas trouvé de forum dédié où poser des questions, donc je tente ma chance ici. J'étais parvenu à un truc qui marchais il y a quelques temps, en m'inspirant d'un exemple glané je ne sais plus où, et j'étais arrivé à truc qui juste marche, par un hasard miraculeux. Dans mon script, j'ai le bout de code suivant qui sert à récupérer l'historique d'un compte en banque : ```python def get_history(account_ID,min_date = date(1900, 12, 31), max_date = date(2900, 12, 31)) : bank_name = account_ID.split("@")[1] w = Weboob() w.load_backends(names=[bank_name]) for a_tmp in list(w.iter_accounts()) : account = a_tmp.to_dict() if account["id"] == account_ID : a = a_tmp res = [] for h in w.iter_history(a) : history = h.to_dict() if min_date <= history["date"].date() <= max_date : res += [{"label":history["label"], "amount":history["amount"], "date":history["date"]}] return res ``` Tout marchait pour le mieux dans le meilleur des mondes, jusqu'à ce que je mette à jour Weboob. Depuis, j'ai le message d'erreur suivant : ``` Traceback (most recent call last): File "/media/bigadin_homes/Travail/Banque/Auto_dispatch_manual_test.py", line 9, in gain_moy = get_gain_moyen_par_mois("XXXXXXXX", nb_mois = nbm) File "/media/bigadin_homes/Travail/Banque/BankTools.py", line 100, in get_gain_moyen_par_mois history = get_history(account_ID,min_date = min_date, max_date = max_date) File "/media/bigadin_homes/Travail/Banque/BankTools.py", line 55, in get_history for a_tmp in list(w.iter_accounts()) : File "/home/admin/.local/lib/python3.5/site-packages/weboob/core/bcall.py", line 185, in __iter__ raise CallErrors(self.errors) weboob.core.bcall.CallErrors: Errors during backend calls: Module(): TypeError('object() takes no parameters',) 'Traceback (most recent call last):\n File "/home/admin/.local/lib/python3.5/site-packages/weboob/browser/switch.py", line 91, in wrapper\n return val(*args, **kwar gs)\n File "/home/admin/.local/lib/python3.5/site-packages/weboob/browser/browsers.py", line 795, in inner\n browser.do_login()\n File "/home/admin/.local/share/we boob/modules/1.5/cragr/web/browser.py", line 177, in do_login\n raise SiteSwitch(\'api\')\nweboob.browser.switch.SiteSwitch: Switching to site api\n\nDuring handling of the above exception, another exception occurred:\n\nTraceback (most recent call last):\n File "/home/admin/.local/lib/python3.5/site-packages/weboob/core/bcall.py" , line 96, in backend_process\n result = getattr(backend, function)(*args, **kwargs)\n File "/home/admin/.local/share/weboob/modules/1.5/cragr/module.py", line 105, in iter_accounts\n return self.browser.get_accounts_list()\n File "/home/admin/.local/lib/python3.5/site-packages/weboob/browser/switch.py", line 93, in wrapper\n self.set_browser(e.name)\n File "/home/admin/.local/lib/python3.5/site-packages/weboob/browser/switch.py", line 73, in set_browser\n obj = klass(*self._browser_a rgs, **self._browser_kwargs)\n File "/home/admin/.local/share/weboob/modules/1.5/cragr/api/browser.py", line 157, in __init__\n self.netfinca = NetfincaBrowser(\'\' , \'\', logger=self.logger, weboob=self.weboob, responses_dirname=dirname, proxy=self.PROXIES)\nTypeError: object() takes no parameters\n' ``` Bon, visiblement, iter_accounts n'est plus une fonction de la classe Weboob (Enfin je crois que c'est ce que j'ai compris). J'ai tenté d'investiguer à base de print(dir(w)) et de help(w) pour voir si c'était remplacé par autre chose, mais j'ai pas trouvé. Quelqu'un saurait me dire si la documentation de mes rêves se trouve quelque part ? EDIT : En fait ça n'arrive que à partir de la deuxième fois que je rentre dans cette fonction. Je suppose qu'il faut réinitialiser un truc entre deux appels. J'ai tenté de mettre un w.deinit() à la fin, mais ça ne change rien.

AltStyle によって変換されたページ (->オリジナル) /