{"id":15163492,"url":"https://github.com/calmery/pawopy","last_synced_at":"2025-09-30T18:32:13.047Z","repository":{"id":57451148,"uuid":"89011718","full_name":"calmery/Pawopy","owner":"calmery","description":"A Python wrapper for the Mastodon API like tweepy","archived":true,"fork":false,"pushed_at":"2017-05-11T08:01:11.000Z","size":34,"stargazers_count":6,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-05-23T04:02:49.757Z","etag":null,"topics":["mastodon","mastodon-api","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/calmery.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2017-04-21T18:17:42.000Z","updated_at":"2023-01-28T17:11:06.000Z","dependencies_parsed_at":"2022-09-13T03:10:53.250Z","dependency_job_id":null,"html_url":"https://github.com/calmery/Pawopy","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calmery%2FPawopy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calmery%2FPawopy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calmery%2FPawopy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/calmery%2FPawopy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/calmery","download_url":"https://codeload.github.com/calmery/Pawopy/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":234767143,"owners_count":18883388,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["mastodon","mastodon-api","python"],"created_at":"2024-09-27T02:43:00.707Z","updated_at":"2025-09-30T18:32:07.802Z","avatar_url":"https://github.com/calmery.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Pawopy\nA Python wrapper for the Mastodon API like tweepy\n\n### Installation\n```\n$ pip install pawopy\n```\n```python\nimport pawopy\n\nauth = pawopy.OAuthHandler( 'https://pawoo.net' )\nauth.set_access_token( access_token )\n\napi = pawopy.API( auth )\napi.update_status( 'Hello World !' )\n```\n### Authorization\n```python\nimport pawopy\n\nauth = pawopy.OAuthHandler( 'https://pawoo.net' )\nurl = auth.get_authorization_url()\n\ncode = input( url + '\\n\u003e ' )\n\naccess_token = auth.get_access_token( code )\n\napi = pawopy.API( auth )\n```\n```python\nimport pawopy\n\nauth = pawopy.PasswordAuthHandler( 'https://pawoo.net' )\naccess_token = auth.get_access_token( user_name, password )\n\napi = pawopy.API( auth )\n```\n### Methods\n```python\napi.get( path [, params] )\napi.post( path [, params] )\napi.delete( path [, params] )\n\n# Example\n\napi.get( 'timelines/home' )\n```\nIt mayn't work because it hasn't done enough test...\n```python\n# Timeline\n\napi.home_timeline()\napi.public_timeline()\n\n# User\n\napi.me()\napi.favorites()\n\napi.get_user( user_id )\n\napi.following( [user_id] )\napi.followers( [user_id] )\n\n# Relationship\n\napi.create_friendship( user_id )\napi.destroy_friendship( user_id )\n\napi.blocks()\napi.create_block( user_id )\napi.destroy_block( user_id )\n\napi.mutes()\napi.create_mute( user_id )\napi.destroy_mute( user_id )\n\napi.show_relationship( user_id )\n\napi.follow_requests()\napi.authorize( user_id )\napi.reject( user_id )\n\n# Notification\n\napi.notifications()\napi.get_notification( notification_id )\napi.clear_notifications()\n\n# Toot\n\napi.update_status( text )\napi.update_status_advanced( params )\n'''\nparams {\n  status\n  in_reply_to_id (optional)\n  media_ids (optional)\n  sensitive (optional)\n  spoiler_text (optional)\n  visibility\n}\n'''\napi.destroy_status( toot_id )\n\napi.reblog( toot_id )\napi.unreblog( toot_id )\n\napi.create_favorite( toot_id )\napi.destroy_favorite( toot_id )\n\napi.get_status( toot_id )\napi.get_status_reblogged_by( toot_id )\napi.get_status_favorited_by( toot_id )\n\n# Search\n\napi.search( params )\n'''\nparams {\n  q\n}\n'''\napi.search_user( params )\n'''\nparams {\n  q\n  limit\n}\n'''\n```\n### Streaming\n```python\nfrom pawopy import OAuthHandler, Stream, StreamListener\n\nauth = pawopy.OAuthHandler( 'https://pawoo.net' )\nauth.set_access_token( access_token )\n\napi = pawopy.API( auth )\n\nclass PawopyListener( StreamListener ) :\n  def on_update( self, toot ) :\n    print( toot.content )\n\n  def on_notification( self, _ ) :\n    pass\n\n  def on_delete( self, _ ) :\n    pass\n\nstream = Stream( auth=api, listener=PawopyListener() )\nstream.user_stream()\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalmery%2Fpawopy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcalmery%2Fpawopy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcalmery%2Fpawopy/lists"}