史事 - 有道小图灵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框架的第二代,依赖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的官方文档如下:
-
PYPI
-
Github项目页面
-
Github Pages官方网站