抖音视频解析/图集解析

链接https://v.douyin.com/ygSsq1X8cH8/解析结果:

{ "code": 0, "msg": "获取成功", "data": { "author": { "name": "赵国豪", "avatar": "https://p3.douyinpic.com/aweme/100x100/aweme-avatar/tos-cn-i-c9aec8xkvj_5aa59443a73a464fae4982aaeb28143e.jpeg?from=327834062", "id": "zgh1438", "signature": "《无渊烬》作者“我葬人间十万魂 无人葬我心头雪”\n“无团队 只拍自己想拍的 写自己想写的”\n生活号@赵国豪。" }, "music": { "title": "@赵国豪创作的原声一赵国豪", "author": "赵国豪", "duration": 63, "url": "" }, "count": { "like": 139293, "comment": 1780, "share": 13872, "collect": 4726 }, "desc": "“别回头 我一直都在” #反派", "cover": "https://p26-sign.douyinpic.com/tos-cn-i-0813c001/ogxotHASAAAfA9iHgEFTFMDDbfPXaBzEAACAXI~tplv-dy-resize-walign-adapt-aq:720:q75.webp?lk3s=138a59ce&x-expires=1748098800&x-signature=lcvQ8GCc3mKTliJN8t%2B7Va%2Bbhvk%3D&from=327834062&s=PackSourceEnum_DOUYIN_REFLOW&se=false&sc=cover&biz_tag=aweme_video&l=20250510231008D0EEC9C659F7DB51ABB4", "tag": "#反派 " }, "type": "视频" }

这个可以免去所有验证,根本原理是解析html嵌套的json数据

写的比较烂,其实能运行就行(bushi

代码如下:

<?php
header("Content-Type:application/json;");
 
$url = $_GET["url"]?:exit(json_encode(array("code"=>-1,"msg"=>"未输入url参数"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES));
 
//echo loc("https://www.douyin.com/aweme/v1/play/?video_id=".$id[0]);
 
$url = getUrl(loc($url),"ttwid=1%7Chf7h6KY-9QJzBZPLTeMn9TvQ3FjVPiUOGO1TvdN2ypk%7C1727744584%7Ca13c6d514bfb4de5703116a1278df7d0e7ac2331a3ea22dc5a6d5a5416916944;_tea_utm_cache_1243={%22utm_source%22:%22copy%22%2C%22utm_medium%22:%22android%22%2C%22utm_campaign%22:%22client_share%22}");
//preg_match_all('/?video_id=(.*?)&/', $url, $id);
$position = strpos($url, "window._ROUTER_DATA = ")+22;
$substring = substr($url, $position);
$position2 = strpos($substring, "}</script>")+1;
$substring2 = substr($substring, $position2);
$substring3 = str_replace($substring2,"",$substring);
$json = json_decode($substring3,true);
$item1 = $json["loaderData"]["video_(id)/page"];
$item2 = $json["loaderData"]["note_(id)/page"];
if($item1){
$item=$item1["videoInfoRes"]["item_list"][0];
$desc = $item["desc"];
$name = $item["author"]["nickname"];
$signature = $item["author"]["signature"];
$video = loc("https://www.douyin.com/aweme/v1/play/?video_id=".$item["video"]["play_addr"]["uri"]."&ratio=1040p");
$cover=$item["video"]["cover"]["url_list"][0];
$avatar=$item["author"]["avatar_medium"]["url_list"][0];
$unique_id=$item["author"]["unique_id"];
$duration=$item["music"]["duration"];
$music_author=$item["music"]["author"];
$title=$item["music"]["title"];
$text_extra=getText_Extra($item["text_extra"]);
$like=$item["statistics"]["digg_count"];
$comment=$item["statistics"]["comment_count"];
$share=$item["statistics"]["share_count"];
$collect=$item["statistics"]["collect_count"];
echo json_encode(array("code"=>0,"msg"=>"获取成功","data"=>array("author"=>array("name"=>$name,"avatar"=>$avatar,"id"=>$unique_id,"signature"=>$signature),"music"=>array("title"=>$title,"author"=>$music_author,"duration"=>$duration,"url"=>""),"count"=>array("like"=>$like,"comment"=>$comment,"share"=>$share,"collect"=>$collect),"desc"=>$desc,"cover"=>$cover,"tag"=>$text_extra),"type"=>"视频"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
}else if($item2){
$item=$item2["videoInfoRes"]["item_list"][0];
$desc = $item["desc"];
$name = $item["author"]["nickname"];
$signature = $item["author"]["signature"];
//$video = "https://www.douyin.com/aweme/v1/play/?video_id=".$item["video"]["play_addr"]["uri"]."&ratio=1040p";
$music = $item["video"]["play_addr"]["uri"];
$cover=$item["video"]["cover"]["url_list"][0];
$avatar=$item["author"]["avatar_medium"]["url_list"][0];
$unique_id=$item["author"]["unique_id"];
$duration=$item["music"]["duration"];
$music_author=$item["music"]["author"];
$title=$item["music"]["title"];
$text_extra=getText_Extra($item["text_extra"]);
$like=$item["statistics"]["digg_count"];
$comment=$item["statistics"]["comment_count"];
$share=$item["statistics"]["share_count"];
$collect=$item["statistics"]["collect_count"];
echo json_encode(array("code"=>0,"msg"=>"获取成功","data"=>array("author"=>array("name"=>$name,"avatar"=>$avatar,"id"=>$unique_id,"signature"=>$signature),"music"=>array("title"=>$title,"author"=>$music_author,"duration"=>$duration,"url"=>$music),"count"=>array("like"=>$like,"comment"=>$comment,"share"=>$share,"collect"=>$collect),"desc"=>$desc,"cover"=>$cover,"tag"=>$text_extra,"images"=>getImage($item["images"])),"type"=>"图集"),JSON_UNESCAPED_UNICODE|JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
}
 
function loc($url){
    $loc = get_headers($url, true)['Location'][0];
    return $loc;
}
function getUrl($url,$cookie){
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('User-Agent:Mozilla/5.0 (Linux; Android 13; V2166BA Build/TP1A.220624.014; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/121.0.6167.71 MQQBrowser/6.2 TBS/047205 Mobile Safari/537.36 V1_AND_SQ_9.0.75_6808_YYB_D QQ/9.0.75.17920 NetType/4G WebP/0.3.0 AppId/537230737 Pixel/1080 StatusBarHeight/100 SimpleUISwitch/0 QQTheme/1000 StudyMode/0 CurrentMode/0 CurrentFontScale/1.0 GlobalDensityScale/0.90000004 AllowLandscape/false InMagicWin/0','Cookie:'.$cookie,'Host:www.iesdouyin.com'));
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
//curl_setopt($ch, CURLOPT_COOKIE,$cookie);
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
 
function getText_Extra($data){
if(!$data||count($data)==0){
return "";
}else{
$text="";
foreach($data as &$item){
$text.="#".$item["hashtag_name"]." ";
}
return $text;
}
}
function getImage($data){
if(!$data||count($data)==0){
return null;
}else{
foreach($data as &$item){
$array[]=$item["url_list"][0];
}
return $array;
}
}
 
?>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值