Obtenez le nombre de vues de Qiita

en premier

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.

environnement

Go 1.15.2

  1. Obtenez un jeton d'accès === Obtenez des jetons depuis Écran de gestion des utilisateurs image.png

Sélectionnez read_qiita et write_qiita comme champ d'application image.png

  1. Vérifiez l'URL des informations que vous souhaitez obtenir === Vérifiez l'URL des informations que vous souhaitez obtenir de Documents officiels. Les deux types suivants seront utilisés cette fois.
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.
  1. Créez une structure pour convertir json === Étant donné que les informations renvoyées lors de la frappe de l'API à partir du document officiel sont renvoyées par Json, Créez une structure qui gère les données renvoyées.

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"`
}
  1. Accédez à l'API Qiita ===

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.
  1. Sortie CSV ===

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()
}

finalement

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.

Références

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

Obtenez le nombre de vues de Qiita
Obtenez le nombre de chiffres
Obtenez le nombre d'abonnés Youtube
[Python] Obtenez le nombre de vues de tous les articles publiés
Obtenez le nombre de PV d'articles Qiita que vous avez publiés avec l'API
Obtenez des visites d'articles et des likes avec l'API Qiita + Python
10. Compter le nombre de lignes
Calculez le nombre de changements
Comment obtenir le nombre de chiffres en Python
Obtenir la taille (nombre d'éléments) de Union Find en Python
Calcul du nombre d'associations de Klamer
Obtenez le nombre d'éléments spécifiques dans la liste python
Obtenir les attributs d'un objet
Obtenez le premier élément du jeu de requêtes
Obtenez le nombre d'occurrences pour chaque élément de la liste
Obtenez le nombre de lecteurs d'articles sur Mendeley en Python
Compter / vérifier le nombre d'appels de méthode.
Obtenez la liste des colonnes et la liste des données de CASTable
Obtenez les débats parlementaires via l'API
Obtenez la valeur de la couche intermédiaire de NN
Obtenez le dernier jour du mois spécifié
[Python] Récupère le code de caractère du fichier
Obtenez le nom de fichier du répertoire (glob)
[PowerShell] Obtenez la lecture de la chaîne de caractères
Compter le nombre de caractères avec écho
"Le gars qui prédit le nombre de vues à partir du titre de la vidéo de Jar Jal"
J'ai essayé d'obtenir le code d'authentification de l'API Qiita avec Python.
Obtenez le nombre de visites sur chaque page avec ReportingAPI + Cloud Functions
Récupérer le contenu de git diff depuis python
Sortie du nombre de cœurs de processeur en Python
[Python] Obtenir / modifier l'étiquette d'échelle de la figure
[Python] Obtenez les principaux sujets de Yahoo News
Récupérer l'appelant d'une fonction en Python
Calculez le nombre total de combinaisons avec python
Divisez la chaîne de caractères en le nombre de caractères spécifié
Trouvez le nombre de jours dans un mois
[Python] Obtenez la dernière date de mise à jour du site Web
Minimisez le nombre de polissages en optimisant la combinaison
Obtenez la liste "J'aime" de Qiita en grattant
Obtenir uniquement la partie adresse de la carte réseau (eth0)
Déterminez le nombre de classes à l'aide de la formule Starges
[Python] Get the day (anglais et japonais)
Obtenez la date de mise à jour du fichier de mémorandum Python.
[Python] Totale automatiquement le nombre total d'articles publiés par Qiita à l'aide de l'API
Obtenez le nombre de tweets liés à un certain mot-clé à l'aide de l'API Twitter
Une introduction à l'analyse de données à l'aide de Python - Pour augmenter le nombre de vues vidéo -
Obtenez le titre de Yahoo News et analysez les sentiments
Comment connaître le numéro de port du service xinetd
[Python] Un programme qui compte le nombre de vallées
Obtenez le nom de la variable sous forme de chaîne de caractères.
Transition des messages Qiita
Obtenez la version GNOME
[Python] Obtenez le chemin d'accès officiel du fichier de raccourci (.lnk)
relation entre la série de nombres de Fibonacci et le nombre d'or
Le sens de soi
[Python] Récupérez le texte de la loi à partir de l'API e-GOV law
Calculez la valeur totale de plusieurs colonnes avec awk