From 470fcc5e902ae09af09478b9e245b4b19672d998 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Manuel=20Cort=C3=A9z?= Date: Tue, 23 Feb 2016 17:49:55 -0600 Subject: [PATCH] Now using VK API 5.45, the most recent version --- src/controller/buffers.py | 18 +++++--- src/controller/mainController.py | 15 +++++- src/controller/posts.py | 2 +- src/sessionmanager/session.py | 64 ++++++++++++-------------- src/sessionmanager/vkSessionHandler.py | 5 +- src/wxUI/mainWindow.py | 3 +- 6 files changed, 61 insertions(+), 46 deletions(-) diff --git a/src/controller/buffers.py b/src/controller/buffers.py index 2dc60b7..9e3f31f 100644 --- a/src/controller/buffers.py +++ b/src/controller/buffers.py @@ -30,15 +30,21 @@ class baseBuffer(object): item_ = getattr(session, self.compose_function)(item, self.session) self.tab.list.insert_item(reversed, *item_) - def get_items(self, no_next=True): - num = getattr(self.session, "get_newsfeed")(no_next=no_next, name=self.name, *self.args, **self.kwargs) + def get_items(self, show_nextpage=False): + num = getattr(self.session, "get_newsfeed")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs) print num - if no_next == True: + if show_nextpage == False: if self.tab.list.get_count() > 0 and num > 0: print "inserting a value" [self.insert(i, True) for i in self.session.db[self.name]["items"][:num]] else: [self.insert(i) for i in self.session.db[self.name]["items"][:num]] + else: + if num > 0: + [self.insert(i, False) for i in self.session.db[self.name]["items"][:num]] + + def update(self): + self.get_items(show_nextpage=True) def post(self, *args, **kwargs): p = messages.post(title=_(u"Write your post"), caption="", text="") @@ -101,10 +107,10 @@ class baseBuffer(object): class feedBuffer(baseBuffer): - def get_items(self, no_next=True): - num = getattr(self.session, "get_page")(no_next=no_next, name=self.name, *self.args, **self.kwargs) + def get_items(self, show_nextpage=False): + num = getattr(self.session, "get_page")(show_nextpage=show_nextpage, name=self.name, *self.args, **self.kwargs) print num - if no_next == True: + if show_nextpage == False: if self.tab.list.get_count() > 0 and num > 0: print "inserting a value" [self.insert(i, True) for i in self.session.db[self.name]["items"][-num:]] diff --git a/src/controller/mainController.py b/src/controller/mainController.py index 1d9cd60..c5b0594 100644 --- a/src/controller/mainController.py +++ b/src/controller/mainController.py @@ -19,6 +19,13 @@ class Controller(object): return self.buffers[i] return False + def get_current_buffer(self): + """ Get the current bufferObject""" + buffer = self.window.get_current_buffer() + if hasattr(buffer, "name"): + buffer = self.search(buffer.name) + return buffer + def __init__(self): super(Controller, self).__init__() self.buffers = [] @@ -49,6 +56,7 @@ class Controller(object): pub.subscribe(self.play_audio, "play-audio") pub.subscribe(self.view_post, "open-post") widgetUtils.connect_event(self.window, widgetUtils.CLOSE_EVENT, self.exit) + widgetUtils.connect_event(self.window, widgetUtils.MENU, self.update_buffer, menuitem=self.window.update_buffer) def disconnect_events(self): pub.unsubscribe(self.in_post, "posted") @@ -93,4 +101,9 @@ class Controller(object): def exit(self, *args, **kwargs): self.disconnect_events() self.window.Destroy() -# wx.GetApp().ExitMainloop() \ No newline at end of file +# wx.GetApp().ExitMainloop() + + def update_buffer(self, *args, **kwargs): + b = self.get_current_buffer() + b.update() + print "updated" \ No newline at end of file diff --git a/src/controller/posts.py b/src/controller/posts.py index b5f26b8..7446ef4 100644 --- a/src/controller/posts.py +++ b/src/controller/posts.py @@ -204,7 +204,7 @@ class audio(postController): def add_to_library(self, *args, **kwargs): args = {} - args["audio_id"] = self.post["aid"] + args["audio_id"] = self.post["id"] if self.post.has_key("album_id"): args["album_id"] = self.post["album_id"] args["owner_id"] = self.post["owner_id"] diff --git a/src/sessionmanager/session.py b/src/sessionmanager/session.py index f90d496..ed7dadb 100644 --- a/src/sessionmanager/session.py +++ b/src/sessionmanager/session.py @@ -71,11 +71,18 @@ def compose_new(status, session): if message == "": message = "no description available" elif status["type"] == "audio": - message = _(u"{0} has added an audio: {1}").format(user, u", ".join(compose_audio(status["audio"][1], session)),) + if status["audio"]["count"] == 1: + message = _(u"{0} has added an audio: {1}").format(user, u", ".join(compose_audio(status["audio"]["items"][0], session)),) + else: + prem = "" + for i in xrange(0, status["audio"]["count"]): + composed_audio = compose_audio(status["audio"]["items"][i], session) + prem += u"{0} - {1}, ".format(composed_audio[0], composed_audio[1]) + message = _(u"{0} has posted {1} audios: {2}").format(user, status["audio"]["count"], prem) elif status["type"] == "friend": msg_users = u"" - for i in status["friends"][1:]: - msg_users = msg_users + u"{0}, ".format(session.get_user_name(i["uid"])) + for i in status["friends"]["items"]: + msg_users = msg_users + u"{0}, ".format(session.get_user_name(i["user_id"])) message = _(u"{0} hadded friends: {1}").format(user, msg_users) else: if status["type"] != "post": print status["type"] @@ -102,7 +109,7 @@ def compose_audio(audio, session): class vkSession(object): - def order_buffer(self, name, data, field): + def order_buffer(self, name, data, show_nextpage): """ Put new items on the local database. Useful for cursored buffers name str: The name for the buffer stored in the dictionary. @@ -118,7 +125,7 @@ class vkSession(object): if i.has_key("type") and i["type"] == "wall_photo": continue if find_item(self.db[name]["items"], i) == False: # if i not in self.db[name]["items"]: - if first_addition: + if first_addition or show_nextpage == True: if self.settings["general"]["reverse_timelines"] == False: self.db[name]["items"].append(i) else: self.db[name]["items"].insert(0, i) else: @@ -176,42 +183,31 @@ class vkSession(object): """ Sends a post to an user, group or community wall.""" response = self.vk.client.wall.post(message=message, *args, **kwargs) - def get_newsfeed(self, name="newsfeed", no_next=True, endpoint="", *args, **kwargs): + def get_newsfeed(self, name="newsfeed", show_nextpage=False, endpoint="", *args, **kwargs): + if show_nextpage == True: + kwargs["start_from"] = self.db[name]["cursor"] + kwargs["v"] = "5.21" data = getattr(self.vk.client.newsfeed, "get")(*args, **kwargs) if data != None: - self.process_usernames(data) - num = self.order_buffer(name, data["items"][:-1], "post_id") + if show_nextpage == False: + self.process_usernames(data) + else: + print data.keys() + num = self.order_buffer(name, data["items"][:-1], show_nextpage) + print data.keys() + self.db[name]["cursor"] = data["next_from"] return num - def get_page(self, name="", no_next=True, endpoint="", *args, **kwargs): + def get_page(self, name="", show_nextpage=False, endpoint="", *args, **kwargs): data = None - full_list = False if kwargs.has_key("parent_endpoint"): p = kwargs["parent_endpoint"] kwargs.pop("parent_endpoint") - if kwargs.has_key("full_list"): - print kwargs - full_list = True - kwargs.pop("full_list") - if kwargs.has_key("identifier"): - identifier = kwargs["identifier"] - kwargs.pop("identifier") p = getattr(self.vk.client, p) data = getattr(p, endpoint)(*args, **kwargs) -# print data if data != None: -# try: - if full_list == False: - num = self.order_buffer(name, data[1:], identifier) - else: - num = self.order_buffer(name, data, identifier) -# except: -# num = self.order_buffer(name, data["items"][:-1]) + num = self.order_buffer(name, data["items"], show_nextpage) ids = "" - for i in data[1:]: - if i.has_key("from_id"): - if str(i["from_id"]) not in ids: ids += "{0},".format(i["from_id"]) - self.get_users(ids) return num def get_user_name(self, user_id): @@ -230,17 +226,17 @@ class vkSession(object): if user_ids != None: u = self.vk.client.users.get(user_ids=user_ids, fields="uid, first_name, last_name") for i in u: - self.db["users"][i["uid"]] = u"{0} {1}".format(i["first_name"], i["last_name"]) + self.db["users"][i["id"]] = u"{0} {1}".format(i["first_name"], i["last_name"]) if group_ids != None: g = self.vk.client.groups.getById(group_ids=group_ids, fields="name") for i in g: - self.db["groups"][i["gid"]] = i["name"] + self.db["groups"][i["id"]] = i["name"] def process_usernames(self, data): for i in data["profiles"]: - self.db["users"][i["uid"]] = u"{0} {1}".format(i["first_name"], i["last_name"]) + self.db["users"][i["id"]] = u"{0} {1}".format(i["first_name"], i["last_name"]) for i in data["groups"]: - self.db["groups"][i["gid"]] = i["name"] + self.db["groups"][i["id"]] = i["name"] def get_my_data(self): - self.user_id = self.vk.client.users.get(fields="uid")[0]["uid"] \ No newline at end of file + self.user_id = self.vk.client.users.get(fields="uid")[0]["id"] \ No newline at end of file diff --git a/src/sessionmanager/vkSessionHandler.py b/src/sessionmanager/vkSessionHandler.py index d7148b9..14aa068 100644 --- a/src/sessionmanager/vkSessionHandler.py +++ b/src/sessionmanager/vkSessionHandler.py @@ -6,13 +6,14 @@ class vkObject(object): def __init__(self): self.api_key = keys.keyring.get_api_key() + self.api_version = 5.45 def login(self, user, password): s = AuthSession(app_id=self.api_key, user_login=user, user_password=password, scope="wall, notify, friends, photos, audio, video, docs, notes, pages, status, groups, messages, notifications, stats") - self.client = API(s) + self.client = API(s, v=self.api_version) self.client.account.getProfileInfo() def login_access_token(self, token): s = Session(access_token=token) - self.client = API(s) + self.client = API(s, v=self.api_version) return self.client.account.getProfileInfo() \ No newline at end of file diff --git a/src/wxUI/mainWindow.py b/src/wxUI/mainWindow.py index 6ab40a3..a579175 100644 --- a/src/wxUI/mainWindow.py +++ b/src/wxUI/mainWindow.py @@ -6,8 +6,7 @@ class mainWindow(wx.Frame): def makeMenu(self): mb = wx.MenuBar() buffer = wx.Menu() - self.update = buffer.Append(wx.NewId(), _(u"Update current buffer")) - self.update.Enable(False) + self.update_buffer = buffer.Append(wx.NewId(), _(u"Update current buffer")) self.load_previous_items = buffer.Append(wx.NewId(), _(u"Load previous items")) self.load_previous_items.Enable(False) mb.Append(buffer, _(u"Buffer"))