Introduction
Introduction Statistics Contact Development Disclaimer Help
Add 'upload' command for uploading media - toot - Unnamed repository; edit this…
Log
Files
Refs
LICENSE
---
commit fd08b3884a1d50957af9f087545ad60518acec2d
parent 5f85d0847e1cb1f6ab3cb4710ce4e166395fa7ab
Author: Ivan Habunek <[email protected]>
Date: Fri, 14 Apr 2017 16:41:09 +0200
Add 'upload' command for uploading media
Diffstat:
toot/__init__.py | 10 ++++++++--
toot/console.py | 45 +++++++++++++++++++++++++++----
2 files changed, 48 insertions(+), 7 deletions(-)
---
diff --git a/toot/__init__.py b/toot/__init__.py
@@ -19,11 +19,11 @@ def _get(app, user, url, params=None):
return response.json()
-def _post(app, user, url, data=None):
+def _post(app, user, url, data=None, files=None):
url = app.base_url + url
headers = {"Authorization": "Bearer " + user.access_token}
- response = requests.post(url, data, headers=headers)
+ response = requests.post(url, data, files=files, headers=headers)
response.raise_for_status()
return response.json()
@@ -76,3 +76,9 @@ def post_status(app, user, status):
def timeline_home(app, user):
return _get(app, user, '/api/v1/timelines/home')
+
+
+def upload_media(app, user, file):
+ return _post(app, user, '/api/v1/media', files={
+ 'file': file
+ })
diff --git a/toot/console.py b/toot/console.py
@@ -1,3 +1,5 @@
+from __future__ import print_function
+
import os
import sys
import logging
@@ -11,19 +13,27 @@ from textwrap import TextWrapper
from future.moves.itertools import zip_longest
from .config import save_user, load_user, load_app, save_app, CONFIG_APP_FILE,…
-from . import create_app, login, post_status, timeline_home, DEFAULT_INSTANCE
+from . import create_app, login, post_status, timeline_home, upload_media, DEF…
class ConsoleError(Exception):
pass
+def red(text):
+ return "\033[31m{}\033[0m".format(text)
+
+
def green(text):
- return "\033[92m{}\033[0m".format(text)
+ return "\033[32m{}\033[0m".format(text)
-def red(text):
- return "\033[91m{}\033[0m".format(text)
+def yellow(text):
+ return "\033[33m{}\033[0m".format(text)
+
+
+def print_error(text):
+ print(red(text), file=sys.stderr)
def create_app_interactive():
@@ -152,6 +162,28 @@ def cmd_logout(app, user):
print("You are now logged out")
+def cmd_upload(app, user):
+ if len(sys.argv) < 3:
+ print_error("No status text given")
+ return
+
+ path = sys.argv[2]
+
+ if not os.path.exists(path):
+ print_error("File does not exist: " + path)
+ return
+
+ with open(path, 'rb') as f:
+ print("Uploading {} ...".format(green(f.name)))
+ response = upload_media(app, user, f)
+
+ print("\nSuccessfully uploaded media ID {}, type '{}'".format(
+ yellow(response['id']), yellow(response['type'])))
+ print("Original URL: " + green(response['url']))
+ print("Preview URL: " + green(response['preview_url']))
+ print("Text URL: " + green(response['text_url']))
+
+
def run_command(command):
app = load_app()
user = load_user()
@@ -178,6 +210,9 @@ def run_command(command):
if command == 'timeline':
return cmd_timeline(app, user)
+ if command == 'upload':
+ return cmd_upload(app, user)
+
print(red("Unknown command '{}'\n".format(command)))
print_usage()
@@ -194,4 +229,4 @@ def main():
try:
run_command(command)
except ConsoleError as e:
- print(red(str(e)))
+ print_error(str(e))
You are viewing proxied material from vernunftzentrum.de. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.