API-Erklärung zum Berühren von Mastodon aus Python

Update 2017/04/16 </ font>

Aktualisiert, weil ich wusste, wie man Mediendateien toot

Von Suzuryu als Kommentar Schreiben Sie Mastodon.py neu Es hängt von jeder Umgebung ab \Python27\Lib\site-packages\mastodon

Mastodon.py


    ###
    # Writing data: Media
    ###
    def media_post(self, media_file, mime_type = None):
        """
        Post an image. media_file can either be image data or
        a file name. If image data is passed directly, the mime
        type has to be specified manually, otherwise, it is
        determined from the file name.

        Throws a MastodonIllegalArgumentError if the mime type of the
        passed data or file can not be determined properly.

        Returns a media dict. This contains the id that can be used in
        status_post to attach the media file to a toot.
        """
        if os.path.isfile(media_file) and mime_type == None:
            mime_type = mimetypes.guess_type(media_file)[0]
            media_file = open(media_file, 'rb')

        if mime_type == None:
            raise MastodonIllegalArgumentError('Could not determine mime type or data passed directly without mime type.')

        random_suffix = ''.join(random.choice(string.ascii_uppercase + string.digits) for _ in range(10))
        file_name = "mastodonpyupload_" + str(time.time()) + "_" + str(random_suffix) + mimetypes.guess_extension(mime_type)

        media_file_description = (file_name, media_file, mime_type)

        #Schreiben Sie unten um
        #return self.__api_request('POST', '/api/v1/media', files = {'file': media_file_description}) #Alt
        return self.__api_request("POST", "/api/v1/media", files = {"file" : (file_name, open(media_file, "rb"))}) #Neu

Und Sie können die Mediendatei mit dem folgenden Code tooten!

# -*- coding: utf-8 -*-
from mastodon import *

import warnings
warnings.simplefilter("ignore", UnicodeWarning)

def login():
    mastodon = Mastodon(
        client_id="my_clientcred_pawoo.txt",
        access_token="my_usercred_pawoo.txt",
        api_base_url="https://pawoo.net"
    )
    return mastodon

def main():
    mastodon = login()
    media_files = [mastodon.media_post(media, "image/jpeg") for media in ["test.jpg "]]
    mastodon.status_post(status="test", media_ids=media_files)

if __name__ == '__main__':
    main()

Umgebung

  • Windows
  • Python2.7

Vorbereitung

Installation

Download von hier

> pip install Mastodon.py
Collecting Mastodon.py
  Downloading Mastodon.py-1.0.6-py2.py3-none-any.whl
Collecting dateutils (from Mastodon.py)
  Downloading dateutils-0.6.6.tar.gz
Requirement already satisfied: requests in c:\python27\lib\site-packages (from Mastodon.py)
Collecting argparse (from dateutils->Mastodon.py)
  Downloading argparse-1.4.0-py2.py3-none-any.whl
Requirement already satisfied: python-dateutil in c:\python27\lib\site-packages (from dateutils->Mastodon.py)
Requirement already satisfied: pytz in c:\python27\lib\site-packages (from dateutils->Mastodon.py)
Requirement already satisfied: six>=1.5 in c:\python27\lib\site-packages (from python-dateutil->dateutils->Mastodon.py)
Building wheels for collected packages: dateutils
  Running setup.py bdist_wheel for dateutils ... done
  Stored in directory: C:\Users\Shirokuma\AppData\Local\pip\Cache\wheels\61\60\af\2081d0cb3cfaebaab704b6012d5b1a3bdba9e0c4be33ff7e65
Successfully built dateutils
Installing collected packages: argparse, dateutils, Mastodon.py
Successfully installed Mastodon.py-1.0.6 argparse-1.4.0 dateutils-0.6.6

Anmeldung

Ich werde es nur einmal tun, also werde ich es von der Konsole aus tun Registrieren Sie sich diesmal bei einer Instanz von pawoo.net.

> python
>> from mastodon import Mastodon
>> Mastodon.create_app("client name", api_base_url = "https://pawoo.net", to_file = "my_clientcred_pawoo.txt")
>> mastodon = Mastodon(client_id="my_clientcred_pawoo.txt",api_base_url = "https://pawoo.net")
>> mastodon.log_in("mail address", "passwd",to_file = "my_usercred_pawoo.txt")

API-Erklärung

Toot Beziehung

Tweet auf Twitter

from mastodon import *

def login():
    mastodon = Mastodon(
        client_id="my_clientcred_pawoo.txt",
        access_token="my_usercred_pawoo.txt",
        api_base_url = "https://pawoo.net"
    )
    return mastodon

def main():
    mastodon = login()
    #Blasen
    mastodon.toot("Hello World Toot by Python!")

    #Beim Tooten von Mediendateien
    #Ich konnte aus irgendeinem Grund nicht gut tuten(´;ω;`)
    mastodon.media_post("test.jpg ", mime_type="image/jpeg")

    #Sie können mit detaillierten Einstellungen (für Rippen usw.) toot.
    mastodon.status_post(u"Verdammte Lippe", in_reply_to_id=None, media_ids=None, sensitive=False, visibility='', spoiler_text=None)

if __name__ == '__main__':
    main()
    

Andere...

#Gibt Informationen über den Benutzer eines bestimmten Toots zurück
status(id)

#Gibt eine Erklärung oder Antwort auf einen bestimmten Toot zurück
status_context(id)

#Bestimmte Toots entfernen (Boost?)? Bestätigung erforderlich
status_delete(id)

#Favorit einen bestimmten Toot
status_favourite(id)

#Gibt eine Liste von Benutzern zurück, die einen bestimmten Toot mögen
status_favourited_by(id)

#Einen bestimmten Toot steigern? Bestätigung erforderlich
status_reblog(id)

#Gibt eine Liste der Benutzer zurück, die einen bestimmten Toot verstärkt haben
status_reblogged_by(id)

#Ungünstig für einen bestimmten Toot
status_unfavourite(id)

#Bestimmte Toots aufladen
status_unreblog(id)

Zeitleiste bezogen

Es gibt 5 Zeitleisten

  • home
  • local
  • public
  • hashtag
  • mentions
timeline(timeline="", max_id=None, since_id=None, limit=None)
#timeline=""Home ist das Standard- und andere lokale, öffentliche Tag/Hashtag und Erwähnungen können angegeben werden

#Wenn es ein Aufwand ist, dies anzugeben
#home
timeline_home(max_id=None, since_id=None, limit=None)
#local
timeline_local(max_id=None, since_id=None, limit=None)
#public
timeline_publicl(max_id=None, since_id=None, limit=None)
#hashtag
timeline_hashtag(hashtag, max_id=None, since_id=None, limit=None)
#mentaions
timeline_mentaions(max_id=None, since_id=None, limit=None)

Inhalt der Zeitleiste

Da die Zeitleiste ein Listentyp ist, werfen Sie einen Blick hinein

tl = mastodon.timeline_local(limit=1)
for row in tl:
    print row

Inhalt (Beispiel) Wenn Sie sich den Schlüssel ansehen, können Sie sehen, was er ist.


timeline_dict = {
    'account' : {
        'username': 'test',
        'display_name': 'hello',
        'statuses_count': 114,
        'following_count': 514,
        'url': 'https://pawoo.net/@test',
        'locked': False,
        'created_at': '2017-04-15T17:41:30.053Z',
        'avatar_static': 'https://img.pawoo.net/accounts/avatars/***.jpg?****',
        'note': 'test',
        'header': '/headers/original/missing.png', 
        'followers_count': 3, 
        'avatar': 'https://img.pawoo.net/accounts/avatars/***.jpg?****', 
        'header_static': '/headers/original/missing.png', 
        'acct': 'test',
        'id': 114514
    }
    'reblogged' : None,
    'favourites_count' : 0,
    'media_attachments' : [],
    'in_reply_to_id', None,
    'application' : {u'website': None, u'name': u'Web'},
    'reblog' : None,
    'in_reply_to_account_id' : None,
    'tags', None,
    'uri', "tag:pawoo.net,2017-04-15:objectId=114514:objectType=Status",
    'visibility' : 'public',
    'id' : 114514,
    'content' : 'hogehoge',
    'sensitive' : False,
    'favourited' : None,
    'mentions' : [],
    'reblogs_count' : 0,
    'spoiler_text': ,
    'created_at' : '2017-04-15T18:21:15.197Z'
}

Kontobeziehung

account(id)

Anschließend gibt der Schlüssel timeline_dict den Inhalt des Kontos zurück Andere...


#So blockieren Sie einen bestimmten Benutzer
account_block(id)

#Wenn Sie einem bestimmten Benutzer folgen
account_follow(id)

#Gibt eine Liste von Followern für einen bestimmten Benutzer zurück
account_followers(id)

#Gibt eine Liste der Benutzer zurück, denen ein bestimmter Benutzer folgt
account_following(id)

#Stummschalten eines bestimmten Benutzers
account_mute(id)

#Gibt zurück, ob ein bestimmter Benutzer folgt usw.
account_relationships(id)
#Beispiel
[{u'requested': False, u'muting': False, u'followed_by': False, u'blocking': False, u'following': False, u'id': id}]

#@Suchen Sie nach dem Benutzer mit dem Namen und geben Sie das entsprechende Ergebnis in der Liste zurück
account_search(q, limit=None)

#Gibt eine Liste der Aussagen eines bestimmten Benutzers zurück
account_statuses(id, max_id=None, since_id=None, limit=None)

#Entsperren Sie einen bestimmten Benutzer
account_unblock(id)

#Folgen Sie einem bestimmten Benutzer nicht mehr
account_unfollow(id)

#Heben Sie die Stummschaltung eines bestimmten Benutzers auf
account_unmute(id)

#Gibt authentifizierte Benutzerinformationen zurück
account_verify_credentials()

#Gibt eine Liste blockierter Benutzer als Liste zurück
blocks()

#Gibt eine Liste der Favoriten als Liste zurück
favourites()

#Gibt eine Liste der Folgeanforderungen als Liste zurück
follow_requests(id, max_id=None, since_id=None, limit=None)

#Ablehnungsanfragen für bestimmte Benutzer ablehnen
follow_request_reject(id)

#Genehmigen Sie Folgeanfragen für bestimmte Benutzer
follow_request_authorize(id)

#Gibt eine Liste stummgeschalteter Benutzer als Liste zurück
mutes()

#Geben Sie eine Liste mit Benachrichtigungen als Liste zurück (Toots folgender Benutzer usw.).
notifications()

Das sind alle Funktionen

Laden Sie Bilder mit sensiblen True herunter

Es ist ein Bonus Seit ich ein Konto bei pawoo Saba erstellt habe, ist der Code zum Herunterladen eines Chome Chome-Bildes in einem gesetzlosen Bereich


# -*- coding: utf-8 -*-
from mastodon import *
import urllib2

#Unicode-Warnung zum Schweigen bringen
import warnings
warnings.simplefilter("ignore", UnicodeWarning)

#Anmeldung
def login():
    mastodon = Mastodon(
        client_id="my_clientcred_pawoo.txt",
        access_token="my_usercred_pawoo.txt",
        api_base_url="https://pawoo.net"
    )
    return mastodon

#herunterladen
def download(url, save_path):
    def get_file_name(url):
        return url.split("/")[-1]

    req = urllib2.Request(url)
    req.add_header("User-agent", "Mozilla/4.0 (compatible; MSIE 5.5; Windows NT)")
    source = urllib2.urlopen(url).read()
    with open(save_path + "/" + get_file_name(url), 'wb') as file:
        file.write(source)

def main():
    #Einloggen
    mastodon = login()
    
    #Holen Sie sich die lokale Zeitleiste
    tl = mastodon.timeline_local()
    for row in tl:
        #Nur herunterladen, wenn eine Mediendatei vorhanden ist und vertraulich True ist
        if len(row["media_attachments"]) != 0 and row["sensitive"] == True:
            url = row["media_attachments"][0]["url"].split("?")[0]
            print row["account"]["username"], "is uploaded picture"
            download(url, "dl")
if __name__ == '__main__':
    main()
    

Recommended Posts

API-Erklärung zum Berühren von Mastodon aus Python
Stellen Sie von Python aus eine Verbindung zur Websocket-API von coincheck her
So erhalten Sie mithilfe der Mastodon-API Follower und Follower von Python
Berühren Sie MySQL in Python 3
Änderungen von Python 3.0 zu Python 3.5
Änderungen von Python 2 zu Python 3.0
Post von Python nach Slack
Flirte von PHP nach Python
PUSH-Benachrichtigung von Python an Android mithilfe der Google-API
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
Verwenden Sie die e-Stat-API von Python
Bis Toot zu Mastodon (Python)
Ich habe versucht, API list.csv mit Python aus swagger.yaml zu erstellen
Rufen Sie Matlab von Python zur Optimierung auf
Berühren Sie Python-Objekte in Elixir
Ich habe versucht, Python zu berühren (Installation)
Post von Python auf Facebook Timeline
[Lambda] [Python] Von Lambda auf Twitter posten!
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
Verwenden Sie die kabu Station® API von Python
Poste ein Bild von Python auf Tumblr
Ich habe Teslas API berührt
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
Python, um von einer anderen Sprache zu wechseln
[Python] Verwendung der Typetalk-API
Verwenden Sie die Google Analytics-API von Python
[Python] API zum Senden von Google Mail erstellen
Behandeln Sie die SOAP-API von Python (Zeep)
Hat sich nicht von Python 2 auf 3 geändert
Aktualisieren Sie Mac Python von 2 auf 3
Stellen Sie eine Anfrage von der Gerätefarm (Appium Python) an das API-Gateway
Lassen Sie uns vorerst Googles Vision API von Python berühren
Sammeln von Informationen von Twitter mit Python (Twitter API)
[Python] Webanwendung von 0! Hands-on (3) -API-Implementierung-
[Python] Fluidsimulation: Von linear zu nichtlinear
Von Python bis zur Verwendung von MeCab (und CaboCha)
So aktualisieren Sie Google Sheets von Python
Privates Python-Handbuch (von Zeit zu Zeit aktualisiert)
[Python] Verwendung von __command__, Funktionserklärung
Ich möchte ein Glas aus Python verwenden
Konvertieren Sie von Katakana zu Vokal Kana [Python]
Push-Benachrichtigung vom Python-Server an Android
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Ich habe versucht, die UnityCloudBuild-API von Python zu verwenden
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Zugriff auf RDS von Lambda (Python)
Ich habe versucht, die COTOHA-API zu berühren
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
Ich habe versucht, Python zu berühren (grundlegende Syntax)
In Python von Markdown in HTML konvertieren
[Amazon Linux] Wechsel von der Python 2-Serie zur Python 3-Serie
Senden Sie eine Nachricht von Slack an einen Python-Server
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
So öffnen Sie einen Webbrowser über Python