如何利用DeviantArt API检测Deviation是否包含“Created using AI tools”免责声明及替代接口咨询
如何通过DeviantArt API检测作品是否带有AI工具创作声明?
我最近在尝试用DeviantArt API判断某件作品(Deviation)是否带有「Created using AI tools」的免责声明。我已经写了Python代码完成授权,并且调用了deviation/metadata接口获取扩展元数据,但返回的响应里完全找不到这个AI声明的信息。
我的代码如下:
import requests import os # Authorize url = "https://www.deviantart.com/oauth2/token"; params = { 'grant_type': 'client_credentials', 'client_id': os.environ['client_id'], 'client_secret': os.environ['client_secret'], } response = requests.get(url, params=params) access_token = response.json().get("access_token") # Get deviation metadata url = 'https://www.deviantart.com/api/v1/oauth2/deviation/metadata' params = { 'access_token': access_token, 'deviationids': {'EBA58C48-2D63-D8D4-8FE1-214FDCD39A65'}, 'ext_submission': 'yes', } response = requests.get(url, params=params) print(response.text)
返回的响应内容:
{"metadata":[{"deviationid":"EBA58C48-2D63-D8D4-8FE1-214FDCD39A65","printid":null,"author":{"userid":"EF857E1E-E23F-8F8C-E41A-BAD53080D05E","username":"lizschnabel","usericon":"https:\/\/a.deviantart.net\/avatars\/l\/i\/lizschnabel.jpg?4","type":"premium"},"is_watching":false,"title":"Recon Squad and old SSR Intruder Pods","description":"","license":"No License","allows_comments":true,"tags":[{"tag_name":"ai","sponsored":false,"sponsor":""},{"tag_name":"sciencefiction","sponsored":false,"sponsor":""},{"tag_name":"futurewarfare","sponsored":false,"sponsor":""}],"is_favourited":false,"is_mature":false,"submission":{"creation_time":"2023-11-25T08:07:44-0800","category":"","file_size":"5.6 MB","resolution":"3600x2152","submitted_with":{"app":"DeviantArt","url":"https:\/\/www.deviantart.com"}},"can_post_comment":false}]}
请问是否存在其他API接口可用于检测Deviation是否带有"Created using AI tools"免责声明?
解决方案:使用deviation/info接口并指定ext_ai_attribution参数
你当前用的deviation/metadata接口确实不包含AI创作声明的字段,得换成deviation/info接口,而且必须加上ext_ai_attribution: 'yes'这个参数才能拿到相关信息。
修改后的代码示例:
import requests import os # 授权流程保持不变 url = "https://www.deviantart.com/oauth2/token" params = { 'grant_type': 'client_credentials', 'client_id': os.environ['client_id'], 'client_secret': os.environ['client_secret'], } response = requests.get(url, params=params) access_token = response.json().get("access_token") # 替换为deviation/info接口 url = 'https://www.deviantart.com/api/v1/oauth2/deviation/info' params = { 'access_token': access_token, 'deviationids': 'EBA58C48-2D63-D8D4-8FE1-214FDCD39A65', # 这里改成字符串格式,原代码的集合可能导致参数解析异常 'ext_ai_attribution': 'yes', # 必须加这个参数才会返回AI声明数据 } response = requests.get(url, params=params) print(response.json())
关键说明:
- 接口选择:
deviation/info是专门用来获取作品详细信息的接口,包含AI创作声明这类扩展元数据,而metadata接口只返回基础元数据。 - 必填参数:
ext_ai_attribution: 'yes'是触发返回AI声明字段的开关,不加的话不会返回相关内容。 - 参数格式:
deviationids需要传字符串格式的ID,原代码里用集合{'xxx'}可能会导致请求参数解析错误,建议改成字符串。
调用成功后,你会在返回的JSON响应里看到ai_attribution字段,结构大概是这样:
"ai_attribution": { "disclaimer": "Created using AI tools", "tools": [ {"name": "MidJourney", "version": "v5.2"} ] }
内容的提问来源于stack exchange,提问作者Stevoisiak




