Introduction
Introduction Statistics Contact Development Disclaimer Help
Allow attaching media files to posts - toot - Unnamed repository; edit this fil…
Log
Files
Refs
LICENSE
---
commit 8285abb04e97ca6a2fa1b741c4a2cc38671f300c
parent c2625d536fd6fc7a8eba743a006fa42ddd7d99d7
Author: Ivan Habunek <[email protected]>
Date: Sat, 15 Apr 2017 12:00:05 +0200
Allow attaching media files to posts
fixes #1
Diffstat:
README.rst | 4 ++++
toot/__init__.py | 5 +++--
toot/console.py | 41 ++++++++++++++++++++++---------
3 files changed, 36 insertions(+), 14 deletions(-)
---
diff --git a/README.rst b/README.rst
@@ -69,3 +69,7 @@ To post a new status to your timeline:
.. code-block::
toot post "Hello world!"
+
+Optionally attach an image or video to the status:
+
+ toot post "Hello world!" --media=path/to/world.jpg
diff --git a/toot/__init__.py b/toot/__init__.py
@@ -94,9 +94,10 @@ def login(app, username, password):
return User(username, access_token)
-def post_status(app, user, status):
+def post_status(app, user, status, media_ids=None):
return _post(app, user, '/api/v1/statuses', {
- 'status': status
+ 'status': status,
+ 'media_ids[]': media_ids,
})
diff --git a/toot/console.py b/toot/console.py
@@ -7,10 +7,11 @@ import logging
from bs4 import BeautifulSoup
from builtins import input
from datetime import datetime
+from future.moves.itertools import zip_longest
from getpass import getpass
from itertools import chain
+from optparse import OptionParser
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, upload_media, DEF…
@@ -137,11 +138,24 @@ def cmd_timeline(app, user):
def cmd_post_status(app, user):
- if len(sys.argv) < 3:
- print(red("No status text given"))
- return
+ parser = OptionParser(usage="toot post [options] TEXT")
+
+ parser.add_option("-m", "--media", dest="media", type="string",
+ help="path to the media file to attach")
+
+ (options, args) = parser.parse_args()
+
+ if len(args) < 2:
+ parser.print_help()
+ raise ConsoleError("No text given")
+
+ if options.media:
+ media = do_upload(app, user, options.media)
+ media_ids = [media['id']]
+ else:
+ media_ids = None
- response = post_status(app, user, sys.argv[2])
+ response = post_status(app, user, args[1], media_ids=media_ids)
print("Toot posted: " + green(response.get('url')))
@@ -169,13 +183,7 @@ def cmd_upload(app, user):
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)
+ response = do_upload(path)
print("\nSuccessfully uploaded media ID {}, type '{}'".format(
yellow(response['id']), yellow(response['type'])))
@@ -184,6 +192,15 @@ def cmd_upload(app, user):
print("Text URL: " + green(response['text_url']))
+def do_upload(app, user, path):
+ if not os.path.exists(path):
+ raise ConsoleError("File does not exist: " + path)
+
+ with open(path, 'rb') as f:
+ print("Uploading media: {}".format(green(f.name)))
+ return upload_media(app, user, f)
+
+
def run_command(command):
app = load_app()
user = load_user()
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.