Tema de Viquiprojecte Discussió:Discussions desateses/discussions

Paucabot (discussiócontribucions)

@Pere prlpz: Sembla que s'ha aturat. Hi podries fer una ullada? Gràcies.

Pere prlpz (discussiócontribucions)

@Paucabot La pàgina l'actualitzava el CobainBot automàticament. Com que es va aturar fa uns mesos, de tant en tant l'actualitzava jo engegant el meu bot a mà, però els meus bots han deixat de funcionar fins que tingui una estona per actualitzar el pywikibot.

Ara bé, fins que algú torni a muntar el cron per actualitzar automàticament, el sistema que trobo més pràctic és tenir el codi, que és a https://github.com/pere-prlpz/viquipedia/blob/master/discussions.py, i executar-lo cada cop que vull consultar la pàgina. Com que ja tens el pywikibot instal·lat potser t'aniria bé fer el mateix.

Paucabot (discussiócontribucions)

No sé si ho sabré fer, però intentaré programar el meu robot perquè, usant el teu codi, ho faci cada vespre. Ja et diré coses.

Paucabot (discussiócontribucions)

@Pere prlpz: He executat el programa al servidor Toolforge i em dona aquest error:

Traceback (most recent call last):

 File "/data/project/rebot/discussions.py", line 54, in <module>
   jpag=json.loads(pbrut)
 File "/usr/lib/python3.5/json/__init__.py", line 312, in loads
   s.__class__.__name__))

TypeError: the JSON object must be str, not 'bytes'

Tens idea de quin pot ser el problema?

Pere prlpz (discussiócontribucions)

No sé massa què dir-te perquè a casa aquesta part em funciona. Per l'error podria ser un problema de versions (un paquet que tens instal·lat tu dóna o espera un resultat diferent que un dels meus), o un problema que ha fallat el llegir la consulta. El segon no és estrany i normalment s'arreglava executant de nou, tot i que no recordo que el missatge fos aquest. Potser per fer una query a l'api des del Toolforge cal fer alguna cosa diferent, com ara donar-li un agent o alguna cosa així, però em sorprendria perquè l'única cosa que fa el programa és llegir una adreça web.

He actualitzat el codi al github però diria que els canvis que faltaven no tenen res a veure amb aquest error.

Paucabot (discussiócontribucions)

He actualitzat el meu pywikibot local a la darrera versió i al final m'ha funcionat. El que no he pogut aconseguir és fer-ho des del Toolforge.

Paucabot (discussiócontribucions)

M'acaba de funcionar al Toolforge. Ara posaré el cron.

Segons m'han dit al xat del Toolforge, amb les darreres versions de Python no hauria hagut de fer res, però amb la versió que hi havia allà he hagut de canviar pllista.read() per pllista.read().decode('utf-8').

Pere prlpz (discussiócontribucions)
Paucabot (discussiócontribucions)

Això és el que m'ha dit els dos que m'han ajudat:

Lucas Werkmesiter: I guess it’s a Python 3 error, in Python 2 json.loads(bytes) was allowed
(but adding the decode step is the correct solution, please don’t go back to Python 2 ^^)

AntiComposite: actually, running it in python3.6+ should work
https://docs.python.org/3/library/json.html?highlight=json#json.loads
though that might require an encoding param
not sure what it would do in 3.9

Lucas Werkmesiter: oh, interesting
yeah, in Python 3.9 json.loads(b'{}') works
json.loads('{}'.encode('utf16')) and json.loads('{}'.encode('utf32')) also work, I guess it autodetects the encoding

Pere prlpz (discussiócontribucions)

Ara em lliga perquè la meva versió antiga funcionava amb Python 2.7 i l'actual la faig anar amb Python 3.8. Les versions que no han funcionat són les d'entremig que no he fet servir.

Resposta a «Inactiu»