From a70a3b17d4259f106b53e4bd3e7f21dbed0ccd3d Mon Sep 17 00:00:00 2001 From: Matt Behrens Date: Mon, 22 Oct 2018 19:38:19 -0400 Subject: [PATCH] refactor, add debug prints --- fediplay/mastodon.py | 34 +++++++++++++++++++++++++--------- fediplay/queue.py | 4 +--- 2 files changed, 26 insertions(+), 12 deletions(-) diff --git a/fediplay/mastodon.py b/fediplay/mastodon.py index 356c223..505e326 100644 --- a/fediplay/mastodon.py +++ b/fediplay/mastodon.py @@ -1,5 +1,7 @@ '''Mastodon interface.''' +LISTEN_TO_HASHTAG = 'fediplay' + from os import umask import click @@ -13,8 +15,6 @@ from fediplay.queue import Queue Mastodon = mastodon.Mastodon -LISTEN_TO_HASHTAG = 'fediplay' - def api_base_url(instance): '''Create an API base url from an instance name.''' @@ -30,21 +30,26 @@ class StreamListener(mastodon.StreamListener): self.users = users if options['debug']: - print('listener initialized with users={}'.format(self.users)) + print('listener initialized with users={!r}'.format(self.users)) def on_update(self, status): if options['debug']: - print('status: {}'.format(repr(status))) - print('incoming toot: username={}'.format(status.account.acct)) + print('incoming status: acct={!r}'.format(status.account.acct)) if self.users and normalize_username(status.account.acct, self.instance) not in self.users: if options['debug']: - print('skipping toot due to username filtering') + print('skipping status due to username filtering') return tags = extract_tags(status) + if options['debug']: + print('expecting: {!r}, extracted tags: {!r}'.format(LISTEN_TO_HASHTAG, tags)) + if LISTEN_TO_HASHTAG in tags: links = extract_links(status) + if options['debug']: + print('links: {!r}'.format(links)) + for link in links: try: click.echo('==> Trying {}'.format(link)) @@ -84,9 +89,16 @@ def stream(instance, users, client_id, client_secret, access_token, cache_dir='. client = build_client(instance, client_id, client_secret, access_token) users = [normalize_username(user, instance) for user in users] listener = StreamListener(Queue(cache_dir), instance, users) + + existing_statuses = client.timeline_hashtag(LISTEN_TO_HASHTAG, limit=1) + + if options['debug']: + print('existing_statuses: {!r}'.format(existing_statuses)) + + for status in existing_statuses: + listener.on_update(status) + click.echo('==> Streaming from {}'.format(instance)) - for t in client.timeline_hashtag(LISTEN_TO_HASHTAG, limit=1): - listener.on_update(t) client.stream_user(listener) def extract_tags(toot): @@ -98,7 +110,7 @@ def normalize_username(user, instance): user = user.lstrip('@') parts = user.split('@') if options['debug']: - print('parts: {}'.format(repr(parts))) + print('parts: {!r}'.format(parts)) if len(parts) == 1 or parts[1] == instance: return parts[0] @@ -109,6 +121,10 @@ def link_is_internal(link): '''Determines if a link is internal to the Mastodon instance.''' classes = link.attrib.get('class', '').split(' ') + + if options['debug']: + print('href: {!r}, classes: {!r}'.format(link.attrib['href'], classes)) + if classes: return 'mention' in classes diff --git a/fediplay/queue.py b/fediplay/queue.py index 0417715..c855b78 100644 --- a/fediplay/queue.py +++ b/fediplay/queue.py @@ -64,9 +64,7 @@ class Getter(object): def _progress_hook(self, progress): if options['debug']: - print('progress hook: status {}, filename {}'.format( - repr(progress['status']), repr(progress['filename']) - )) + print('progress hook: status {!r}, filename {!r}'.format(progress['status'], progress['filename'])) if (progress['status'] in ('downloading', 'finished') and progress['filename'] not in self.filenames):