@ -54,21 +54,20 @@ class AcfunService {
CURLOPT_POSTFIELDS => $param ,
CURLOPT_HTTPHEADER => array (
'authority: www.acfun.cn' ,
'accept: application/json, text/plain, */*' ,
'accept: */*' ,
'accept-language: zh-CN,zh;q=0.9' ,
'cache-control: no-cache' ,
'content-type: application/x-www-form-urlencoded' ,
'cookie: csrfToken=Y66_80DyOUzh3300_JppG-lj; _did=web_27335482609AC197; cur_req_id=602812808A57D014_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=602812808A57D014_self_2d45c537a4f93b4689463857c3114dd1_0; webp_supported=%7B%22lossy%22%3Atrue%2C%22lossless%22%3Atrue%2C%22alpha%22%3Atrue%2C%22animation%22%3Atrue%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1690949379; lsv_js_player_v2_main=e4d400; stochastic=dnU5a2sxM3I2YWM%3D; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScJE3kMWPZFp8HUJuLyT60kKBKFKCtLbYyK8VmCkHqWfZ4HLiGoLg9Rv4F5ezMd-7rnq8oZ088XIoXeHI5HnUaxrN_0Pbs7WVWDqs-3DpYE07TcS82E_kPgwgTFAwt9jh7xc91o_Q-_v3tSAEUthCwuwaEtg7AkwMUtojw7sGpJwKYwEO5CIgK5Hn30lT3kxo9l7lM_fTFK8dfqhTI0f3HEIrFvgs8bMoBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=8fb77d89b7c29b47c62cfbc6d82c23d82f7b; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1690949398' ,
'origin: https://www.acfun.cn' ,
'cookie: csrfToken=cxz9Oe21WoDFZYl3TTHsqv4k; _did=web_388385460DFDFC9F; cur_req_id=361821796955B69A_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=361821796955B69A_self_2d45c537a4f93b4689463857c3114dd1_0; webp_supported=%7B%22lossy%22%3Atrue%2C%22lossless%22%3Atrue%2C%22alpha%22%3Atrue%2C%22animation%22%3Atrue%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1697170205; lsv_js_player_v2_main=e4d400; stochastic=c2szYnRlbHpsdG0%3D; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScCbmhGY2J7R1vWjSV-QGrsoKtJx3rWoEnadNCedw4Frwasg3QtAfH3WfrmCWMFIkC8j7ORv5Dfl2hSC6eE46rfOkBfaOwno8j8HD0XMY3kuKz2BJgIsAY5oiupe5C1VDC15amEd4bdYc_8slFoQSZMgaEv_ytBX1SUzuojzfT3qKAFJ3CCIg9IVUrx5JUPvQr3rPObqfAyMxwxqHLA2RhVPw9b5JTEMoBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=bf8ae1f2b79e479172ecaa3a893ee6045952; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; safety_id=AAKWI536cb7ZEaWk_4cwOlug; _did=web_388385460DFDFC9F; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1697170267' ,
'pragma: no-cache' ,
'referer: https://www.acfun.cn/member/favourite ' ,
'sec-ch-ua: "Not/A)Brand";v="99", "Google Chrome";v="115", "Chromium";v="115 "' ,
'referer: https://www.acfun.cn/member/' ,
'sec-ch-ua: "Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117 "' ,
'sec-ch-ua-mobile: ?0' ,
'sec-ch-ua-platform: "macOS"' ,
'sec-fetch-dest: empty' ,
'sec-fetch-mode: cors' ,
'sec-fetch-site: same-origin' ,
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36' ,
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' ,
'x-requested-with: XMLHttpRequest' ,
),
));
@ -133,7 +132,7 @@ class AcfunService {
}
Log :: info ( $item [ 'title' ] . " ( " . $item [ " from_up_name " ] . " ).mp4 " . " does not exists to download " );
// exit;
$downloadResult = shell_exec ( 'cd "' . $innerDir . '" && you-get https://www.acfun.cn/v/ac' . $item [ " content_id " ]);
$downloadResult = shell_exec ( 'cd "' . $innerDir . '" && python -m youtube_dl https://www.acfun.cn/v/ac' . $item [ " content_id " ]);
Log :: info ( $downloadResult );
$item [ " is_downloaded " ] = 1 ;
$item -> save ();
@ -194,18 +193,21 @@ class AcfunService {
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1 ,
CURLOPT_CUSTOMREQUEST => 'GET' ,
CURLOPT_HTTPHEADER => array (
'authority: m.acfun.cn' ,
'pragma: no-cache' ,
'cache-control: no-cache' ,
'upgrade-insecure-requests: 1' ,
'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' ,
'accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9' ,
'sec-fetch-site: none' ,
'sec-fetch-mode: navigate' ,
'sec-fetch-user: ?1' ,
'sec-fetch-dest: document' ,
'authority: www.acfun.cn' ,
'accept: */*' ,
'accept-language: zh-CN,zh;q=0.9' ,
'cookie: _did=web_492135297EB70FE5; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScMqMOf7IIDgLFifcwDByiCz1Wv6zcyhwUzxFnkKxtITs0jGXUUuLWqDsl-7NGWvWwo5AcSoY2-Kjd3CZOXY7PNERtpJIdfyEJ4AFL7nlbdkjI_V_uUanyorcfQ7kaiWNig2_E6FVh7O8nRoGss5vf9saErqF0TDd7uDbNNp-mP7P0DOW_CIg24xq_0sWM6gTjuCWKKX9x7Yg_OpB1KtIk17LYCXdAPwoBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=b9f4cda120751d7200fa5158fa16dcbcaf88; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; safety_id=AAJRRbRCoai0XjYzLsf70ktB; EGG_SESS=LeuVrD7spUl4PQfNroW9BEVd1JGguP_VHNuClb-BCn-E0TK-gvszCD8JicS8W_cFD8r34_e30N8vQt95J-5Pn7CoX6NDxA_Sm_p3S-E8GaWKY5L1qIfhe_n0viZOlC1RZN9e9wm6bVjMwJc04acrWA==; Hm_lvt_c68e829637dac3d1ad7a134d18b6064f=1641224120; webp_supported=%7B%22lossy%22%3Atrue%2C%22lossless%22%3Atrue%2C%22alpha%22%3Atrue%2C%22animation%22%3Atrue%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1641223365,1641261026; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1641261026; _did=web_492135297EB70FE5' ,
'cache-control: no-cache' ,
'cookie: csrfToken=cxz9Oe21WoDFZYl3TTHsqv4k; _did=web_388385460DFDFC9F; cur_req_id=361821796955B69A_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=361821796955B69A_self_2d45c537a4f93b4689463857c3114dd1_0; webp_supported=%7B%22lossy%22%3Atrue%2C%22lossless%22%3Atrue%2C%22alpha%22%3Atrue%2C%22animation%22%3Atrue%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1697170205; lsv_js_player_v2_main=e4d400; stochastic=c2szYnRlbHpsdG0%3D; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScCbmhGY2J7R1vWjSV-QGrsoKtJx3rWoEnadNCedw4Frwasg3QtAfH3WfrmCWMFIkC8j7ORv5Dfl2hSC6eE46rfOkBfaOwno8j8HD0XMY3kuKz2BJgIsAY5oiupe5C1VDC15amEd4bdYc_8slFoQSZMgaEv_ytBX1SUzuojzfT3qKAFJ3CCIg9IVUrx5JUPvQr3rPObqfAyMxwxqHLA2RhVPw9b5JTEMoBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=bf8ae1f2b79e479172ecaa3a893ee6045952; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; safety_id=AAKWI536cb7ZEaWk_4cwOlug; _did=web_388385460DFDFC9F; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1697170267' ,
'pragma: no-cache' ,
'referer: https://www.acfun.cn/member/' ,
'sec-ch-ua: "Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"' ,
'sec-ch-ua-mobile: ?0' ,
'sec-ch-ua-platform: "macOS"' ,
'sec-fetch-dest: empty' ,
'sec-fetch-mode: cors' ,
'sec-fetch-site: same-origin' ,
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/117.0.0.0 Safari/537.36' ,
'x-requested-with: XMLHttpRequest' ,
),
));
@ -241,24 +243,27 @@ class AcfunService {
CURLOPT_CUSTOMREQUEST => 'GET' ,
CURLOPT_HTTPHEADER => array (
'authority: m.acfun.cn' ,
'pragma: no-cache' ,
'cache-control: no-cache' ,
'user-agent: Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1' ,
'x-requested-with: XMLHttpRequest' ,
'accept: */*' ,
'sec-fetch-site: same-origin' ,
'sec-fetch-mode: cors' ,
'sec-fetch-dest: empty' ,
'referer: https://m.acfun.cn/upPage/4537972?' ,
'accept-language: zh-CN,zh;q=0.9' ,
'cookie: _did=web_280933889D060418; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScIVlVCL6FSd7r7J8EESfIrvCZWZ44ZhcldtaiMZTVnka4I1hQQGJ-ywegVxy5bWPDafabEeWEH1IA3W44p_U3tOfyvt5ivCVDiZd-OlAWMOYtj3Og-s0rdEqcqMX_NTExa2jZ3M2N3z_uZHVHghIXPkaEsDLegiAw1sTxw7mkhbBiGkpPiIgMVkL4EVoF5UUt584m8hro8yjbem-qWBoGte7yFXO89AoBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=cd58860b125ee662a0d161cff68c37e2180f; ac_userimg=https://imgs.aixifan.com/style/image/201907/uQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; _did=web_280933889D060418; csrfToken=AgVgghhXcxJW5CTDNT7kiOWY; cur_req_id=7852848870815E4E_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=7852848870815E4E_self_2d45c537a4f93b4689463857c3114dd1_0; webp_supported={"lossy":true,"lossless":true,"alpha":true,"animation":true}; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1665098925,1666089608,1667002226; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1667002226; lsv_js_player_v2_main=e4d400' ,
'cache-control: no-cache' ,
'pragma: no-cache' ,
'referer: https://m.acfun.cn/upPage/10703951?' ,
'sec-ch-ua: "Google Chrome";v="117", "Not;A=Brand";v="8", "Chromium";v="117"' ,
'sec-ch-ua-mobile: ?1' ,
'sec-ch-ua-platform: "Android"' ,
'sec-fetch-dest: empty' ,
'sec-fetch-mode: cors' ,
'sec-fetch-site: same-origin' ,
'user-agent: Mozilla/5.0 (Linux; Android 8.0.0; SM-G955U Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.141 Mobile Safari/537.36' ,
'x-requested-with: XMLHttpRequest' ,
),
));
$response = curl_exec ( $curl );
curl_close ( $curl );
// echo $response;
// echo $response;
// exit;
$replaced = str_replace ( " /*<!-- fetch-stream -->*/ " , " " , $response );
$result = json_decode ( $replaced , true );
if ( $result == null || ! array_key_exists ( " scripts " , $result )) {
@ -283,4 +288,104 @@ class AcfunService {
unset ( $result );
return $parsed ;
}
public function queryUpUsersVideosV2 ( $upId , $upName ) {
$upUrl = $this -> upBaseUrl . $upId ;
$mainQl = QueryList :: getInstance ();
$pCursor = " " ;
$page = 1 ;
$queried = 0 ;
$reqId = 1 ;
do {
$wbinfos = [];
$titles = [];
$result = $this -> requestUpPagePCApi ( $upId , $reqId , $page );
// dump($result);
if ( ! $result ) {
return ;
}
$wbinfos = $mainQl -> setHtml ( $result [ " html " ]) -> find ( " .ac-space-video " ) -> attrs ( " data-wbinfo " );
$titles = $mainQl -> setHtml ( $result [ " html " ]) -> find ( " .title " ) -> htmls ();
// dump($wbinfos);
// dump($titles);exit;
if ( count ( $wbinfos ) == 0 ) {
// code...
break ;
}
foreach ( $wbinfos as $key => $wbinfo ) {
$wbJson = json_decode ( $wbinfo , true );
AcfunVideo :: firstOrCreate (
[ " content_id " => $wbJson [ " mediaId " ]],
[
" title " => $titles [ $key ],
" from_type " => 2 ,
" from_collection_name " => " " ,
" from_up_name " => " $upName " ,
" from_up_user_id " => $upId ,
]
);
}
// $queried += $result["pageSize"];
// Log::info("current queried: " . $queried);
// if (array_key_exists("noMore", $result) || $queried > (int) $result["totalCount"]) {
// break;
// }
// if (array_key_exists("pcursor", $result)) {
// $pCursor = $result["pcursor"];
$reqId ++ ;
$page ++ ;
// } else {
// break;
// }
} while ( true );
}
public function requestUpPagePCApi ( $upId , $reqId , $page ) {
$curl = curl_init ();
if ( $upId == null ) {
return " " ;
}
$t = time () * 1000 ;
$url = " https://www.acfun.cn/u/ $upId ?quickViewId=ac-space-video-list&reqID= $reqId &ajaxpipe=1&type=video&order=newest&page= { $page } &pageSize=20&t= $t " ;
curl_setopt_array ( $curl , array (
CURLOPT_URL => $url ,
CURLOPT_RETURNTRANSFER => true ,
CURLOPT_ENCODING => '' ,
CURLOPT_MAXREDIRS => 10 ,
CURLOPT_TIMEOUT => 0 ,
CURLOPT_FOLLOWLOCATION => true ,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1 ,
CURLOPT_CUSTOMREQUEST => 'GET' ,
CURLOPT_HTTPHEADER => array (
'authority: www.acfun.cn' ,
'accept: */*' ,
'accept-language: zh-CN,zh;q=0.9' ,
'cache-control: no-cache' ,
'cookie: _did=web_388385460DFDFC9F; _did=web_388385460DFDFC9F; lsv_js_player_v2_main=e4d400; csrfToken=fjMi-0ixCRuVRpGN5Lz2s7Zo; cur_req_id=821488364D119F62_self_39ec375e04fa2b11099dd441ca3bca54; cur_group_id=821488364D119F62_self_39ec375e04fa2b11099dd441ca3bca54_0; webp_supported=%7B%22lossy%22%3Atrue%2C%22lossless%22%3Atrue%2C%22alpha%22%3Atrue%2C%22animation%22%3Atrue%7D; Hm_lvt_2af69bc2b378fb58ae04ed2a04257ed1=1699527119,1700444342; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1700444342' ,
'pragma: no-cache' ,
'referer: https://www.acfun.cn/u/1016261' ,
'sec-ch-ua: "Google Chrome";v="119", "Chromium";v="119", "Not?A_Brand";v="24"' ,
'sec-ch-ua-mobile: ?0' ,
'sec-ch-ua-platform: "macOS"' ,
'sec-fetch-dest: empty' ,
'sec-fetch-mode: cors' ,
'sec-fetch-site: same-origin' ,
'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36' ,
'x-requested-with: XMLHttpRequest' ,
),
));
$response = curl_exec ( $curl );
curl_close ( $curl );
$replaced = str_replace ( " /*<!-- fetch-stream -->*/ " , " " , $response );
$result = json_decode ( $replaced , true );
$parsedResult [ " html " ] = $result [ " html " ];
// dump($parsedResult);exit;
return $parsedResult ;
}
}