diff --git a/app/Console/Commands/AcfunScrape.php b/app/Console/Commands/AcfunScrape.php index eb1d5e1..ce4a201 100644 --- a/app/Console/Commands/AcfunScrape.php +++ b/app/Console/Commands/AcfunScrape.php @@ -39,6 +39,8 @@ class AcfunScrape extends Command public function handle() { $service = new AcfunService(); +// $service->requestUpPageApi(4537972);exit; +// $service->queryUpUsersVideos(4537972);exit; $service->downloadVideo(); // } diff --git a/app/Console/Commands/RecordDir.php b/app/Console/Commands/RecordDir.php index 8266828..0be3f0b 100644 --- a/app/Console/Commands/RecordDir.php +++ b/app/Console/Commands/RecordDir.php @@ -5,6 +5,8 @@ namespace App\Console\Commands; use App\ImageRecord; use Illuminate\Console\Command; use App\Services\DirService; +use Illuminate\Database\QueryException; +use Illuminate\Support\Facades\Log; class RecordDir extends Command { @@ -49,17 +51,23 @@ class RecordDir extends Command continue; } $fileInfo = pathinfo($file); - $imageRecord = new ImageRecord(); - $imageRecord->path = str_replace($path, "", $fileInfo["dirname"]); - $imageRecord->name = $fileInfo["basename"]; - $imageRecord->type = 2; -// dump($imageRecord->getAttributes()); -// $i++; -// if ($i > 100) { -// exit; -// } -// continue; - $imageRecord->save(); + try { + $imageRecord = new ImageRecord(); + $imageRecord->path = str_replace($path, "", $fileInfo["dirname"]); + $imageRecord->name = $fileInfo["basename"]; + $imageRecord->type = 2;// dump($imageRecord->getAttributes()); + // $i++; + // if ($i > 100) { + // exit; + // } + // continue; + $imageRecord->save(); + } catch (QueryException $e) { + if (!str_contains($e->getMessage(), "Duplicate entry")) { + Log::error($e->getMessage()); + } + } + unset($imageRecord); } } diff --git a/app/Services/AcfunService.php b/app/Services/AcfunService.php index f557b3e..96df74b 100644 --- a/app/Services/AcfunService.php +++ b/app/Services/AcfunService.php @@ -7,12 +7,17 @@ namespace App\Services; use App\AcfunVideo; use Illuminate\Support\Arr; use Log; +use QL\QueryList; class AcfunService { private $CollectionUrl = "https://www.acfun.cn/rest/pc-direct/favorite/dougaList"; + private $upBaseUrl = "https://m.acfun.cn/upPage/"; + + + public function queryCollectionVideos() { for ($i = 1; $i < 100; $i++) { @@ -122,7 +127,7 @@ class AcfunService public function downloadVideo() { - $innerDir = "/Volumes/intel660p/video/mv/acfun"; + $innerDir = "/Volumes/Crucial X6/Video/acfun"; $list = AcfunVideo::all(); $files = scandir($innerDir); @@ -137,11 +142,144 @@ 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 .'" && annie https://www.acfun.cn/v/ac' . $item["content_id"]); Log::info($downloadResult); $item["is_downloaded"] = 1; $item->save(); } } + public function queryUpUsersVideos($upId) + { + $upUrl = $this->upBaseUrl . $upId; + $mainQl = QueryList::getInstance(); + $pCursor = ""; + $queried = 0; + do { + $result = $this->requestUpPageApi($upId, $pCursor); + $resourceIds = $mainQl->setHtml($result["html"])->find(".video-item")->attrs("resource-id"); + $titles = $mainQl->setHtml($result["html"])->find(".video-name")->htmls(); + dump($resourceIds); + foreach ($resourceIds as $key => $resourceId) { + AcfunVideo::firstOrCreate(["content_id" => $resourceId], + [ + "title" => $titles[$key], + "from_type" => 2, + "from_collection_name" => "", + "from_up_name" => "香菜猫饼", + "from_up_user_id" => $upId + ]); + } + $queried += $result["pageSize"]; + Log::info("current queried: " . $queried); + if ($result["noMore"] || $queried > (int)$result["totalCount"]) { + break; + } + $pCursor = $result["pcursor"]; + } while (true); + + + } + + public function requestUpPage($upId) + { + $curl = curl_init(); + + curl_setopt_array($curl, array( + CURLOPT_URL => "https://m.acfun.cn/upPage/$upId?", + 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: 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', + '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' + ), + )); + + $response = curl_exec($curl); + + curl_close($curl); + return $response; + + + } + + public function requestUpPageApi($upId, $pcursor = "") { + if ($upId == null) { + return ""; + } + $url = "https://m.acfun.cn/upPage/$upId?pagelets=video-list&reqID=4&ajaxpipe=1&userId=$upId&type=3"; + + if ($pcursor != null && $pcursor != "") { + $url .= "&pcursor=$pcursor"; + } + $url .= "&t=" . (int)(microtime(true)*1000); + + + $curl = curl_init(); + + 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: 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_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==; 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; cur_req_id=9320591763A17878_self_e9df062d443158972b38326847c62945; cur_group_id=9320591763A17878_self_e9df062d443158972b38326847c62945_0; Hm_lvt_c68e829637dac3d1ad7a134d18b6064f=1641224120,1641263656; Hm_lpvt_c68e829637dac3d1ad7a134d18b6064f=1641263656; _did=web_492135297EB70FE5' + ), + )); + + $response = curl_exec($curl); + + curl_close($curl); +// echo $response; + $replaced = str_replace("/**/", "", $response); + $result = json_decode($replaced, true); + $scripts = $result["scripts"][0]; + preg_match_all("#no_more#", $scripts, $noMore); + if (count($noMore[0]) > 0) { + dump($noMore); + $result["noMore"] = true; + } else { + preg_match_all("#\"pcursor\"\:\"(\d+)\"#", $scripts, $pcursors); + $parsed["pcursor"] = $pcursors[1][0]; + } + preg_match_all("#\"totalCount\"\:(\d+)#", $scripts, $totalCounts); + $parsed["totalCount"] = $totalCounts[1][0]; + preg_match_all("#\"videoFeedLength\"\:(\d+)#", $scripts, $pageSizes); + $parsed["pageSize"] = $pageSizes[1][0]; + $parsed["html"] = $result["html"]; + unset($result); + return $parsed; + + } + } diff --git a/app/Services/FfmpegService.php b/app/Services/FfmpegService.php index 6c38b4f..88afe96 100644 --- a/app/Services/FfmpegService.php +++ b/app/Services/FfmpegService.php @@ -116,9 +116,11 @@ class FfmpegService return; } if (Redis::sismember("unneed", $fileInfo["filename"])) { + Log::info("in uneed: " . $fileInfo["filename"]); return; } if (!$this->checkFileSize($pathFile)) { + Log::info("filesize: " . $fileInfo["filename"]); return; } if ($this->checkFileEncodeType($pathFile)) { @@ -146,6 +148,7 @@ class FfmpegService Log::info("process target file : $targetFile"); $result = shell_exec("ffmpeg -threads 4 -i ". escapeshellarg($pathFile) ." -preset ultrafast -c:v libx265 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'"); echo $result; + return; if (trim($result) == "ok") { echo "compress work done remove the file \n"; Log::info("compress work done remove the file"); @@ -250,11 +253,11 @@ class FfmpegService public function checkFileSize($file, $size = 1): bool { - if (is_file($file) && filesize($file) > 10 * 1024 * 1024) { + if (is_file($file) && filesize($file) > 1 * 1024 * 1024) { return true; } $fileSize = FileUtils::humanFilesize(filesize($file)); - echo "$file size < 10Mb filesize is $fileSize skip \n"; + echo "$file size < 1Mb filesize is $fileSize skip \n"; return false; } diff --git a/app/Services/XiurenjiService.php b/app/Services/XiurenjiService.php index ce342be..fb46801 100644 --- a/app/Services/XiurenjiService.php +++ b/app/Services/XiurenjiService.php @@ -63,16 +63,20 @@ class XiurenjiService $pageSize = 3; $items = $pageContent->find(".ina p:nth-child(2)")->texts(); $pageItems = $pageContent->find(".page a:eq(-2)")->htmls(); + $isSinglePage = false; + $pageCount = 0; if (count($pageItems) <= 0) { - dump("this album is error: ". $url); - Log::error("this album is error: " . $url); - return; + $isSinglePage = true; + $pageCount = 1; +// dump("this album is error: ". $url); +// Log::error("this album is error: " . $url); +// return; } // dump($pageItems);exit; - foreach ($items as $item) { + $item = $items[0]; // $imageNum = substr($item, strrpos($item, "[") + 1, strrpos($item, "P]") - strrpos($item, "[") - 1); // $pageCount = ceil($imageNum / $pageSize); - $pageCount = (int)$pageItems[0]; + $pageCount = $pageCount > 0 ? $pageCount : (int)$pageItems[0]; // dump("pageCount: ". $pageCount . "");exit; $slashPos = strpos($url, "XiuRen/") + 7; $dotPos = strrpos($url, "."); @@ -98,7 +102,6 @@ class XiurenjiService // dump("slashPos: " . $slashPos . " dotPos: " . $dotPos . " albumCode: ". $albumCode); // dump($item); // exit; - } } public function parseContent($dir, $pageContent, &$imageNo) diff --git a/fail.log b/fail.log index 25a3697..ba103b1 100644 --- a/fail.log +++ b/fail.log @@ -2404,3 +2404,11 @@ /Users/shixuesen/OneDrive/Pictures/instagram/cherry_quahst/ https://scontent-lax3-1.cdninstagram.com/o1/v/t16/f1/m38/A446BFBD6ED502A7309884E0DF5929A7_video_dashinit.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5iYXNlbGluZW9pbCJ9&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&vs=517909086312108_3931211438&_nc_vs=HBkcFQIYRGlnX3hwdl9lcGhlbWVyYWwvQTQ0NkJGQkQ2RUQ1MDJBNzMwOTg4NEUwREY1OTI5QTdfdmlkZW9fZGFzaGluaXQubXA0FQACyAEAKAAYABsBiAd1c2Vfb2lsATEVAAAmluXyiq%2FY0z8VAigCQzMsF0ATMzMzMzMzGBVkYXNoX2Jhc2VsaW5lb2lsXzVfdjERAHXoBwA%3D&_nc_rid=5721fa51f9&ccb=9-4&oe=61BA734B&oh=00_AT96zUVpG7fv3FPmfoLsYRXUUsgTQtfSF2GYCymIe34SkA&_nc_sid=bab638 /Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/269789502_640795550688030_6547086535616069361_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=nwhRj_yUwh8AX8R3V6F&edm=APv5SkIBAAAA&ccb=7-4&ig_cache_key=MjczNTczNjAyNzcyMzE3NjAxMQ%3D%3D.2-ccb7-4&oh=00_AT-BgQgxKQcKcohqYtQNkcvuwVuwA8C_e8lk-OwvBFWznQ&oe=61CF0A16&_nc_sid=7479f6 /Users/shixuesen/OneDrive/Pictures/instagram/tngnlo/ https://scontent-lax3-2.cdninstagram.com/v/t50.16885-16/10000000_1179129612861553_5218515111065676073_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmJhc2VsaW5lIn0&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=Yx_liWyB1EMAX_61oti&edm=ABmJApABAAAA&vs=1351693768591093_990667624&_nc_vs=HBksFQAYJEdJQ1dtQUJ4QUxpQmFUQUVBQ25wRXpyWTQydElidlZCQUFBRhUAAsgBABUAGCRHQkdJSFJEMEhpSUd0bXNEQUwzQnpnMDhtblFaYnZWQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa%2B6OHG5MrIPxUCKAJDMywXQExVP3ztkWgYEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&_nc_rid=be13d5d6f0&ccb=7-4&oe=61CDE5F5&oh=00_AT9v2q12IjXPURvOeUBxFQgNggGX2H7PxT-3g7SGWUSaLw&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/271263751_605258770535584_8577345649630696487_n.jpg?se=7&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=UoQgHctPdIIAX_0teDD&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MTg5NDYzNjgzNg%3D%3D.2-ccb7-4&oh=00_AT8oWzj0DnylLB6kFKYuRejESuGLqA_YFembTPPNGj47Tg&oe=61D9E370&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/271031903_1078536436272556_7259183293266753042_n.jpg?se=7&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=4brIBakMdqQAX8bn4Rj&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MTg5NDY4MDA4OA%3D%3D.2-ccb7-4&oh=00_AT8Q6HeUQJNHLYqMY9-o1F7IW7zk1eo_uYsYJOXBBBHHwg&oe=61D9AF35&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/270202739_496522148462701_8177899831261518536_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=v6q7f3uDr9QAX9Cuc37&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MTg4NjMwNzgxMw%3D%3D.2-ccb7-4&oh=00_AT9Wm8BsGJxhgKgDftWy6Axisy80uMWACdH3LZ_kNnzqWg&oe=61D905E4&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/p480x480/271188062_257537829802080_5923626613842640440_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=100&_nc_ohc=dFgricFDfC8AX-hIZ2d&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjAwNjE1NjYxMDM0NzgxNA%3D%3D.2-ccb7-4&oh=00_AT_SJYFaoV99USM_IPhuhkCHE-1S0-XCUnpnG01Ik3jpfA&oe=61DA1D5D&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/271052303_600897491015473_6668187290512629188_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=epf_iOe0YisAX_T_0lW&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MTkwMzAwNjgzMQ%3D%3D.2-ccb7-4&oh=00_AT9HyPqnbNqzLEPC80DQs1JjvME7YahoY6oNS91q_I7rjQ&oe=61DA1AFA&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/271023175_690888875412119_539636855243307136_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=uX8kSCWkRdkAX-ESbX3&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MjAwMzcxNTUyMg%3D%3D.2-ccb7-4&oh=00_AT9u-NUFO26OzvXmNv82rLjcg3LyNuZn047A8eTYPwvzvA&oe=61D964CA&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/271200431_406072771311487_3149765346719126659_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=107&_nc_ohc=vmY2J-jCQJQAX9G5WJF&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjEwNDQ2MTkxMTM3NzM2MQ%3D%3D.2-ccb7-4&oh=00_AT_AWjgpeZtbY2FimwMPXSsJ-8w3-N5N2d6bo8r_PmxaBg&oe=61D9D733&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/duyenn.hipp/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/p480x480/271184973_1101596533921696_3101847491200714204_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=TOnuDg8jNGoAX9fYYjY&edm=ABmJApABAAAA&ccb=7-4&ig_cache_key=Mjc0MjAwNjE1NzkwMjQ4MjA0MA%3D%3D.2-ccb7-4&oh=00_AT8VY0T2re4YqMfthluidg7dx3aHiyqCWFeHW1js-Sq5RQ&oe=61DA983E&_nc_sid=6136e7