Um die Anzahl der LGTM und View of Qiita zu erhalten Ich konnte darauf verweisen, da sich die API-Spezifikationen geändert haben und ich sie nicht erhalten konnte. Ich werde die Erfassungsmethode beschreiben.
Go 1.15.2
Wählen Sie read_qiita und write_qiita als Bereich aus
GET /api/v2/authenticated_user/items
Gibt eine Liste von Artikeln für authentifizierte Benutzer in absteigender Reihenfolge von Erstellungsdatum und -zeit zurück.
GET /api/v2/items/:item_id
Holen Sie sich den Artikel.
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.Rufen Sie von unterwegs an
url := "https://qiita.com/api/v2/authenticated_user/items?page=1&per_page=20"
resp, err := doHttpRequest(url)
defer resp.Body.Close() //Körper schließen
body, err := ioutil.ReadAll(resp.Body) //Holen Sie sich aus dem Körper der Antwort
var userInfos []data.UserInfo
if err = json.Unmarshal(body, &userInfos); err != nil { //Lesen Sie json
return
}
index := 0
for _, user := range userInfos { //Lesen Sie jeweils einen Artikel
url = "https://qiita.com/api/v2/items/" + user.Id //Ermitteln Sie die Anzahl der Ansichten mithilfe der Artikel-ID
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) //CSV-Konvertierung
}
func doHttpRequest(url string) (*http.Response, error) { //Gemeinsame Anfrage
req, _ := http.NewRequest("GET", url, nil)
buf, _ := ioutil.ReadFile("token.txt")
token := string(buf) //Verwalten Sie Token in einer separaten Datei
req.Header.Set("content-type", "application/json") //Anwendung im Header/Geben Sie json an
req.Header.Set("Authorization", "Bearer " + token) //Geben Sie das Token im Header an
client := new(http.Client)
resp, err := client.Do(req)
return resp, err
}
Es scheint, dass Sie es nicht nur mit der folgenden API bekommen können Zuerst wusste ich nicht, dass ich die URL abfragen musste und konnte sie nicht bekommen. Da page_view_count null zurückgibt (0, wenn es mit Go in struct eingefügt wird), Es scheint, dass die Anzahl der Ansichten für jeden Artikel ermittelt werden muss. [[Qiita API] Gefällt mir! Ich habe auf den Artikel "Automatisches Zählen von Ansichten" verwiesen (https://qiita.com/Naoto9282/items/252c4b386aeafc0052ba).
GET /api/v2/authenticated_user/items
Gibt eine Liste von Artikeln für authentifizierte Benutzer in absteigender Reihenfolge von Erstellungsdatum und -zeit zurück.
Daher wird die folgende API verwendet.
GET /api/v2/items/:item_id
Holen Sie sich den Artikel.
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) //Datei öffnen
defer file.Close()
writer := csv.NewWriter(file)
writer.Write([]string{"title", "like_count", "page_views_count"}) //Fügen Sie eine Kopfzeile hinzu
for _, user := range userInfos {
likesCount := strconv.Itoa(user.Likes_count) //Konvertiere int in string
pageViewsCount := strconv.Itoa(user.Page_views_count)
writer.Write([]string{user.Title, likesCount, pageViewsCount}) //Schreiben
}
writer.Flush()
}
Die Quelle finden Sie hier (https://github.com/kurramkurram/QiitaViewCounts). Aufgrund des Hochladens der Quelle auf GitHub Die Token-Informationen werden in einer separaten Datei im selben Verzeichnis wie main.go verwaltet. Einige Fehlerbehandlungen entfallen.
Offiziell [Qiita API] Gefällt mir! Automatisches Zählen von Ansichten CSV in Go-Sprache exportieren! SJIS-Version für Excel! Importzyklus nicht erlaubt