So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python

Einführung

Ich werde vorstellen, wie die API verwendet wird, die ich bei der Entwicklung des Management-Tools "MASTMAN" von Mastdon fehlerhaft gemacht habe.

Docs Die Verwendung der API fühlt sich wie folgt relativ einfach an (es hätte sein sollen ...)

GET /api/v1/accounts/:id/followers

Query parameters: max_id : Get a list of followers with ID less than this value since_id : Get a list of followers with ID greater than this value limit : Maximum number of followers to get (Default 40, Max 80)

Referenz: Follower eines Kontos abrufen

Anzahl meiner Anhänger

da7e85c5357d395b78c6a383b770be3b.png

41 Fälle!

Holen Sie sich schlechte Anhänger

Der folgende Code erhält die ersten 10 Follower-IDs, erhält die kleinste ID und nimmt dann die 10 kleineren IDs und wiederholt sie.


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
import urllib
import json
import re

access_token = 'xxxxx'

def get_followers(user_id, max_id=None):
    #Das Standardlimit ist 40, diesmal jedoch 10, da Fehlerfälle leicht zu erkennen sind!
    limit_num = 10
    url = "https://mstdn.jp/api/v1/accounts/%d/followers" %(user_id)

    param = []
    param.append(('limit', limit_num))
    if max_id:
        param.append(('max_id', max_id))
    url += "?" + urllib.urlencode( param )

    request = urllib2.Request(url)
    auth_header = 'Bearer %s' %(access_token)
    request.add_header('Authorization', auth_header)
    res = urllib2.urlopen(request)
    res_list = json.loads(res.read())

    #Das Ergebnis ist limit_num(Wenn es diesmal 10 Fälle sind, holen Sie sich die nächsten 10 Fälle...
    if len(res_list) == limit_num:
        next_max_id = min(map(lambda x: x.get('id'), res_list))
        res_list.extend(get_followers(user_id, max_id=next_max_id))
    return res_list

def main():
    #toitech ID
    my_user_id = 96368
    res = get_followers(my_user_id)
    #Anzahl der resultierenden Elemente
    print len(res)
    #Anzahl der eindeutigen IDs im Ergebnis
    print len(set(map(lambda x: x.get('id'), res)))


if __name__ == '__main__':
    main()

Wenn ich das mache, bekomme ich nur 10! !! !!

$ python get_follower.py
10
10

Holen Sie sich die richtigen Anhänger

Wenn Sie sich Docs noch einmal ansehen, sehen Sie den folgenden Hinweis ...

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Es scheint anders zu sein, die ID des zurückgegebenen Ergebnisses als Since_ID oder Max_ID anzugeben. Schauen Sie sich die Kopfzeile an.


#!/usr/bin/env python
# -*- coding: utf-8 -*-

import urllib2
import urllib
import json
import re

access_token = 'xxxxx'

def get_followers(user_id, max_id=None):
    #Das Standardlimit ist 40, diesmal jedoch 10, da Fehlerfälle leicht zu erkennen sind!
    limit_num = 10
    url = "https://mstdn.jp/api/v1/accounts/%d/followers" %(user_id)

    param = []
    param.append(('limit', limit_num))
    if max_id:
        param.append(('max_id', max_id))
    url += "?" + urllib.urlencode( param )

    request = urllib2.Request(url)
    auth_header = 'Bearer %s' %(access_token)
    request.add_header('Authorization', auth_header)
    res = urllib2.urlopen(request)
    res_list = json.loads(res.read())

    #Das Ergebnis ist limit_num(Wenn es diesmal 10 Fälle sind, holen Sie sich die nächsten 10 Fälle...
    if len(res_list) == limit_num:
        link_str = res.info().getheaders("link")[0]
        next_max_id = re.search("max_id=(\d+)>", link_str).group(1)
        res_list.extend(get_followers(user_id, max_id=next_max_id))
    return res_list


def main():
    #toitech ID
    my_user_id = 96368
    res = get_followers(my_user_id)
    #Anzahl der resultierenden Elemente
    print len(res)
    #Anzahl der eindeutigen IDs im Ergebnis
    print len(set(map(lambda x: x.get('id'), res)))


if __name__ == '__main__':
    main()

Wenn ich das mache ... ist es 41! Ich bin glücklich.

$ python get_follower.py
41
41

Zusammenfassung

Lesen Sie das Dokument auch dann richtig, wenn Sie beschäftigt sind

Guter Grund

Sie können den folgenden Status (toot) auf die gleiche Weise erhalten wie den ersteren (schlechte Follower bekommen)! Je neuer der Toot, desto höher die Toot-ID, aber die Follower sind nicht immer so groß wie die Leute, denen kürzlich gefolgt wurde. Das ist wahrscheinlich der Fall.


GET /api/v1/accounts/:id/statuses

Werbung

Mastdons Management-Tool "MASTMAN" befindet sich in der Entwicklung und jeder sollte es versuchen!

Recommended Posts

So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
So erhalten Sie die Python-Version
Von Python bis zur Verwendung von MeCab (und CaboCha)
API-Erklärung zum Berühren von Mastodon aus Python
[Python] So erhalten Sie den ersten und den letzten Tag des Monats
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
So erhalten Sie Artikeldaten mithilfe der Qiita-API
So erhalten Sie die Dateien im Ordner [Python]
[Python Kivy] So erhalten Sie den Dateipfad durch Ziehen und Ablegen
So ermitteln Sie mit Python den Unterschied zwischen Datum und Uhrzeit in Sekunden
So erhalten Sie den Wert aus dem Parameterspeicher in Lambda (mit Python)
Codebeispiel zum Abrufen von oauth_token und oauth_token_secret der Twitter-API in Python 2.7
So erhalten Sie mithilfe der API von Virus Total einen Beispielbericht aus einem Hashwert
Erhalten Sie Nachrichten von jedem der drei großen Mobilfunkunternehmen mithilfe von Django und der Nachrichten-API
[Rails] So erhalten Sie Standortinformationen mithilfe der Geolocation-API
So starten Sie das Python-Projekt im Jahr 2020 (Windows WSL und Mac Common)
So erhalten Sie den Variablennamen selbst in Python
So ermitteln Sie die Anzahl der Stellen in Python
[Python] Ruft den Gesetzestext aus der e-GOV-Gesetz-API ab
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
Senden und empfangen Sie Google Mail über die Google Mail-API mit Python
[Einführung in Python] Wie stoppe ich die Schleife mit break?
So veröffentlichen Sie ein Ticket über die Shogun-API
Holen Sie sich Dateien von Linux mit paramiko und scp [Python]
[Für Anfänger] Anzeigen von Karten und Suchfeldern mithilfe der GoogleMap Javascript-API
Eine Geschichte über einen Python-Anfänger, der versucht, Google-Suchergebnisse mithilfe der API abzurufen
Übergeben Sie ein Array von PHP an PYTHON und führen Sie eine Numpy-Verarbeitung durch, um das Ergebnis zu erhalten
Holen Sie sich Ihre Herzfrequenz von der Fitbit-API in Python!
Herstellen einer Verbindung zu verschiedenen DBs über Python (PEP 249) und SQL Alchemy
So erhalten Sie den letzten (letzten) Wert in einer Liste in Python
So erhalten Sie alle Schlüssel und Werte im Wörterbuch
Prognostizieren Sie das Geschlecht anhand des Namens mithilfe der Gender-API und von Pykakasi in Python
So gelangen Sie mit Vagrant in die Python-Entwicklungsumgebung
So erhalten Sie die Temperatur vom SwitchBot-Thermo-Hygrometer mit Himbeer-Pi
Ich habe versucht, verschiedene Informationen von der Codeforces-API abzurufen
Holen Sie sich das Wetter mit API und lassen Sie Raspberry Pi sprechen!
[Einführung in Python] So erhalten Sie Daten mit der Funktion listdir
So installieren Sie Python mit Anaconda
Erste Schritte mit Python
Verwendung der Python-API von OpenPose
Verwenden Sie die Flickr-API von Python
Python Holen Sie sich das kommende Wetter von der Wetter-API
So greifen Sie über Python auf Wikipedia zu
Führen Sie Ansible über Python mithilfe der API aus
[Python] Verwendung der Typetalk-API
[Python / Ruby] Mit Code verstehen Wie man Daten aus dem Internet abruft und in CSV schreibt
Wie man die Anzahl der GPUs aus Python kennt ~ Hinweise zur Verwendung von Multiprocessing mit pytorch ~
So erhalten Sie mit einer vielseitigen Methode nur die erforderlichen Daten aus der strukturierten Datengruppe
So erhalten Sie den NTP-Servernamen per DHCP und legen ihn fest
Bestehen und Studieren der Python 3 Engineer-Zertifizierungsgrundprüfung
python / pandas / dataframe / So erhalten Sie die einfachste Zeile / Spalte / Index / Spalte
So erhalten Sie eine Zeichenfolge aus einem Befehlszeilenargument in Python
[Python] So erhalten und ändern Sie Zeilen / Spalten / Werte aus einer Tabelle.
Klicken Sie in Python auf die New Relic-API, um den Status des Servers abzurufen
[EC2] So installieren und laden Sie chromedriver über die Befehlszeile herunter
Rufen Sie den Wert des Dropdown-Menüs mit Python und Selen ab und legen Sie ihn fest
[Python] Sprechen mit OpenJTalk und Talk API (bis zur Sprachausgabe)