Exemple #1
0
    def get_column_intro(self, column_id: int) -> dict:
        try:
            column = ColumnIntro.get(ColumnIntro.column_id == column_id)

            cache = {
                "id": column.column_id,
                "column_id": column.column_id,
                "column_title": column.column_title,
                "author_name": column.author_name,
                "column_intro": column.column_intro,
                "column_cover": column.column_cover,
                "column_type": column.column_type,
                "update_frequency": column.update_frequency,
                "is_finish": column.is_finish,
                "had_sub": column.had_sub,
                "articles": json.loads(column.articles)
            }
            logger.info("get column intro from cache, column_title={}".format(
                cache['column_title']))
            return cache
        except DoesNotExist:
            return {}
        except Exception:
            logger.error('ERROR: {}'.format(traceback.format_exc()))
            return {}
Exemple #2
0
    def set(self, key: str, value: dict, expire: int) -> None:
        try:
            try:
                kv: TempKV = TempKV.get(TempKV.key == key)
            except DoesNotExist:
                kv = TempKV()

            val_str = json.dumps(value)
            kv.key = key
            kv.value = val_str
            kv.expire = expire
            kv.save()
            logger.info("set kv, key={}, value= {}, expire={}".format(
                key, val_str[:100], expire))
        except Exception:
            logger.error('ERROR: {}'.format(traceback.format_exc()))
Exemple #3
0
    def get(self, key: str) -> dict:
        try:
            try:
                kv: TempKV = TempKV.get(TempKV.key == key)
            except DoesNotExist:
                return {}

            if kv.is_expired():
                logger.info("get kv expired, key={}".format(key))
                return {}
            val_dict = json.loads(str(kv.value))
            logger.info("get kv, key={}, value= {}".format(
                key, kv.value[:100]))
            return val_dict
        except Exception:
            logger.error('ERROR: {}'.format(traceback.format_exc()))
            return {}
Exemple #4
0
 def save_article(self, article_info: dict) -> None:
     try:
         try:
             article = Article.get(
                 Article.article_id == article_info['article_id'])
         except DoesNotExist:
             article = Article()
         article.article_id = article_info['article_id']
         article.article_title = article_info['article_title']
         article.article_cover = article_info['article_cover']
         article.article_content = article_info['article_content']
         article.audio_download_url = article_info['audio_download_url']
         article.comments = json.dumps(article_info['comments'])
         article.save()
         logger.info("save article to cache, article_title={}".format(
             article_info['article_title']))
     except Exception:
         logger.error('ERROR: {}'.format(traceback.format_exc()))
Exemple #5
0
    def get_article(self, article_id: int) -> dict:
        try:
            article = Article.get(Article.article_id == article_id)

            cache = {
                "id": article.article_id,
                "article_id": article.article_id,
                "article_title": article.article_title,
                "article_cover": article.article_cover,
                "article_content": article.article_content,
                "audio_download_url": article.audio_download_url,
                "comments": json.loads(article.comments)
            }
            logger.info("get article from cache, article_title={}".format(
                cache['article_title']))
            return cache
        except DoesNotExist:
            return {}
        except Exception:
            logger.error('ERROR: {}'.format(traceback.format_exc()))
            return {}
Exemple #6
0
 def save_column_intro(self, course_intro: dict) -> None:
     try:
         try:
             column = ColumnIntro.get(
                 ColumnIntro.column_id == course_intro['id'])
         except DoesNotExist:
             column = ColumnIntro()
         column.column_id = course_intro['id']
         column.column_title = course_intro['column_title']
         column.author_name = course_intro['author_name']
         column.column_intro = course_intro['column_intro']
         column.column_cover = course_intro['column_cover']
         column.column_type = course_intro['column_type']
         column.update_frequency = course_intro['update_frequency']
         column.is_finish = course_intro['is_finish']
         column.had_sub = course_intro['had_sub']
         column.articles = json.dumps(course_intro['articles'])
         column.save()
         logger.info("save column intro to cache, column_title={}".format(
             course_intro['column_title']))
     except Exception:
         logger.error('ERROR: {}'.format(traceback.format_exc()))
Exemple #7
0
    def _post(self,
              url: str,
              data: dict = None,
              **kwargs) -> requests.Response:
        with contextlib.suppress(Exception):
            for k in ['cellphone', 'password']:
                if data and k in data:
                    data[k] = 'xxx'
            logger.info("request geektime api, {}, {}".format(url, data))

        headers = kwargs.setdefault('headers', {})
        headers.update({
            'Content-Type': 'application/json',
            'User-Agent': self._ua
        })
        resp = requests.post(url, json=data, timeout=10, **kwargs)
        resp.raise_for_status()

        if resp.json().get('code') != 0:
            raise GkApiError('geektime api fail:' +
                             resp.json()['error']['msg'])

        return resp