diff --git a/contrib/boobot.py b/contrib/boobot.py
index b0b0a528..6b6cc08c 100755
--- a/contrib/boobot.py
+++ b/contrib/boobot.py
@@ -19,7 +19,7 @@
# along with weboob. If not, see .
-from datetime import datetime
+from datetime import datetime, timedelta
import logging
import re
import os
@@ -30,7 +30,7 @@ from math import log
import urlparse
import urllib
from random import randint, choice
-
+import itertools
from irc.bot import SingleServerIRCBot
import mechanize
from mechanize import _headersutil as headersutil
@@ -204,16 +204,26 @@ class MyThread(Thread):
return None
def check_twitter(self):
- for backend, thread in self.weboob.do('iter_resources', objs=None,
- split_path=['search', 'weboob'], backends=['twitter']):
- if not thread.id in backend.storage.get('seen', default={}):
- _item = thread.id.split('#')
- url = 'https://twitter.com/%s/status/%s' % (_item[0], _item[1])
- for msg in self.bot.on_url(url):
- self.bot.send_message('%s: %s' % (_item[0], url))
- self.bot.send_message(msg)
+ nb_tweets = 10
- backend.set_message_read(backend.fill_thread(thread, ['root']).root)
+ for _, backend in self.weboob.load_backends(modules=['twitter']).iteritems():
+ for thread in list(itertools.islice(backend.iter_resources(None, ['search', 'weboob']),
+ 0,
+ nb_tweets)):
+
+ if not backend.storage.get('lastpurge'):
+ backend.storage.set('lastpurge', datetime.now() - timedelta(days=60))
+ backend.storage.save()
+
+ if thread.id not in backend.storage.get('seen', default={}) and\
+ thread.date > backend.storage.get('lastpurge'):
+ _item = thread.id.split('#')
+ url = 'https://twitter.com/%s/status/%s' % (_item[0], _item[1])
+ for msg in self.bot.on_url(url):
+ self.bot.send_message('%s: %s' % (_item[0], url))
+ self.bot.send_message(msg)
+
+ backend.set_message_read(backend.fill_thread(thread, ['root']).root)
def check_dlfp(self):
for backend, msg in self.weboob.do('iter_unread_messages', backends=['dlfp']):
diff --git a/modules/twitter/backend.py b/modules/twitter/backend.py
index 97a1d891..5d5262d4 100644
--- a/modules/twitter/backend.py
+++ b/modules/twitter/backend.py
@@ -18,7 +18,6 @@
# along with weboob. If not, see .
from datetime import datetime, timedelta
-import time
from weboob.tools.value import Value, ValueBackendPassword
from weboob.tools.backend import BaseBackend, BackendConfig
from weboob.capabilities.messages import CapMessages, Thread, CapMessagesPost
@@ -97,11 +96,10 @@ class TwitterBackend(BaseBackend, CapMessages, CapMessagesPost, CapCollection):
self._purge_message_read()
def _purge_message_read(self):
+ lastpurge = self.storage.get('lastpurge', default=datetime.now() - timedelta(days=60))
- lastpurge = self.storage.get('lastpurge', default=0)
-
- if time.time() - lastpurge > 86400:
- self.storage.set('lastpurge', time.time())
+ if datetime.now() - lastpurge > timedelta(days=60):
+ self.storage.set('lastpurge', datetime.now() - timedelta(days=60))
self.storage.save()
# we can't directly delete without a "RuntimeError: dictionary changed size during iteration"
@@ -111,7 +109,7 @@ class TwitterBackend(BaseBackend, CapMessages, CapMessagesPost, CapCollection):
# if no date available, create a new one (compatibility with "old" storage)
if not date:
self.storage.set('seen', id, datetime.now())
- elif datetime.now() - date > timedelta(days=60):
+ elif lastpurge > date:
todelete.append(id)
for id in todelete: