Imported plugin files

This commit is contained in:
2012-10-07 18:49:59 +01:00
parent bc5b8d081e
commit 98062c478d
2 changed files with 122 additions and 0 deletions

84
output_twitter.py Normal file
View 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)