Oppure

Loading
06/08/16 13:10
GN
Stavo pensando che a mio avviso ci sono a grandi linee tre modi per far arrivare le notifiche del forum alla chat:
A) Ogni tot minuti un plugin del bot scarica la home del sito, parsa l'elenco degli ultimi topic aggiornati, e confrontandolo con la versione scaricata alla volta precedente stabilisce in quali sono presenti nuovi post, quindi ne scrive i link in chat. La soluzione forse più "rozza" ma non richiede alcun intervento al sito.
B) Simile al precedente, ma invece che fare scraping della home lato sito si fa un'API apposita che ritorna l'elenco dei post più recenti inseriti con relativi timestamp e link ai topic in formato xml o json.
C) Soluzione nettamente diversa: è il sito a notificare al bot l'inserimento di un nuovo post. Si aggiunge al bot un piccolo server HTTP che resta in ascolto su una porta, e ogni volta che viene inserito un post il sito fa una richiesta ad esso (ad esempio con curl per php) specificando tramite parametri POST il link al topic ed eventualmente altre informazioni come il nick dell'utente che ha postato. Questo consentirebbe di avere le notifiche in tempo reale, ma potrebbe creare qualche problema, ad esempio, se il server del bot per qualche motivo non risponde si creano rallentamenti nella generazione della pagina che segnala all'utente sul sito che il post è stato inserito correttamente (si potrebbe ovviare con un timeout basso), e inoltre il server che ospita il bot deve avere una porta aperta.

Non so, questi sono i miei 2 cent, fatemi sapere cosa ne pensate
aaa
06/08/16 15:49
pierotofy
L'opzione B mi sembra quella più semplice.
Il mio blog: piero.dev
06/08/16 16:09
pierotofy
Il mio blog: piero.dev
06/08/16 16:14
GN
Postato originariamente da pierotofy:

Voilà: pierotofy.it/pages/extras/forum/api/…


Perfetto grazie :k:, domani vedo di implementare il plugin.

Nel frattempo ci sono 2 nuovi plugin, calc (fa semplici operazioni matematiche) e convert (fa conversioni tra binario, ottale, decimale ed esadecimale).
aaa
07/08/16 16:46
GN
C'è un piccolo problema con la API: il numero di reply viene codificato come stringa (con le virgolette) quando è != 0, mentre come numero (senza virgolette) quanto è zero. Esempio (frammento di risposta):

{"url":"\/pages\/extras\/forum\/81\/1059186-invio_pacchetti_da_smartphone_a_server_python\/","subject":"Invio pacchetti da smartphone a Server python","timestamp":"1470412286","replies":0},{"url":"\/pages\/extras\/forum\/2\/1059052-invertire_i_bit_di_una_char\/","subject":"Invertire i bit di una char","timestamp":"1469269890","replies":"15"},{"url":"\/pages\/extras\/forum\/572\/1059134-non_esco_nella_lista_dei_membri_eppure_mi_avete_accettato\/","subject":"non esco nella lista dei membri eppure mi avete accettato","timestamp":"1470136559","replies":"6"}

Questo mi crea qualche problemino con il parsing. E' possibile sistemarlo? O devo trovare un modo di aggirarlo lato client? Grazie :D
aaa
07/08/16 16:49
pierotofy
Oops (ecco perchè detesto PHP). Sistemato. :)

edit: ho cambiato anche timestamp da string a int.
Ultima modifica effettuata da pierotofy 07/08/16 16:50
Il mio blog: piero.dev
08/08/16 12:14
GN
Perfetto grazie, ora sembra funzionare (scopo di questo post è anche fare una prova per vedere se viene notificato)
aaa
09/08/16 12:33
GN
Il plugin è pronto; trovate il sorgente in questo file: github.com/NeroReflex/Pizza/blob/master/src/plugins/…

Attualmente il controllo viene fatto ogni 5 minuti per non sovraccaricare il server con richieste all'API troppo ravvicinate ma avendo comunque le notifiche nella chat con un ritardo non troppo elevato.
aaa