Source code for zhihu.models.question

# encoding: utf-8

import re

from ..auth import need_login
from ..error import ZhihuError
from . import Model
from ..url import URL


[docs]class Question(Model): def __init__(self, id=None, url=None): id = id if id is not None else self._extract_id(url) if not id: raise ZhihuError("没有指定问题的id或者url") self.id = str(id) super(Question, self).__init__() @staticmethod def _extract_id(url): """ 从url中提取目标id """ pattern = re.compile("https://www.zhihu.com/question/(\d+).*?") match = pattern.search(url) return match.group(1) if match else None # def _execute(self, method="post", url=None, data=None, **kwargs): # super(Question, self)._execute(method=method, url=url, data=data, **kwargs) @need_login def follow_question(self, **kwargs): """关注某问题""" r = self._execute(url=URL.follow_question(self.id), **kwargs) if r.ok: return r.json() else: raise ZhihuError("操作失败:%s" % r.text) @need_login def unfollow_question(self, **kwargs): """取消关注某问题""" r = self._execute(method="delete", url=URL.unfollow_question(self.id), **kwargs) if r.ok: return {'is_following': False} else: raise ZhihuError("操作失败:%s" % r.text)