Pour obtenir le nombre de LGTM et la vue de Qiita J'ai pu y faire référence car les spécifications de l'API ont changé, je n'ai donc pas pu l'obtenir. Je décrirai la méthode d'acquisition.
Go 1.15.2
Sélectionnez read_qiita et write_qiita comme champ d'application
GET /api/v2/authenticated_user/items
Renvoie une liste d'articles pour les utilisateurs authentifiés par ordre décroissant de date et d'heure de création.
GET /api/v2/items/:item_id
Obtenez l'article.
UserInfo.go
package data
type UserInfo struct {
Id string `json:"id"`
Likes_count int `json:"likes_count"`
Title string `json:"title"`
Page_views_count int `json:"page_views_count"`
}
web.go
package qiita
import (
"../data"
"../exporter"
"encoding/json"
"io/ioutil"
"net/http"
)
func GetQiitaViews() { // main.Appel de départ
url := "https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=20"
resp, err := doHttpRequest(url)
defer resp.Body.Close() //Fermer le corps
body, err := ioutil.ReadAll(resp.Body) //Obtenez du corps de la réponse
var userInfos []data.UserInfo
if err = json.Unmarshal(body, &userInfos); err != nil { //Lire json
return
}
index := 0
for _, user := range userInfos { //Lire un article à la fois
url = "https://qiita.com/api/v2/items/" + user.Id //Obtenez le nombre de vues à l'aide de l'ID d'article
resp, err := doHttpRequest(url)
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
if err := json.Unmarshal(body, &user); err != nil {return}
userInfos[index].Page_views_count = user.Page_views_count
index += 1
}
exporter.ToCsv(userInfos) //conversion csv
}
func doHttpRequest(url string) (*http.Response, error) { //Demande commune
req, _ := http.NewRequest("GET", url, nil)
buf, _ := ioutil.ReadFile("token.txt")
token := string(buf) //Gérer les jetons dans un fichier séparé
req.Header.Set("content-type", "application/json") //Application dans l'en-tête/Spécifiez json
req.Header.Set("Authorization", "Bearer " + token) //Spécifiez le jeton dans l'en-tête
client := new(http.Client)
resp, err := client.Do(req)
return resp, err
}
Il semble que vous ne pouvez pas l'obtenir uniquement avec l'API suivante Au début, je n'avais pas réalisé que je devais interroger l'URL et je ne pouvais pas l'obtenir. De plus, puisque page_view_count renvoie null (0 lorsqu'il est mis en struct avec Go), Il semble que le nombre de vues doit être obtenu pour chaque article. [[API Qiita] J'aime! J'ai fait référence à l'article "Nombre total automatique de vues" (https://qiita.com/Naoto9282/items/252c4b386aeafc0052ba).
GET /api/v2/authenticated_user/items
Renvoie une liste d'articles pour les utilisateurs authentifiés par ordre décroissant de date et d'heure de création.
Par conséquent, l'API suivante est utilisée.
GET /api/v2/items/:item_id
Obtenez l'article.
export.go
package exporter
import (
"../data"
"encoding/csv"
"os"
"strconv"
)
func ToCsv(userInfos []data.UserInfo) {
file, _ := os.OpenFile("result.csv", os.O_WRONLY|os.O_CREATE, 0600) //Fichier ouvert
defer file.Close()
writer := csv.NewWriter(file)
writer.Write([]string{"title", "like_count", "page_views_count"}) //Ajouter un en-tête
for _, user := range userInfos {
likesCount := strconv.Itoa(user.Likes_count) //Convertir un entier en chaîne
pageViewsCount := strconv.Itoa(user.Page_views_count)
writer.Write([]string{user.Title, likesCount, pageViewsCount}) //l'écriture
}
writer.Flush()
}
La source peut être trouvée ici (https://github.com/kurramkurram/QiitaViewCounts). En raison du téléchargement de la source sur GitHub Les informations sur les jetons sont gérées dans un fichier séparé dans le même répertoire que main.go. Une certaine gestion des erreurs est omise.
Officiel [API Qiita] J'aime! Comptage automatique des vues Exporter CSV en langue Go! Version SJIS pour Excel! Aller au cycle d'importation non autorisé
Recommended Posts