예제 #1
0
def send_msg(email_list, keyword, name, content):
    """
    : keyword: key word for searching news
    : name: weibo account
    : content : a dict contain search results, such as {"news"[news1, news2], "weibo": weibo}
    """
    for email in email_list:
        if content.has_key("news") and content["news"]:
            send_news = need_send_news(email, keyword, content["news"])
            logger.debug("need to send %d news" % len(send_news))
            if send_news:
                news_str = gen_news_str(send_news)
                subject = "%s 有新消息了^-^" % '+'.join(keyword)
                cur_time = int(time.time())
                send_mail(email, subject, news_str)
                AccountSetting.update_email_time(email, keyword, cur_time)

        if content.has_key("weibo") and content["weibo"]:
            send_weibo = need_send_weibo(email, name, content["weibo"])
            if send_weibo:
                weibo_str = gen_weibo_str(name, send_weibo)
                subject = keyword + " 有新的微博动态了^-^"
                send_mail(email, subject, news_str)
                cur_time = int(time.time())
                AccountSetting.update_email_time(email, name, cur_time)
예제 #2
0
파일: run.py 프로젝트: jamonhe/justsoeasy
    def get(self):
        word = self.get_argument('word', '').split(" ")
        start_time = time.time()
        result = get_msg(keyword=word)
        end_time = time.time()

        result = gen_news_str(result["news"])# + gen_weibo_str(result["weibo"])

        logger.debug("found result: %s" % result)
        logger.debug("this search took %s seconds" % (end_time-start_time))
        self.write('''<html><body>'''+result.replace("\n", "<br>")+'''</body></html>''')
예제 #3
0
def can_send_news(keyword, news_list):
    """
    return new news and last day news
    : keyword:  key word in once search news
    : news_list: news results(a list) of searching , must contain title,content,time,url
    """
    send_news = []
    current_time = int(time.time())
    logger.debug("found %s news" % len(news_list))
    for news in news_list:
        ret, is_created = News.create(keyword, news)
        print ret["time"], is_created, current_time - MAX_LONG_TIME
        print "ret=",ret
        if not is_created and ret["time"] < current_time - MAX_LONG_TIME:
            continue
        send_news.append(news)
    return send_news
예제 #4
0
def get_msg(keyword=None, name=None):
    """
     return grab message and took some filter(如果新闻或微博内容数据库中木有,则返回;
        如果有且发布时间在MAX_LONG_TIME 以内,也返回;其他过滤掉)
    : keyword: key word list for searching news
    : name: weibo account
    """
    try:
        if not keyword and not name:
            return {}
        send_contents = {}
        news_list = search_news(keyword)

        send_contents["news"] = can_send_news(keyword, news_list)
        logger.debug("can send %d news after filtered" % len(send_contents["news"]))
        # if name:
        #     weibo = search_weibo(name)
        #     ret = can_send_weibo(name, weibo)
        #     if ret:
        #         send_contents["weibo"] = ret
        return send_contents
    except Exception, e:
        logger.error(traceback.format_exc(e))
        return {}