Jouez avec les archives de Mastodon dans les réponses et les favoris de Python 2 Count

introduction

Pour l'archive de Mustdon, il est recommandé de se référer à Le diagramme ci-dessus [Python] Post date et heure dans l'archive de Mastodon .... En particulier, je vais omettre la partie de lecture du fichier json et de stockage du contenu de toot dans des objets cette fois.

Compter les destinations de réponse

Collecter les identifiants de destination de réponse

at = []
for object in objects:
    if '@' in object:
        at.append(object)
name = []
others = []
for a in at:
    while '@' in a:
        if ' ' in a:
            name.append(a[1:a.index(' ')])
            a=a[a.index(' ')+1:]
        else:
            others.append(a)
            break
len(name)

J'ai enlevé la balise du contenu de toot, mais comme @onekodate reste au début, je vais d'abord rechercher celui qui contient @ du contenu de toot. Ensuite, récupérez du deuxième au blanc après l'ID. Notez les toots qui n'ont pas cet espace et les toots qui ont plusieurs destinations. Les toots sans blanc sont collectés par d'autres personnes, c'est donc une bonne idée de les vérifier. S'il y a des mentions, elles sont généralement vides, je les omettrai donc. Répétez également l'opération avec l'instruction while tant qu'il y a @ dans le reste pour ne pas manquer plusieurs destinations. Cela collectera les identifiants de destination.

Comptez chaque fréquence

import pandas as pd
name = pd.Series(name)
namerank = name.value_counts()
print(namerank[0:29])

Puisque value.counts () de pandas.Series est pratique, je l'ai volontairement converti pour l'utiliser, et il est conçu pour afficher les 30 meilleures personnes.

Comptez les destinations du fabo

Charger likes.json

import json
import numpy as np
file = 'likes.json'
with open(file, 'r', encoding='utf-8') as fi:
    novels = json.load(fi)  
for novel in novels:
    likes = np.array(novels[novel])
len(likes)

Chargez likes.json contenant l'URL de destination du favori exactement de la même manière que vous avez chargé outbox.json au début du temps précédent.

Collectionnez des destinations fabo

favuser = []
others = []
for like in likes:
    if 'users' in like and 'statuses' in like:
        favuser.append(like[like.index('users')+6:like.index('statuses')-1])
    else:
        others.append(like)
len(favuser)

Dans les likes, l'URL de la destination de la fabo telle que https://mstdn.jp/users/onekodate/statuses/99502681496689830 est écrite, et l'URL de Mastodon contient les informations d'identification, veuillez donc la retirer. Vous pouvez dire qui vous êtes, mais il y a deux problèmes ici. ・ Les URL Misskey et Pleroma n'incluent pas d'informations d'identification -Occasionnellement, la mystérieuse chaîne de caractères tag: pawoo.net, 15/09/2017: objectId = 41135378: objectType = Status est mélangée dans l'URL. Je ne peux rien faire contre ces deux-là, alors je vais les mettre de côté pour les autres. Par conséquent, l'URL contient les «utilisateurs» et les «statuts», et la chaîne de caractères entre eux est récupérée comme ID.

Comptez chaque fréquence

import pandas as pd
fav = pd.Series(favuser)
favrank = fav.value_counts()
print(favrank[0:29])

C'est exactement la même chose que lors de la réponse. Vous n'êtes pas obligé d'importer des pandas à chaque fois.

Représenter graphiquement la transition du nombre de favoris

follower = np.zeros((10,len(favuser)))
for i in range(len(favuser)):
    for j in range(10):
        if favuser[i]==favrank.index[j]:
            follower[j][i:len(favuser)] = follower[j][i] + 1

Je vais représenter graphiquement la transition du nombre de fabs pour les 10 personnes prestigieuses qui ont beaucoup de fabs de ma part. Il n'y a pas de données temporelles dans likes.json, mais elles sont probablement classées par ordre chronologique, alors supposons que l'ordre peut être considéré comme du temps. Créez un tableau à deux dimensions en utilisant numpy et comptez par la force. Si vous souhaitez simplement dessiner un graphique, je pense que vous devriez l'écrire à chaque fois sans créer de tableau à deux dimensions.

import matplotlib.pyplot as plt
fig = plt.figure(figsize=(10, 5), dpi=200)
for j in range(10):
    plt.plot(range(len(favuser)),follower[j],label=favrank.index[j])
    plt.legend(bbox_to_anchor=(1, 1), loc='upper left', borderaxespad=0, fontsize=18)
fig.savefig('favtime.png')

favtime.png Voici celui dont la légende a été supprimée. La personne numéro un était écrasante, mais il semble que cela ait été lent récemment, je ne l'ai certainement pas vu récemment. La personne bleu clair à la 10ème place semble avoir été lente récemment, car elle s'est réincarnée.

en conclusion

J'ai pensé que ce serait intéressant de voir la relation avec mes followers, alors j'ai regardé les réponses. Vous pouvez probablement booster de la même manière. Si vous pouvez voir cette personne, ce sera ennuyeux et ennuyeux, mais nous attendons avec impatience votre utilisation.

Recommended Posts

Jouez avec les archives de Mastodon dans les réponses et les favoris de Python 2 Count
Rechercher et lire des vidéos YouTube avec Python
Fractal pour faire et jouer avec Python
Gérer les "années et mois" en Python
Remplissez la chaîne avec des zéros en python et comptez certains caractères de la chaîne
[REAPER] Comment jouer à Reascript avec Python
Jouez avec Google Spread Sheet avec Python (OAuth)
Archivez et compressez tout le répertoire avec python
Jouez à YouTube en Python
Calculer la différence entre Pose et Transform avec ROS en Python
Hit API de Mastodon en Python
Programmation avec Python et Tkinter
Un script qui compte jusqu'à 5 secondes et s'arrête dans le Python de Blender
Veriloggen et cocotb sont utilisés pour concevoir et tester Verilog en Python uniquement.
Chiffrement et déchiffrement avec Python
Nombre de mots avec Apache Spark et python (Mac OS X)
Grattage au sélénium en Python
Python et matériel - Utilisation de RS232C avec Python -
Exploitez LibreOffice avec Python
Grattage avec chromedriver en python
Débogage avec pdb en Python
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Gérer les sons en Python
Grattage avec du sélénium en Python
Tweet avec image en Python
[Python] Jouez avec le Webhook de Discord.
[Homologie] Comptez le nombre de trous dans les données avec Python
[Jouons avec Python] Traitement d'image en monochrome et points
Combiné avec ordinal en Python
Pile et file d'attente en Python
python avec pyenv et venv
Unittest et CI en Python
Installez CaboCha dans l'environnement Ubuntu et appelez-le avec Python.
Jouez avec le mécanisme de mot de passe de GitHub Webhook et Python
Comment se connecter à AtCoder avec Python et soumettre automatiquement
Fonctionne avec Python et R
Comptez bien le nombre de caractères thaïlandais et arabes en Python
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Dessinez une illusion d'aquarelle avec détection des contours en Python3 et openCV3
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
Jetez quelque chose dans Kinesis avec python et assurez-vous qu'il est dans
Émission de jetons d'authentification Firebase en Python et validation de jetons avec Fast API
Jouez avec la modélisation statistique: quantifiez la force des équipes de la J-League avec Stan et Python
Communiquez avec FX-5204PS avec Python et PyUSB
Reconnaissance des nombres dans les images avec Python
Paquets qui gèrent le MIDI avec Python midi et pretty_midi
Robot fonctionnant avec Arduino et python
Tester avec des nombres aléatoires en Python
Installez Python 2.7.9 et Python 3.4.x avec pip.
Réseau neuronal avec OpenCV 3 et Python 3
Modulation et démodulation AM avec python
Différence entre == et est en python
Scraping avec Node, Ruby et Python
Afficher les photos en Python et html
GOTO en Python avec Sublime Text 3
Algorithme de tri et implémentation en Python
Scraping avec Selenium en Python (Basic)
Analyse CSS avec cssutils en Python
Grattage avec Python, Selenium et Chromedriver