Compare commits

...

5 Commits

9 changed files with 46 additions and 30 deletions

View File

@@ -5,11 +5,11 @@ if snapshot == False:
version = "0.80" version = "0.80"
update_url = 'http://twblue.es/updates/twblue_ngen.json' update_url = 'http://twblue.es/updates/twblue_ngen.json'
else: else:
version = "10.92" version = "10.93"
update_url = 'http://twblue.es/updates/snapshots_ngen.json' update_url = 'http://twblue.es/updates/snapshots_ngen.json'
author = u"Manuel Cortéz, Bill Dengler" author = u"Manuel Cortéz"
authorEmail = "manuel@manuelcortez.net" authorEmail = "manuel@manuelcortez.net"
copyright = u"Copyright (C) 2015, Technow S.L. \nCopyright (C) 2015, Bill Dengler\nCopyright (C) 2013-2015, Manuel cortéz." copyright = u"Copyright (C) 2015, Technow S.L. \nCopyright (C) 2013-2015, Manuel cortéz."
description = unicode(name+" is an app designed to use Twitter simply and efficiently while using minimal system resources. This app provides access to most Twitter features.") description = unicode(name+" is an app designed to use Twitter simply and efficiently while using minimal system resources. This app provides access to most Twitter features.")
translators = [u"Bryner Villalobos, Bill Dengler (English)", u"Mohammed Al Shara (Arabic)", u"Joan Rabat, Juan Carlos Rivilla (Catalan)", u"Manuel cortéz (Spanish)", u"Sukil Etxenike Arizaleta (Basque)", u"Jani Kinnunen (finnish)", u"Rémy Ruiz (French)", u"Juan Buño (Galician)", u"Steffen Schultz (German)", u"Robert Osztolykan (Hungarian)", u"Paweł Masarczyk (Polish)", u"Odenilton Júnior Santos (Portuguese)", u"Alexander Jaszyn (Russian)", u"Burak (Turkish)"] translators = [u"Bryner Villalobos, Bill Dengler (English)", u"Mohammed Al Shara (Arabic)", u"Joan Rabat, Juan Carlos Rivilla (Catalan)", u"Manuel cortéz (Spanish)", u"Sukil Etxenike Arizaleta (Basque)", u"Jani Kinnunen (finnish)", u"Rémy Ruiz (French)", u"Juan Buño (Galician)", u"Steffen Schultz (German)", u"Robert Osztolykan (Hungarian)", u"Paweł Masarczyk (Polish)", u"Odenilton Júnior Santos (Portuguese)", u"Alexander Jaszyn (Russian)", u"Burak (Turkish)"]
url = u"http://twblue.es" url = u"http://twblue.es"

View File

@@ -779,7 +779,7 @@ class Controller(object):
if usr["favourites_count"] == 0: if usr["favourites_count"] == 0:
commonMessageDialogs.no_favs() commonMessageDialogs.no_favs()
return return
if dlg.get_user() in buffer.session.settings["other_buffers"]["favourites_timelines"]: if dlg.get_user() in buff.session.settings["other_buffers"]["favourites_timelines"]:
commonMessageDialogs.timeline_exist() commonMessageDialogs.timeline_exist()
return return
tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (dlg.get_user(),), buff.session, buff.session.db["user_name"], bufferType=None, screen_name=dlg.get_user()) tl = buffersController.baseBufferController(self.view.nb, "get_favorites", "%s-favorite" % (dlg.get_user(),), buff.session, buff.session.db["user_name"], bufferType=None, screen_name=dlg.get_user())
@@ -1224,6 +1224,7 @@ class Controller(object):
buffer.add_new_item(data) buffer.add_new_item(data)
def manage_item_in_list(self, data, user, where): def manage_item_in_list(self, data, user, where):
print "I'm activated!"
buffer = self.search_buffer("%s" % (where,), user) buffer = self.search_buffer("%s" % (where,), user)
if buffer == None: return if buffer == None: return
play_sound = "tweet_timeline.ogg" play_sound = "tweet_timeline.ogg"

View File

@@ -1,5 +1,4 @@
import win32com.client import win32com.client
def fix(): def fix():
if win32com.client.gencache.is_readonly == True: if win32com.client.gencache.is_readonly == True:
win32com.client.gencache.is_readonly = False win32com.client.gencache.is_readonly = False

View File

@@ -1,4 +1,7 @@
from pywintypes import com_error from pywintypes import com_error
import win32com
import paths
win32com.__gen_path__=paths.data_path("com_cache")
from win32com.client import gencache from win32com.client import gencache
def prepare_gencache(): def prepare_gencache():

View File

@@ -23,7 +23,7 @@ import application
import keys import keys
from mysc.thread_utils import call_threaded from mysc.thread_utils import call_threaded
import fixes import fixes
#extra variables to control the temporal stdout and stderr, while the final files are opened. We understand that some errors could happen while all outputs are closed, so let's try to avoid it. #extra variables to control the temporary stdout and stderr, while the final files are opened. We understand that some errors could happen while all outputs are closed, so let's try to avoid it.
import widgetUtils import widgetUtils
import webbrowser import webbrowser
from wxUI import commonMessageDialogs from wxUI import commonMessageDialogs
@@ -53,13 +53,13 @@ log = logging.getLogger("main")
def setup(): def setup():
log.debug("Starting " + application.name + " %s" % (application.version,)) log.debug("Starting " + application.name + " %s" % (application.version,))
config.setup() config.setup()
fixes.setup()
log.debug("Using %s %s" % (platform.system(), platform.architecture()[0])) log.debug("Using %s %s" % (platform.system(), platform.architecture()[0]))
log.debug("Application path is %s" % (paths.app_path(),)) log.debug("Application path is %s" % (paths.app_path(),))
log.debug("config path is %s" % (paths.config_path(),)) log.debug("config path is %s" % (paths.config_path(),))
sound.setup() sound.setup()
output.setup() output.setup()
languageHandler.setLanguage(config.app["app-settings"]["language"]) languageHandler.setLanguage(config.app["app-settings"]["language"])
fixes.setup()
keys.setup() keys.setup()
from controller import mainController from controller import mainController
from sessionmanager import sessionManager from sessionmanager import sessionManager

View File

@@ -322,10 +322,12 @@ class Session(object):
for z in i.users: for z in i.users:
ids += str(z) + ", " ids += str(z) + ", "
if ids != "": if ids != "":
# print ids
stream_threaded(self.timelinesStream.statuses.filter, self.session_id, follow=ids) stream_threaded(self.timelinesStream.statuses.filter, self.session_id, follow=ids)
def add_friends(self): def add_friends(self):
try: try:
# print "setting friends"
self.timelinesStream.set_friends(self.main_stream.friends) self.timelinesStream.set_friends(self.main_stream.friends)
except AttributeError: except AttributeError:
pass pass
@@ -348,7 +350,7 @@ class Session(object):
self.logged = False self.logged = False
self.twitter = twitter.twitter.twitter() self.twitter = twitter.twitter.twitter()
self.login(False) self.login(False)
pub.sendMessage("streamError", session=self.session_id) # pub.sendMessage("streamError", session=self.session_id)
if self.reconnection_function_active == True: return if self.reconnection_function_active == True: return
self.reconnection_function_active = True self.reconnection_function_active = True
if not hasattr(self, "main_stream"): if not hasattr(self, "main_stream"):

View File

@@ -139,8 +139,8 @@ class URLStream(object):
log.debug("Stopped audio stream.") log.debug("Stopped audio stream.")
except: except:
log.exception("Exception while stopping stream.") log.exception("Exception while stopping stream.")
# if delete: if delete:
# del self.stream del self.stream
log.debug("Deleted audio stream.") log.debug("Deleted audio stream.")
return True return True
else: else:

View File

@@ -37,25 +37,28 @@ class timelinesStreamer(TwythonStreamer):
try: try:
data_ = self.session.check_quoted_status(data) data_ = self.session.check_quoted_status(data)
data = data_ data = data_
except: except AttributeError:
pass pass
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s-timeline" % (i,)].append(data) if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s-timeline" % (i,)].append(data)
else: self.session.db["%s-timeline" % (i,)].insert(0, data) else: self.session.db["%s-timeline" % (i,)].insert(0, data)
pub.sendMessage("item-in-timeline", data= data, user= self.session.db["user_name"], who= i) pub.sendMessage("item-in-timeline", data= data, user= self.session.db["user_name"], who= i)
# return
for i in self.session.lists: for i in self.session.lists:
try: try:
i.users.index(data["user"]["id"]) i.users.index(data["user"]["id"])
# print "Index in the list for the specified user: %d" % (i.users.index(data["user"]["id"]),)
usr = data["in_reply_to_user_id"] usr = data["in_reply_to_user_id"]
if (usr != None and usr in self.friends) or data.has_key("retweeted_status"): if (usr != None or usr in self.friends) or data.has_key("retweeted_status"):
data = self.session.check_quoted_status(data) data = self.session.check_quoted_status(data)
# print data
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data) if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
else: self.session.db["%s" % (i,)].insert(0, data) else: self.session.db["%s" % (i,)].insert(0, data)
pub.sendMessage("item-in-list", data= data, user= self.session.db["user_name"], where= i.name) pub.sendMessage("item-in-list", data=data, user=self.session.db["user_name"], where=i.name)
elif usr == None: elif usr == None:
if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data) if self.session.settings["general"]["reverse_timelines"] == False: self.session.db["%s" % (i.name,)].append(data)
else: self.session.db["%s" % (i,)].insert(0, data) else: self.session.db["%s" % (i,)].insert(0, data)
pub.sendMessage("item-in-list", data= data, user= self.session.db["user_name"], where= i.name) pub.sendMessage("item-in-list", data=data, user=self.session.db["user_name"], where=i.name)
except ValueError: except NameError:
pass pass
def set_friends(self, friends): def set_friends(self, friends):

View File

@@ -36,7 +36,7 @@ class streamer(TwythonStreamer):
if self.session.db.has_key(place): if self.session.db.has_key(place):
if utils.find_item(data["id"], self.session.db[place]) != None: if utils.find_item(data["id"], self.session.db[place]) != None:
log.error("duplicated tweet. Ignoring it...") log.error("duplicated tweet. Ignoring it...")
return return False
try: try:
data_ = self.session.check_quoted_status(data) data_ = self.session.check_quoted_status(data)
data = data_ data = data_
@@ -47,6 +47,7 @@ class streamer(TwythonStreamer):
else: else:
self.session.db[place].insert(0, data) self.session.db[place].insert(0, data)
utils.is_audio(data) utils.is_audio(data)
return True
def block_user(self, data): def block_user(self, data):
id = data["target"]["id"] id = data["target"]["id"]
@@ -64,30 +65,36 @@ class streamer(TwythonStreamer):
def check_send(self, data): def check_send(self, data):
if self.session.db["user_name"] == data["user"]["screen_name"]: if self.session.db["user_name"] == data["user"]["screen_name"]:
self.put_data("sent_tweets", data) d = self.put_data("sent_tweets", data)
pub.sendMessage("sent-tweet", data=data, user=self.get_user()) if d != False:
pub.sendMessage("sent-tweet", data=data, user=self.get_user())
def check_favs(self, data): def check_favs(self, data):
if data["source"]["screen_name"] == self.session.db["user_name"]: if data["source"]["screen_name"] == self.session.db["user_name"]:
self.put_data("favourites", data["target_object"]) d = self.put_data("favourites", data["target_object"])
pub.sendMessage("favourite", data=data["target_object"], user=self.get_user()) if d != False:
pub.sendMessage("favourite", data=data["target_object"], user=self.get_user())
def check_mentions(self, data): def check_mentions(self, data):
if "@%s" % (self.session.db["user_name"]) in data["text"]: if "@%s" % (self.session.db["user_name"]) in data["text"]:
self.put_data("mentions", data) d = self.put_data("mentions", data)
pub.sendMessage("mention", data=data, user=self.get_user()) if d != False:
pub.sendMessage("mention", data=data, user=self.get_user())
def set_quoted_tweet(self, data): def set_quoted_tweet(self, data):
self.put_data("mentions", data) d = self.put_data("mentions", data)
pub.sendMessage("mention", data=data, user=self.get_user()) if d != False:
pub.sendMessage("mention", data=data, user=self.get_user())
def process_dm(self, data): def process_dm(self, data):
if self.session.db["user_name"] == data["direct_message"]["sender"]["screen_name"]: if self.session.db["user_name"] == data["direct_message"]["sender"]["screen_name"]:
self.put_data("sent_direct_messages", data["direct_message"]) d = self.put_data("sent_direct_messages", data["direct_message"])
pub.sendMessage("sent-dm", data=data["direct_message"], user=self.get_user()) if d != False:
pub.sendMessage("sent-dm", data=data["direct_message"], user=self.get_user())
else: else:
self.put_data("direct_messages", data["direct_message"]) d = self.put_data("direct_messages", data["direct_message"])
pub.sendMessage("direct-message", data=data["direct_message"], user=self.get_user()) if d != False:
pub.sendMessage("direct-message", data=data["direct_message"], user=self.get_user())
def check_follower(self, data): def check_follower(self, data):
if data["target"]["screen_name"] == self.session.db["user_name"]: if data["target"]["screen_name"] == self.session.db["user_name"]:
@@ -129,8 +136,9 @@ class streamer(TwythonStreamer):
self.check_mentions(data) self.check_mentions(data)
self.check_send(data) self.check_send(data)
if data["user"]["id"] in self.friends or data["user"]["screen_name"] == self.session.db["user_name"]: if data["user"]["id"] in self.friends or data["user"]["screen_name"] == self.session.db["user_name"]:
self.put_data("home_timeline", data) d = self.put_data("home_timeline", data)
pub.sendMessage("item-in-home", data=data, user=self.get_user()) if d != False:
pub.sendMessage("item-in-home", data=data, user=self.get_user())
elif data.has_key("event"): elif data.has_key("event"):
if "favorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]: if "favorite" == data["event"] and "favorites" in self.session.settings["general"]["buffer_order"]:
self.check_favs(data) self.check_favs(data)