跳转至

史事 - 有道小图灵API框架的三代演变

本章节所记述的史料部分来源于《图灵维基》(github版)的相关章节

TuringIO —— API框架的第一代

2022年6月,在521后危机混乱期期间,@冰梨开发了名为TuringIO的Python有道小图灵API框架,TuringIO基于Python编程语言中广泛使用的request库,@冰梨在对其进行编写时第一次发现了简化有道小图灵Cookie登录凭证的传入方法。此后,@冰梨放弃了对TuringIO的更新,但@qqcd继承了他的项目,重命名为TuringAPI。TuringAPI在此后继续进行更新,并发布了名为“icodeapi”的新版本,在此后发生的下北泽ARO战争等事件期间。icodeapi beta v0.3发挥了决定事件走向的重要作用。TuringIO是有道小图灵API框架的第一代版本,开创了有道小图灵API框架三代演变的先河。@qqcd在《图灵维基》(github版)中对TuringIO进行了高度评价,称其“是划时代的项目,意义重大”。TuringIO的全部源码引用如下:

TuringIO的全部代码,点击并展开后向下单击鼠标滑轮,可左右移动查看视角。
__init__.py
import requests
import json
import warnings


class LoginWarning(Warning):
    """Cannot login"""


def strcookies_to_dict(strcookies):
    return {i.split("=", 1)[0].strip(): i.split("=", 1)[-1].strip() for i in strcookies.split(";")}


class Turing:
    def __init__(self, cookie=None):
        r'''
        传入一个cookie字典登录小图灵。
        经过检测,只传入DICT_PERS一个参数即可登录小图灵
        例如:

        >>> import turingio
        >>> XiaoMing = turingio.Turing({'DICT_PERS': '******'})
        >>> XiaoMing.updateIntro("我最帅")

        登录后会进行检测
        如果登录失败会抛出LoginWarning
        '''
        self.__session = requests.Session()
        self.logincode = None
        if cookie != None:
            self.__session.cookies = requests.utils.cookiejar_from_dict(
                cookie)
        self.checklogin()
        self.__session.headers['User-Agent'] = "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198"
        self.__session.headers['Host'] = "icodeshequ.youdao.com"
        self.__session.headers['Referer'] = "https://icodeshequ.youdao.com/"
        self.__session.headers['Sec-Fetch-Dest'] = "empty"
        self.__session.headers['Sec-Fetch-Mode'] = "cors"
        self.__session.headers['Sec-Fetch-Site'] = "same-origin"

    def checklogin(self):
        url = 'https://icodecontest-online-api.youdao.com/api/user/info'
        headers = {
            'Accept': 'application/json, text/plain, */*',
            'Accept-Encoding': 'gzip, deflate, br',
            'Accept-Language': 'zh-CN,zh;q=0.9,en;q=0.8',
            'Host': 'icodecontest-online-api.youdao.com',
            'Origin': 'https://icodeshequ.youdao.com',
            'Referer': 'https://icodeshequ.youdao.com/',
            'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198'
        }
        check = self.__session.get(url=url, headers=headers).json()
        print(check)
        if check['code'] == 0:
            self.login = 'OK'
            self.encryptionId = check['data']['encryptionUserId']
            self.Id = check['data']['userId']
            self.name = check['data']['name']
            self.image = check['data']['image']
            self.permissions = check['data']['permissions']
            self.hasCourse = check['data']['hasCourse']
            self.userIdentity = check['data']['userIdentity']
            return(True)
        else:
            print(check)
            warnings.warn("Cannot Login", LoginWarning)
            return(False)

    def updateIntro(self, text):
        updateIntro = self.__session.post(
            url="https://icodeshequ.youdao.com/api/user/updateIntro",
            data=text.encode('utf-8'))
        #self.code = updateIntro.status_code
        return updateIntro.json()

#
#
#       请填入您的cookie在双引号内
print(strcookies_to_dict(''))

TuringAPI —— API框架的第二代

2022年6月,有道小图灵第一代API框架TuringIO由@冰梨开始开发,然而此后,@冰梨放弃了对TuringIO的更新,但受到@冰梨的启发,@qqcd继承了@冰梨的TuringIO项目,并于2022年9月重命名为TuringAPI。TuringAPI是有道小图灵API框架的第二代1,依赖Python编程语言中广泛使用的urllib3库,支持并发式运行。@qqcd从2022年7月起开始对TuringAPI进行开发,曾预计2022年8月15日上线并“售卖基础版及高级版”。然而,收费计划后来搁置。2022年9月,@qqcd认为TuringAPI的代码过于冗杂,于是决定重构整个项目,并听从冰梨意见,将项目名称由原先沿用的TuringIO,正式改名为TuringAPI。

在@qqcd的长期更新下,TuringAPI逐步拥有了较为完整的功能,但对异步操作的支持仍然非常一般,没有类型提示,还具有未上线PyPI的重要问题。2022年11月25日,TuringAPI v1.0.0发布,但从此再未发布任何更新。在正式版发布一年后,TuringAPI才正式上线PyPI(Python官方模块下载渠道)页面,且由于PyPI中已经有了一个turingAPI模块,导致模块名被占用,因此TuringAPI在PyPI网站中只能叫做FinalTuringAPI。2023年10月2日,(有道小图灵第三代API框架)icodeapi v1.0.0发布,TuringAPI此后正式宣布停止支持。

TuringAPI的Gitbook官方文档链接:https://xbz-studio.gitbook.io/turingapi/

icodeapi —— API框架的第三代

icodeapi是有道小图灵第三代API框架,仍然使用Python为编写语言,其由@qqcd(@下北泽萌萌梦幻神兽)和其领导的下北泽工作室所共同开发,功能强大,使用简单。在beta阶段时,icodeapi未上线PyPI网站,需通过有道小图灵未发布作品的api页面进行下载。在下北泽ARO战争等事件期间。(icodeapi的beta版本)icodeapi beta v0.3发挥了决定事件走向的重要作用。(下北泽ARO战争结束后的)2023年10月2日,icodeapi v1.0.0(正式版)正式发布并上线PyPI网站,icodeapi的作者@下北泽萌萌梦幻神兽对此进行评价,在表达庆贺的同时称其为“战后庆祝”,凸显API框架在下北泽ARO战争期间的重要作用。

根据icodeapi的Github Pages官方网站所述,icodeapi是一个强大的、快速的、支持同步和异步操作的有道小图灵社区API框架,并可以使用Python通用模块安装工具pip进行安装。icodeapi只能运行在Python版本为3.10及以上的版本中,这意味着安装了诸如win7等低版本操作系统的电脑将无法使用icodeapi(此类电脑无法安装Python 3.10版本及以上)。icodeapi依赖httpx, urllib3, aiofiles三个Python知名模块进行工作。icodeapi在上线后,曾先后发布五个重要版本更新。2024年1月18日,icodeapi进行了其最后一次版本更新,此后,@下北泽萌萌梦幻神兽宣布,由于icodeapi更新的终结,他将退站并全面停止在有道小图灵的活跃。

icodeapi的官方文档如下:

  1. PYPI

  2. Github项目页面

  3. Github Pages官方网站


  1. @下北泽萌萌梦幻神兽个人认为,TuringAPI是有道小图灵API框架的第一代,icodeapi是有道小图灵API框架的第二代