def get_rss_by_url(self, url=''): conn, cursor = self.__open() try: rss = None sql = 'SELECT * FROM RSS WHERE URL=? LIMIT 1' cursors = cursor.execute(sql, (url,)) _ = cursors.fetchone() rss = RSS(_[1], _[0], _[2], _[3]) finally: self.__close(cursor, conn) return rss
def check_url(self, url): rss = RSS() try: logging.info("请求从网络下载url") d = feedparser.parse(url) logging.info("解析标题") rss.title = d.feed.title logging.info("解析链接") rss.url = d.feed.title_detail.base logging.info("解析最近文章的标题") _name = d.entries[0].title logging.info("解析最近文章的链接") _link = d.entries[0].link logging.info("解析最近文章的GUID") try: _guid = d.entries[0].guid except AttributeError: logging.info("GUID不存在,使用link代替") _guid = _link logging.info("解析完成设置标记") rss.mark = _guid logging.info("状态设置为激活") rss.active = True except Exception: logging.error("生成rss过程中出现错误") logging.error("url: {}".format(url)) finally: return rss
def get_sub_by_chat_id(self, chat_id): conn, cursor = self.__open() try: sub_list = [] sql = 'SELECT SUB.URL,SUB.NICKNAME,RSS.MARK,RSS.ACTIVE FROM SUB LEFT JOIN RSS ON SUB.URL=RSS.URL WHERE SUB.CHAT_ID=?' cursors = cursor.execute(sql, (chat_id,)) for _ in cursors: sub_list.append(RSS(_[1], _[0], _[2], _[3])) finally: self.__close(cursor, conn) return sub_list
def add_rss(self, rss=RSS()): conn, cursor = self.__open() try: sql = 'SELECT count(*) FROM RSS WHERE URL=? LIMIT 1' cursors = cursor.execute(sql, (rss.url,)) ret = cursors.fetchone()[0] if ret == 0: sql = 'INSERT INTO RSS(URL,TITLE,MARK) VALUES(?,?,?)' cursors = cursor.execute(sql, (rss.url, rss.title, rss.mark)) elif ret == 1: sql = 'UPDATE RSS SET TITLE=?,ACTIVE=1 WHERE URL =?' cursors = cursor.execute(sql, (rss.title, rss.url)) conn.commit() finally: self.__close(cursor, conn)
def get_rss_list(self, chat_id=''): conn, cursor = self.__open() try: rss_list = [] if chat_id != '': sql = 'SELECT * FROM RSS WHERE URL IN (SELECT URL FROM SUB WHERE CHAT_ID=?)' cursors = cursor.execute(sql, (chat_id,)) else: sql = 'SELECT * FROM RSS WHERE ACTIVE=1 AND URL IN (SELECT URL FROM SUB GROUP BY URL)' cursors = cursor.execute(sql) for _ in cursors: url = _[0] title = _[1] mark = _[2] active = _[3] rss_list.append(RSS(title, url, mark, active)) finally: self.__close(cursor, conn) return rss_list