Exemplo n.º 1
0
def get_online_tests():
    try:
        vk = VkontakteGroupNewsReader( login.login, login.password, login.group_url )
        for i in range(2):
            vk.get_posts()
            time.sleep(120)
    except Exception as e:
        print e
Exemplo n.º 2
0
def get_wall():
    """ Возвращает GroupWall.
        Возможно, закешированный как-нить.
        
        В случае ошибки может вернуть None, это
        обрабатывается в шаблоне.
    """
    # Сейчас дергает сервер при каждом запросе
    vk = VkontakteGroupNewsReader(login.login, login.password, login.group_url)
    vk.get_posts()
    return vk.current_wall_posts
Exemplo n.º 3
0
def check_comparasion():
    path0 = os.path.normpath(
        os.path.join(
            os.getcwd(), "..", "vkontakte_group_small.html" ) )
    f0 = open( path0, "r" )
    wall0 = VkontakteGroupNewsReader.parse_response(f0)
    f0.close()

    path1 = os.path.normpath(
        os.path.join(
            os.getcwd(), "..", "vkontakte_group.html" ) )
    f1 = open( path1, "r" )
    wall1 = VkontakteGroupNewsReader.parse_response(f1)
    f1.close()

    wall1.check_for_new_posts_and_comments( wall0 )
Exemplo n.º 4
0
def get_hidden_comments(post_id):
    """ Возвращает набор скрытых комментов для указанного поста.
        Это тоже надо бы закешировать.
    """
    url = PostInfo.hidden_comments_url(post_id)
    comments = VkontakteGroupNewsReader.get_hidden_comments(url)
    return comments
    
        
Exemplo n.º 5
0
    def OnShowHiddenButton(self, event):
        post_id = event.EventObject.Name.replace('btn_', '')
        post = self.vk.current_wall_posts.posts[post_id]

        #показываем или скрываем дополнительные комментарии
        if not post.hidden_replies_has_shown:
            post.hidden_replies_has_shown = True
            
            hidden_comments = VkontakteGroupNewsReader.get_hidden_comments(post.get_hide_comments_url())
            
            post.prepend_list_of_replies( hidden_comments )
        else:
            post.hidden_replies_has_shown = False
            post.remove_all_hidden_replies()

        self.draw_topics()
Exemplo n.º 6
0
 def __init__(self, parent):
     self._init_ctrls(parent)
     self.vk = VkontakteGroupNewsReader(login.login, login.password, login.group_url)
     self.refresh_posts()
Exemplo n.º 7
0
class WallPostsFrame(wx.Frame):
    def _init_sizers(self):
        # generated method, don't edit
        self.bsSizer = wx.BoxSizer(orient=wx.VERTICAL)
        self.scrolledWindow1.SetSizerAndFit(self.bsSizer)

    """основное окно программы"""
    def _init_ctrls(self, prnt):
        wx.Frame.__init__(self, id=wx.ID_ANY, name=u'GroupNewsReader',
            title=u'VkontakteGroupReader', parent=prnt, pos=wx.Point(516, 141), size=wx.Size(290, 400),
            style=wx.MINIMIZE_BOX | wx.SYSTEM_MENU | wx.CAPTION | wx.CLOSE_BOX | wx.CLIP_CHILDREN)
        self.Center(wx.BOTH)
        self.SetBackgroundColour('#FFFFFF')
        self.Bind(wx.EVT_CLOSE, self.exitApp, id=self.Id)

        self.scrolledWindow1 = wx.ScrolledWindow(id=wx.ID_ANY,
              name='scrolledWindow1', parent=self, pos=wx.Point(0, 0),
              style=wx.VSCROLL)
        self.scrolledWindow1.SetScrollRate( 0, 1 )

        self.tbicon = StatusTaskBarIcon(self)
        self.tbicon.Bind(wx.EVT_MENU, self.exitApp, id=wx.ID_EXIT)
        self.tbicon.Bind(wx.EVT_MENU, self.refresh_posts, id=wx.ID_REFRESH )

        self.timer = wx.Timer(self)
        self.Bind(wx.EVT_TIMER, self.refresh_posts, self.timer)
        self.timer.Start(5 * 60 * 1000)

        self._init_sizers()

    def __init__(self, parent):
        self._init_ctrls(parent)
        self.vk = VkontakteGroupNewsReader(login.login, login.password, login.group_url)
        self.refresh_posts()

    def draw_topics(self):
        self.bsSizer.Clear(True)
        for post_id, post in self.vk.current_wall_posts.posts.iteritems():
            tp = TopicPanel(self.scrolledWindow1, "post_" + post_id, False, post_id, post.author.name, post.date,
                post.text, post.author.image_url, None, post.is_new)
            self.bsSizer.Add(tp, flag=wx.ALIGN_LEFT)

            #кнопка с дополнительными комментами, если такая имеется
            if post.hidden_replies_info is not None:
                if not post.hidden_replies_has_shown:
                    label_str = post.hidden_replies_info
                else:
                    label_str = u'Скрыть комментарии'
                btnShowHidden = wx.Button(id=wx.ID_ANY, label=label_str,
                    name="btn_" + post_id, parent=self.scrolledWindow1, style=0)
                btnShowHidden.Bind(wx.EVT_BUTTON, self.OnShowHiddenButton, id=btnShowHidden.Id)
                self.bsSizer.Add( btnShowHidden )

            for reply_id, reply in post.replies.iteritems():
                tp_r = TopicPanel(self.scrolledWindow1, "reply_" + reply_id, True, reply_id, reply.author.name, reply.date,
                    reply.text, reply.author.image_url, post_id, reply.is_new)
                self.bsSizer.Add(tp_r, flag=wx.LEFT, border=10)
        self.scrolledWindow1.Layout()

    def OnShowHiddenButton(self, event):
        post_id = event.EventObject.Name.replace('btn_', '')
        post = self.vk.current_wall_posts.posts[post_id]

        #показываем или скрываем дополнительные комментарии
        if not post.hidden_replies_has_shown:
            post.hidden_replies_has_shown = True
            
            hidden_comments = VkontakteGroupNewsReader.get_hidden_comments(post.get_hide_comments_url())
            
            post.prepend_list_of_replies( hidden_comments )
        else:
            post.hidden_replies_has_shown = False
            post.remove_all_hidden_replies()

        self.draw_topics()

    def refresh_posts(self, event=None):
        self.vk.get_posts()
        self.draw_topics()

    def exitApp(self,event):
        self.timer.Stop()
        self.tbicon.RemoveIcon()
        self.tbicon.Destroy()
        sys.exit()