利用腾讯云函数做蓝奏云解析API
前言
忽然在网上看到网友说tenapi的蓝奏云解析不能用了,恰巧又在B站上看到某up主的相关文章,一时起意就用up主的代码稍加更改,改造了个能在腾讯云函数跑起来的版本。
博主原文链接:https://www.bilibili.com/read/cv12429600/
云函数压缩包资源:待会儿上传
阅读指南
Tips
:如果你只是想搭建一个类似接口而不在乎他的原理,那么这段文字(废话)可以跳过了,后面有你想要的详细步骤,快去看吧
本文用到的编程知识:python,flask
本次搭建需要的资源你:腾讯云函数(快速flask示例)
代码
话不多说先看看代码吧
import requests
import re
import json
from flask import Flask,request,jsonify
class lanzouyun:
# 博主链接:https://www.bilibili.com/read/cv12429600/
def __init__(self):
self.headers = {
'accept-language': 'zh-CN',
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
'Referer': 'https://www.lanzoui.com/'
}
def lzy(self, url):
html = requests.get(url=url, headers=self.headers).content.decode('utf-8')
# 文件信息
name = str(re.compile("<title>.*?- 蓝奏云").findall(html)).replace("['<title>","").replace(" - 蓝奏云']","")
author = str(re.compile("分享用户:</span><font>.*?</font>").findall(html)).replace("['分享用户:</span><font>","").replace("</font>']","")
time = str(re.compile("上传时间:</span>.*?<br>").findall(html)).replace("['上传时间:</span>","").replace("<br>']","")
size = str(re.compile("文件大小:</span>.*?<br>").findall(html)).replace("['文件大小:</span>","").replace("<br>']","")
# 获取链接
fn = str(re.compile('src="(/fn?[^"]{10,})"', re.S).findall(html)).replace("['/", '').replace("']", '')
html = requests.get(url="https://www.lanzoui.com/" + fn, headers=self.headers).content.decode('utf-8')
sign = str(re.compile('[0-9a-zA-Z_]{70,}_c_c', re.S).findall(html)).replace("['", '').replace("']", '')
action = re.search("action':'(.*?)'", html).group(1)
html = requests.post(url="https://www.lanzoui.com/" + re.search("url : '/(.+?)'", html).group(1),
data={'action': action, 'sign': sign, 'ves': '1'}, headers={
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.105 Safari/537.36',
'Referer': 'https://www.lanzous.com/' + fn
})
url = requests.get(json.loads(html.text)['dom'] + '/file/' + json.loads(html.text)['url'],
allow_redirects=False, headers=self.headers)
return name,author,time,size,url.next.url
app = Flask(__name__)
@app.route('/')
def index():
source_url = request.args.get('url')
if not source_url:
returnJson = {
"code": 201,
"msg": "请输入需要解析的蓝奏链接"
}
return jsonify(returnJson)
lzy = lanzouyun()
name,author,time,size,url = lzy.lzy(source_url)
returnJson = {
"code": 200,
"data": {
"name": name,
"author": author,
"time": time,
"size": size,
"url": url
}
}
return jsonify(returnJson)
if __name__ == "__main__":
app.run(host='0.0.0.0',port=9000)
搭建指南
第一步
你需要一个腾讯云账户,然后进入它的云函数界面选择:函数服务–》新建地址:https://console.cloud.tencent.com/scf/index
第二步
选择模板创建,点第二个Flask框架模板,继续点下一步
第三步
什么都不需要管,直接滑到最后,同意协议然后点完成
第四步
进入到图示界面,这时候函数准备好了,需要你上传代码部署了,有两种方式先说第一种
复制上面的代码覆盖掉原来的app.py文件里的内容,之后点开终端–》新终端,打开一个终端,在其中输入python3 -m pip install requests回车,安装requests库依赖,再点击部署就完成了
第二种方式,下载作者提供的云函数zip包,选择本地上传zip包,上传好后,点击部署即可!
恭喜你完成部署了
API使用
api调用方式为
函数地址?url=蓝奏云地址
比如说博主部署完云函数地址是https://service-ps0ygkto-1523487456.gz.apigw.tencentcs.com/release/
想要解析的蓝奏云地址为:https://yoyodadada.lanzouw.com/i3dy70h
那么调用地址是:https://service-ps0ygkto-1523487456.gz.apigw.tencentcs.com/release/?url=https://yoyodadada.lanzouw.com/i3dy70h
嗯你的云函数地址在,页面下滑就能看到喽
API返回
接下来说一下接口的返回
返回数据均为json格式,
成功返回示例
{
"code": 200,
"data": {
"name": "文件名",
"author": "分享的作者",
"time": "上传日期",
"size": "文件大小",
"url": "文件直链下载地址"
}
}
失败返回示例(不给url的情况)
{
"code": 201,
"msg": "请输入需要解析的蓝奏链接"
}
结束语
到此结束了,辛苦码字不易,如果文章对你有所帮助的话希望能顺手点赞收藏哦,
如果有什么问题也可以评论或者私信我,
最后,感谢你能看到这儿,你的鼓励我收到了也会记在心里的!