aboutsummaryrefslogtreecommitdiff
path: root/src/manager.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/manager.py')
-rwxr-xr-xsrc/manager.py74
1 files changed, 74 insertions, 0 deletions
diff --git a/src/manager.py b/src/manager.py
new file mode 100755
index 00000000..5aedbe18
--- /dev/null
+++ b/src/manager.py
@@ -0,0 +1,74 @@
+#! /usr/bin/env python
+# -*- coding: utf-8 -*-
+
+from bootstrap import application, db, populate_g, conf
+from flask.ext.script import Manager
+from flask.ext.migrate import Migrate, MigrateCommand
+
+import web.models
+
+Migrate(application, db)
+
+manager = Manager(application)
+manager.add_command('db', MigrateCommand)
+
+@manager.command
+def db_empty():
+ "Will drop every datas stocked in db."
+ with application.app_context():
+ populate_g()
+ web.models.db_empty(db)
+
+@manager.command
+def db_create():
+ "Will create the database from conf parameters."
+ with application.app_context():
+ populate_g()
+ web.models.db_create(db)
+
+@manager.command
+def fetch(limit=100, retreive_all=False):
+ "Crawl the feeds with the client crawler."
+ from web.lib.crawler import CrawlerScheduler
+ scheduler = CrawlerScheduler(conf.API_LOGIN, conf.API_PASSWD)
+ scheduler.run(limit=limit, retreive_all=retreive_all)
+ scheduler.wait()
+
+@manager.command
+def fetch_asyncio(user_id, feed_id):
+ "Crawl the feeds with asyncio."
+ import asyncio
+
+ with application.app_context():
+ populate_g()
+ from flask import g
+ from web.models import User
+ from web import crawler
+ users, feed_id = [], None
+ try:
+ users = User.query.filter(User.id == int(user_id)).all()
+ except:
+ users = User.query.all()
+ finally:
+ if users == []:
+ users = User.query.all()
+
+ try:
+ feed_id = int(feed_id)
+ except:
+ feed_id = None
+
+ loop = asyncio.get_event_loop()
+ for user in users:
+ if user.activation_key == "":
+ print("Fetching articles for " + user.nickname)
+ g.user = user
+ feed_getter = crawler.retrieve_feed(loop, g.user, feed_id)
+ loop.close()
+
+from scripts.probes import ArticleProbe, FeedProbe
+manager.add_command('probe_articles', ArticleProbe())
+manager.add_command('probe_feeds', FeedProbe())
+
+if __name__ == '__main__':
+ manager.run()
bgstack15