|
1 |
| -#!/usr/bin/python |
2 |
| -# -*- coding: utf-8 -*- |
| 1 | +import threading |
| 2 | +from core.utils.logging import debug |
3 | 3 |
|
4 |
| -import time |
| 4 | +import standalone_runner |
| 5 | +import timeline_related_runner |
5 | 6 |
|
6 |
| -from twython import * |
7 |
| -from twython.exceptions import TwythonError, TwythonRateLimitError |
8 | 7 |
|
9 |
| -from core.timeline_scripts_manager import TimelineScriptsManager |
10 |
| -from core.utils.logging import log |
11 |
| -from core import settings |
| 8 | +class TimelineRelated(threading.Thread): |
| 9 | + def run(self): |
| 10 | + timeline_related_runner.run() |
12 | 11 |
|
13 | 12 |
|
14 |
| -class MyStreamer(TwythonStreamer): |
15 |
| - def __init__(self, *args, **kwargs): |
16 |
| - super(MyStreamer, self).__init__( |
17 |
| - settings.CONSUMER_KEY, |
18 |
| - settings.CONSUMER_SECRET, |
19 |
| - settings.OAUTH_TOKEN, |
20 |
| - settings.OAUTH_TOKEN_SECRET, |
21 |
| - *args, **kwargs |
22 |
| - ) |
23 |
| - self.twitter = Twython( |
24 |
| - settings.CONSUMER_KEY, |
25 |
| - settings.CONSUMER_SECRET, |
26 |
| - settings.OAUTH_TOKEN, |
27 |
| - settings.OAUTH_TOKEN_SECRET |
28 |
| - ) |
29 |
| - self.smart_handlers_manager = TimelineScriptsManager(self.twitter) |
30 |
| - |
31 |
| - def is_a_tweet(self, data): |
32 |
| - ''' |
33 |
| - This is a dirty way to do it, I know. But what else can I do? |
34 |
| - ''' |
35 |
| - if 'text' in data and 'user' in data and 'id_str' in data and data['user'][ |
36 |
| - 'screen_name'] != settings.TWIZHOOSH_USERNAME: |
37 |
| - return True |
38 |
| - return False |
39 |
| - |
40 |
| - def on_success(self, data): |
41 |
| - if self.is_a_tweet(data): |
42 |
| - log("Timeline update: %s [%s]" % ( |
43 |
| - data['user']['screen_name'], data['id_str'])) |
44 |
| - self.smart_handlers_manager.on_timeline_update(data) |
45 |
| - else: |
46 |
| - log("Got non status message: \n %s \n" % data) |
47 |
| - |
48 |
| - def on_error(self, status_code, data): |
49 |
| - log(status_code) |
50 |
| - log(data) |
51 |
| - |
52 |
| - def user(self, *args, **kwargs): |
53 |
| - while True: |
54 |
| - try: |
55 |
| - super(MyStreamer, self).user(self, *args, **kwargs) |
56 |
| - except TwythonRateLimitError as e: |
57 |
| - log("Rate limit error, retrying after {0} seconds".format( |
58 |
| - e.retry_after)) |
59 |
| - time.sleep(e.retry_after) |
60 |
| - except TwythonError as e: |
61 |
| - log("Twython error {0}".format(e)) |
62 |
| - |
63 |
| - |
64 |
| -def main(): |
65 |
| - log("starting") |
66 |
| - stream = MyStreamer() |
67 |
| - stream.user(replies="all") |
| 13 | +class Standalone(threading.Thread): |
| 14 | + def run(self): |
| 15 | + standalone_runner.run() |
68 | 16 |
|
69 | 17 |
|
70 | 18 | if __name__ == '__main__':
|
71 |
| - main() |
| 19 | + t = TimelineRelated() |
| 20 | + s = Standalone() |
| 21 | + s.start() |
| 22 | + t.start() |
0 commit comments