tumblr updates (see details); fixed initial "/" in /delete
- /delete also cancels queued or deletes published tumblr posts - tumblr blog name in config
This commit is contained in:
parent
6ad4eadd79
commit
949008cb05
1 changed files with 27 additions and 14 deletions
41
delojza.py
41
delojza.py
|
@ -40,7 +40,8 @@ def datestr(date):
|
||||||
|
|
||||||
|
|
||||||
class DelojzaBot:
|
class DelojzaBot:
|
||||||
def __init__(self, tg_api_key, out_dir, tmp_dir=None, acoustid_key=None, tumblr_keys=None, markov=None):
|
def __init__(self, tg_api_key, out_dir, tmp_dir=None,
|
||||||
|
acoustid_key=None, tumblr_name=None, tumblr_keys=None, markov=None):
|
||||||
self.logger = logging.getLogger("delojza")
|
self.logger = logging.getLogger("delojza")
|
||||||
|
|
||||||
self.out_dir = os.path.abspath(out_dir)
|
self.out_dir = os.path.abspath(out_dir)
|
||||||
|
@ -69,10 +70,11 @@ class DelojzaBot:
|
||||||
|
|
||||||
self.acoustid_key = acoustid_key
|
self.acoustid_key = acoustid_key
|
||||||
|
|
||||||
if tumblr_keys:
|
if tumblr_name and tumblr_keys:
|
||||||
self.client = pytumblr.TumblrRestClient(*tumblr_keys)
|
self.tumblr_name = tumblr_name
|
||||||
|
self.tumblr_client = pytumblr.TumblrRestClient(*tumblr_keys)
|
||||||
|
|
||||||
self.last_downloaded = []
|
self.last_downloaded = None
|
||||||
self.last_hashtags = None
|
self.last_hashtags = None
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
|
@ -263,20 +265,23 @@ class DelojzaBot:
|
||||||
audio = any([any([tag in hashtag for tag in ('AUDIO', 'RADIO')]) for hashtag in hashtags])
|
audio = any([any([tag in hashtag for tag in ('AUDIO', 'RADIO')]) for hashtag in hashtags])
|
||||||
if audio and download_fn != self.download_raw:
|
if audio and download_fn != self.download_raw:
|
||||||
reply += ' (And also guessing you want to extract the audio)'
|
reply += ' (And also guessing you want to extract the audio)'
|
||||||
|
|
||||||
message.reply_text(reply)
|
message.reply_text(reply)
|
||||||
|
|
||||||
filenames = download_fn(urls, out_path, message.date, message, audio=audio, filename=filename)
|
filenames = download_fn(urls, out_path, message.date, message, audio=audio, filename=filename)
|
||||||
if hashtags[0] == 'TUMBLR' and self.client:
|
tumblr_ids = []
|
||||||
|
|
||||||
|
if hashtags[0] == 'TUMBLR' and self.tumblr_client:
|
||||||
message.reply_text('(btw, queueing to tumblr)')
|
message.reply_text('(btw, queueing to tumblr)')
|
||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
self.client.create_photo('kunsaxan', state="queue", data=filename)
|
response = self.tumblr_client.create_photo(self.tumblr_name, state="queue", data=filename)
|
||||||
elif hashtags[0] == 'TUMBLR_NOW' and self.client:
|
tumblr_ids.append(response['id'])
|
||||||
|
elif hashtags[0] == 'TUMBLR_NOW' and self.tumblr_client:
|
||||||
message.reply_text('(btw, ***FIRING TO TUMBLR RIGHT AWAY***)',
|
message.reply_text('(btw, ***FIRING TO TUMBLR RIGHT AWAY***)',
|
||||||
parse_mode=telegram.ParseMode.MARKDOWN)
|
parse_mode=telegram.ParseMode.MARKDOWN)
|
||||||
for filename in filenames:
|
for filename in filenames:
|
||||||
self.client.create_photo('kunsaxan', state="published", data=filename)
|
response = self.tumblr_client.create_photo(self.tumblr_name, state="published", data=filename)
|
||||||
self.last_downloaded = filenames
|
tumblr_ids.append(response['id'])
|
||||||
|
self.last_downloaded = filenames, hashtags, tumblr_ids
|
||||||
return filenames
|
return filenames
|
||||||
except:
|
except:
|
||||||
_, exc_value, __ = sys.exc_info()
|
_, exc_value, __ = sys.exc_info()
|
||||||
|
@ -397,9 +402,10 @@ class DelojzaBot:
|
||||||
update.message.reply_text(tmp_reply)
|
update.message.reply_text(tmp_reply)
|
||||||
|
|
||||||
def tg_delete(self, _, update):
|
def tg_delete(self, _, update):
|
||||||
if len(self.last_downloaded) > 0:
|
if self.last_downloaded is not None:
|
||||||
for file in self.last_downloaded:
|
files, hashtags, tumblr_ids = self.last_downloaded
|
||||||
update.message.reply_text("Removing \"{}\"!".format(file[len(self.out_dir):]))
|
for file in files:
|
||||||
|
update.message.reply_text("Removing \"{}\"!".format(file[len(self.out_dir) + 1:]))
|
||||||
os.remove(file)
|
os.remove(file)
|
||||||
parent_dir = os.path.dirname(file)
|
parent_dir = os.path.dirname(file)
|
||||||
while True:
|
while True:
|
||||||
|
@ -410,7 +416,13 @@ class DelojzaBot:
|
||||||
parent_dir = os.path.dirname(parent_dir)
|
parent_dir = os.path.dirname(parent_dir)
|
||||||
if parent_dir == self.out_dir:
|
if parent_dir == self.out_dir:
|
||||||
break
|
break
|
||||||
self.last_downloaded.clear()
|
if len(tumblr_ids) > 0:
|
||||||
|
plural = "s (all {} of them)".format(len(tumblr_ids)) if len(tumblr_ids) > 1 else ""
|
||||||
|
update.message.reply_text("Also deleting tumblr post{}!".format(plural))
|
||||||
|
for tumblr_id in tumblr_ids:
|
||||||
|
if self.tumblr_client:
|
||||||
|
self.tumblr_client.delete_post(self.tumblr_name, tumblr_id)
|
||||||
|
self.last_downloaded = None
|
||||||
else:
|
else:
|
||||||
update.message.reply_text("Nothing to remove!")
|
update.message.reply_text("Nothing to remove!")
|
||||||
|
|
||||||
|
@ -486,6 +498,7 @@ if __name__ == '__main__':
|
||||||
config.get('delojza', 'OUT_DIR', fallback=os.path.join(_DIR_, "out")),
|
config.get('delojza', 'OUT_DIR', fallback=os.path.join(_DIR_, "out")),
|
||||||
tmp_dir=config.get('delojza', 'tmp_dir', fallback=tempfile.gettempdir()),
|
tmp_dir=config.get('delojza', 'tmp_dir', fallback=tempfile.gettempdir()),
|
||||||
acoustid_key=config.get('delojza', 'acoustid_api_key'),
|
acoustid_key=config.get('delojza', 'acoustid_api_key'),
|
||||||
|
tumblr_name=config.get('tumblr', 'blog_name'),
|
||||||
tumblr_keys=(config.get('tumblr', 'consumer_key'),
|
tumblr_keys=(config.get('tumblr', 'consumer_key'),
|
||||||
config.get('tumblr', 'consumer_secret'),
|
config.get('tumblr', 'consumer_secret'),
|
||||||
config.get('tumblr', 'oauth_key'),
|
config.get('tumblr', 'oauth_key'),
|
||||||
|
|
Loading…
Reference in a new issue