VecchioClient è una libreria Go per postare su vecchiochan.com
Inizia »
Guarda esempi
·
Segnala Bug
·
Richiedi Feature
La libreria è basata sul reverse-engineering dell'endpoint /post.php
di NPFchan ed espone un client che astrae i dettagli dell'invio del form e della gestione delle richieste http.
Il client fornisce queste funzionalità:
- Pubblicare nuovi thread su board specifiche
- Rispondere a thread esistenti
È inoltre possibile una configurazione personalizzata che consente di passare http.Client
, User-Agent
e logger personalizzati, nonché di abilitare il logging dettagliato.
Nessuna funzionalità di lettura viene fornita poiché NPFchan espone già l'API di vichan.
Per installare VecchioClient, usa go get
:
go get github.com/anond0rf/vecchioclient
VecchioClient offre un'API semplice e diretta per interagire con vecchiochan. Ecco come iniziare:
-
Importa il client nel tuo codice Go:
import "github.com/anond0rf/vecchioclient/client"
-
Crea un client:
vc := client.NewVecchioClient()
-
Usa il client per interagire con vecchiochan, ad esempio per pubblicare un nuovo thread o rispondere a uno esistente.
thread := client.Thread{ Board: "b", Name: "", Subject: "", Email: "", Spoiler: false, Body: "Questo è un nuovo thread sulla board /b/", // Messaggio del thread Embed: "", Password: "", Sage: false, // Impedisce il bumping e sostituisce l'email con "rabbia" Files: []string{`C:\path\to\file.jpg`}, } id, err := vc.NewThread(thread) if err != nil { log.Fatalf("Impossibile pubblicare il thread %+v. Errore: %v\n", thread, err) } fmt.Printf("Thread pubblicato con successo (id: %d) - %+v\n", id, thread)
Se l'operazione va a buon fine, l'id del nuovo thread viene restituito.
NB: non è necessario impostare tutti i campi per istanziare la structThread
e lo si può fare con un set ridotto:thread := client.Thread{ Board: "b", Body: "Questo è un nuovo thread sulla board /b/", // Messaggio del thread Files: []string{`C:\path\to\file.jpg`}, }
In questo caso, valori di default saranno assegnati agli altri campi.
Board è l'unico campo obbligatorio controllato dal client ma tieni presente che, poiché ogni board ha le sue impostazioni, potrebbero essere necessari più campi per postare (ad esempio, non è possibile postare un nuovo thread senza embed né file su /b/).reply := client.Reply{ Thread: 1, Board: "b", Name: "", Email: "", Spoiler: false, Body: "Questa è una nuova risposta al thread #1 della board /b/", // Messaggio della risposta Embed: "", Password: "", Sage: false, // Impedisce il bumping e sostituisce l'email con "rabbia" Files: []string{`C:\path\to\file1.mp4`, `C:\path\to\file2.webm`}, } id, err = vc.PostReply(reply) if err != nil { log.Fatalf("Impossibile pubblicare la risposta %+v. Errore: %v\n", reply, err) } fmt.Printf("Risposta pubblicata con successo (id: %d) - %+v\n", id, reply)
Se l'operazione va a buon fine, l'id della risposta viene restituito.
NB: non è necessario impostare tutti i campi per istanziare la structReply
e lo si può fare con un set ridotto:reply := client.Reply{ Thread: 1, Board: "b", Body: "Questa è una nuova risposta al thread #1 della board /b/", // Messaggio della risposta }
In questo caso, valori predefiniti saranno assegnati agli altri campi.
Board e Thread sono gli unici campi obbligatori controllati dal client, ma tieni presente che, poiché ogni board ha le sue impostazioni, potrebbero essere necessari più campi per postare.
E' possibile passare una configurazione personalizzata al client creando una struct Config
con i valori necessari come nell'esempio seguente:
config := client.Config{
Client: &http.Client{Timeout: 10 * time.Second}, // Client HTTP personalizzato
Logger: log.New(os.Stdout, "vecchioclient: ", log.LstdFlags), // Logger personalizzato
UserAgent: "MyCustomUserAgent/1.0", // User-Agent personalizzato
Verbose: true, // Abilita/Disabilita il logging dettagliato
}
vc := client.NewVecchioClientWithConfig(config)
VecchioClient è concesso in licenza sotto la Licenza LGPL-3.0.
Questo significa che puoi usare, modificare e distribuire il software, a condizione che eventuali versioni modificate siano anch'esse concesse in licenza sotto la LGPL-3.0.
Per maggiori dettagli, consulta il testo completo della licenza nel file LICENSE.
Copyright © 2024 anond0rf