本帖最后由 1047861073 于 2020-9-26 10:10 编辑
Python版
[Python] 纯文本查看 复制代码 import re
import requests, json
url = 'https://v.douyin.com/JB7VyAw/'
api = 'https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='
header = {
'user-agent': 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 4_0 like Mac OS X; en-us) AppleWebKit/532.9 (KHTML, like Gecko) Version/4.0.5 Mobile/8A293 Safari/6531.22.7'
}
def video_url():
url = input("输入抖音链接:")
bdurl = r"http?://(?:[a-zA-Z]|[0-9]|[$-_@.&+]|[!*\(\),]|(?:%[0-9a-fA-F][0-9a-fA-F]))+"
url = re.findall(bdurl, url)
text = requests.get(url[0], headers=header)
ress = r'''(?<=share/video/).*(?=/)'''
res = re.findall(ress, text.url)
id_url = api + res[0]
urls = requests.get(id_url,headers=header)
videos = urls.json()['item_list'][0]['video']['play_addr']['url_list']
wat = videos[0].replace('wm','') # 去水印后地址
print(wat)
t = requests.get(wat,headers=header).content
with open('就是刚刚的抖音.mp4','wb') as data_file:
data_file.write(t)
input('获取成功!按回车退出........')
#print(t.text)
video_url()
PHP版
[PHP] 纯文本查看 复制代码 public function getLink(Request $request){
$url = I('url');
$pattern = '{(http|https):\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&:/~\+#]*[\w\-\@?^=%&/~\+#])?}';
preg_match($pattern,$url,$url);
if ($url){
$update['share_url'] = (string)$url[0];
}else{
$this->returnJson(0,'error',['code'=>0,'msg'=>'获取失败']);
}
$res = Db::name('log')->where('share_url',$update['share_url'])->find();
$reqData['code'] = 1;
$reqData['msg'] = '解析成功';
if (!$res){
$url = (string)$url[0];
$pattern = '{(?<=\.).*(?=\.com)}';
preg_match($pattern,$url,$type);
$type = (string)$type[0];
switch ($type){
case 'douyin':
$res = $this->douyin($url,'insert');
break;
case 'kuaishou':
$res = $this->ks($url,'insert');
break;
default:
$this->returnJson(0,'error',['code'=>0,'msg'=>'暂不支持该网站']);
break;
}
$reqData['addr'] = $res['addr_url'];
$reqData['title'] = $res['title'];
$reqData['cover'] = $res['cover'];
$reqData['is_url'] = $res['is_url'];
$this->returnJson(1,'success',$reqData);
}else{
//查询是否超过一小时,超过则更新
$over_time = time() - $res['create_time'];
if ($over_time>3600){
$url = (string)$url[0];
$pattern = '{(?<=\.).*(?=\.com)}';
preg_match($pattern,$url,$type);
$type = (string)$type[0];
if ($type=='douyin'){
$res = $this->douyin($url,'update');
}elseif ($type=='kuaishou'){
$res = $this->ks($url,'update');
}
$reqData['addr'] = $res['addr_url'];
$reqData['title'] = $res['title'];
$reqData['cover'] = $res['cover'];
$reqData['is_url'] = $res['is_url'];
$this->returnJson(1,'success',$reqData);
}else{
$reqData['addr'] = $res['addr_url'];
$reqData['cover'] = $res['cover'];
$reqData['title'] = $res['title'];
$reqData['is_url'] = $res['is_url'];
$this->returnJson(1,'success',$reqData);
}
}
}
protected function douyin($url,$action = 'insert'){
$update['share_url'] = $url;
$url = get_headers($url,true);
$url = $url['location'];
$pattern = '{(?<=share\/video\/).*(?=\/)}';
preg_match($pattern,$url,$video_id);
$video_id = $video_id[0];
$ql = QueryList::get('https://www.iesdouyin.com/web/api/v2/aweme/iteminfo/?item_ids='.$video_id);
$res = json_decode($ql->getHtml(),true);
$url = $res['item_list'][0]['video']['play_addr']['url_list'][0];
$update['title'] = $res['item_list'][0]['share_info']['share_title'];
$update['cover'] = $res['item_list'][0]['music']['cover_large']['url_list'][0];
$update['create_time'] = time();
$url = str_replace('playwm','play',$url);
$update['is_url'] = $url;
$url = get_headers($url,true);
$url = $url['location'];
$update['addr_url'] = $url;
if ($action=='insert'){
$id = Db::name('log')->insertGetId($update);
$res = Db::name('log')->where('id',$id)->find();
}else{
$res = Db::name('log')->where('share_url',$update['share_url'])->update($update);
$res = Db::name('log')->where('share_url',$update['share_url'])->find();
}
return $res;
}
php版套用了@yanwu666 的模版,十分感谢
易语言版
使用了精易模块和精易皮肤模块。
土豪通道 :
下载地址.txt
(103 Bytes, 下载次数: 38)
平民通道:链接: https://pan.baidu.com/s/1K8I4IyinOJvbqdNco4GVBA 提取码: zps2
觉得好的大哥给个评分吧↓↓↓
谢谢~~~ |