1
from datetime import datetime
2
from sqlalchemy import Column, String, Integer, DateTime, Unicode, desc
3
from flexget.manager import Base, Session
4
from flexget.plugin import register_parser_option, register_plugin
5
from optparse import SUPPRESS_HELP
6
from datetime import datetime
9
log = logging.getLogger('history')
14
__tablename__ = 'history'
16
id = Column(Integer, primary_key=True)
18
filename = Column(String)
20
title = Column(Unicode)
21
time = Column(DateTime)
22
details = Column(String)
25
self.time = datetime.now()
28
return '<History(filename=%s,feed=%s)>' % (self.filename, self.feed)
31
class PluginHistory(object):
37
def on_process_start(self, feed):
38
if feed.manager.options.history:
39
feed.manager.disable_feeds()
41
print '-- History: ' + '-' * 67
42
for item in reversed(session.query(History).order_by(desc(History.time)).limit(50).all()):
43
print ' Feed : %s' % item.feed
44
print ' Title : %s' % item.title.encode('utf-8')
45
print ' Url : %s' % item.url
47
print ' Stored : %s' % item.filename
48
print ' Time : %s' % item.time.strftime("%c")
49
print ' Details : %s' % item.details
53
def on_feed_exit(self, feed):
54
"""Add accepted entries to history"""
56
for entry in feed.accepted:
59
item.filename = entry.get('output', None)
60
item.title = entry['title']
61
item.url = entry['url']
64
reason = ' (reason: %s)' % entry['reason']
65
item.details = 'Accepted by %s%s' % (entry.get('accepted_by', '<unknown>'), reason)
66
feed.session.add(item)
68
register_plugin(PluginHistory, '--history', builtin=True)
69
register_parser_option('--history', action='store_true', dest='history', default=False,
70
help='List 50 latest accepted entries.')
71
register_parser_option('--downloads', action='store_true', dest='history', default=False,