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.
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.
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.
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.
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.
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.
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')
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.
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