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()
> 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
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")
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)
Es gibt 5 Zeitleisten
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)
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'
}
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
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