mirror of
https://github.com/nikdoof/flexget-twitter.git
synced 2025-12-13 07:32:15 +00:00
Imported plugin files
This commit is contained in:
38
cli_twitter.py
Normal file
38
cli_twitter.py
Normal file
@@ -0,0 +1,38 @@
|
||||
from flexget.plugin import register_plugin, register_parser_option, DependencyError, PluginError
|
||||
|
||||
class TwitterAuth(object):
|
||||
"""Provides --twitter-auth"""
|
||||
def on_process_start(self, task):
|
||||
if task.manager.options.twitter_auth:
|
||||
task.manager.disable_tasks()
|
||||
self.twitter_auth()
|
||||
|
||||
def twitter_auth(self):
|
||||
try:
|
||||
import tweepy
|
||||
except:
|
||||
raise PluginError
|
||||
|
||||
print "Please input your Consumer key/secret, if you do not have one register for one on http://dev.twitter.com/"
|
||||
print ""
|
||||
consumer_key = raw_input('Consumer Key: ').strip()
|
||||
consumer_secret = raw_input('Consumer Secret: ').strip()
|
||||
print "Attepting to authenticate..."
|
||||
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
|
||||
auth_url = auth.get_authorization_url()
|
||||
|
||||
print "Please open the following URL in a browser and autheticate Flexget to use the Twitter account you wish to output to:"
|
||||
print auth_url
|
||||
print "Once completed, please provide the PIN code that Twitter returned"
|
||||
verifier = raw_input('PIN: ').strip()
|
||||
auth.get_access_token(verifier)
|
||||
print "Please add the following to your config.yml, either under your tasks or global as required"
|
||||
print ""
|
||||
print "twitter:"
|
||||
print " consumerkey: %s" % consumer_key
|
||||
print " consumersecret: %s" % consumer_secret
|
||||
print " accesskey: %s" % auth.access_token.key
|
||||
print " accesssecret: %s" % auth.access_token.secret
|
||||
|
||||
register_plugin(TwitterAuth, '--twitter-auth', builtin=True)
|
||||
register_parser_option('--twitter-auth', nargs='?', const=True, help='Authenticate with Twitter.')
|
||||
84
output_twitter.py
Normal file
84
output_twitter.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import sys, logging
|
||||
from flexget.utils.tools import MergeException, merge_dict_from_to
|
||||
from flexget.plugin import PluginError, register_plugin
|
||||
from flexget import manager
|
||||
from flexget.event import event
|
||||
from flexget.utils.template import render_from_task, get_template, RenderError
|
||||
from flexget import validator
|
||||
|
||||
log = logging.getLogger('twitter')
|
||||
|
||||
def options_validator():
|
||||
twitter = validator.factory('dict')
|
||||
twitter.accept('boolean', key='active')
|
||||
twitter.accept('text', key='template')
|
||||
twitter.accept('text', key='consumerkey', required=True)
|
||||
twitter.accept('text', key='consumersecret', required=True)
|
||||
twitter.accept('text', key='accesskey', required=True)
|
||||
twitter.accept('text', key='accesssecret', required=True)
|
||||
return twitter
|
||||
|
||||
|
||||
def prepare_config(config):
|
||||
config.setdefault('active', True)
|
||||
config.setdefault('template', "Flexget: {{ title }} accepted")
|
||||
return config
|
||||
|
||||
@event('manager.execute.started')
|
||||
def setup(manager):
|
||||
if not 'twitter' in manager.config:
|
||||
return
|
||||
|
||||
try:
|
||||
import tweepy
|
||||
except ImportError:
|
||||
raise PluginError('The Twtter plugin requires the tweepy module to be installed, please install it before using.')
|
||||
|
||||
config = prepare_config(manager.config['twitter'])
|
||||
config['global'] = True
|
||||
global task_content
|
||||
task_content = {}
|
||||
print config
|
||||
for task in manager.tasks.itervalues():
|
||||
task.config.setdefault('twitter', {})
|
||||
try:
|
||||
merge_dict_from_to(config, task.config['twitter'])
|
||||
except MergeException, exc:
|
||||
raise PluginError('Failed to merge twitter config to task %s due to %s' % (task.name, exc))
|
||||
task.config.setdefault('twitter', config)
|
||||
|
||||
|
||||
class OutputTwitter(object):
|
||||
def validator(self):
|
||||
v = options_validator()
|
||||
v.accept('boolean', key='global')
|
||||
return v
|
||||
|
||||
def on_task_output(self, task, config):
|
||||
|
||||
config = prepare_config(config)
|
||||
|
||||
# Initialize twitter client
|
||||
import tweepy
|
||||
auth = tweepy.OAuthHandler(config['consumerkey'], config['consumersecret'])
|
||||
auth.set_access_token(config['accesskey'], config['accesssecret'])
|
||||
api = tweepy.API(auth)
|
||||
|
||||
for entry in task.accepted:
|
||||
|
||||
try:
|
||||
content = entry.render(config['template'])
|
||||
except RenderError, e:
|
||||
log.error('Error rendering message: %s' % e)
|
||||
return
|
||||
|
||||
if task.manager.options.test:
|
||||
log.info('Would update twitter with: %s' % content)
|
||||
continue
|
||||
try:
|
||||
api.update_status(content)
|
||||
except Exception, e:
|
||||
log.warning('Unable to post tweet: %s' % e)
|
||||
|
||||
register_plugin(OutputTwitter, 'twitter', api_ver=2)
|
||||
manager.register_config_key('twitter', options_validator)
|
||||
Reference in New Issue
Block a user