diff --git a/.env.local b/.env.local
index 0bc3ef8..83c7b46 100644
--- a/.env.local
+++ b/.env.local
@@ -24,6 +24,11 @@ REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379
+TXY4_REDIS_HOST=127.0.0.1
+TXY4_REDIS_PASSWORD=null
+TXY4_REDIS_PORT=16379
+TXY4_REDIS_CACHE_DB=0
+
MAIL_DRIVER=smtp
MAIL_HOST=smtp.mailtrap.io
MAIL_PORT=2525
diff --git a/.idea/php.xml b/.idea/php.xml
index ca6342a..19f1daa 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -212,7 +212,7 @@
-
+
diff --git a/app/Console/Commands/AcfunScrape.php b/app/Console/Commands/AcfunScrape.php
index 905f647..e5c2451 100644
--- a/app/Console/Commands/AcfunScrape.php
+++ b/app/Console/Commands/AcfunScrape.php
@@ -45,15 +45,15 @@ class AcfunScrape extends Command
// 苏子怡 13651121
$service = new AcfunService();
$upItems = [
- 10703951 => "几兔灰",
- 4537972 => "香菜猫饼",
- 2277346 => "小清晨儿",
- 13215999 => "kyokyo",
- 13651121 => "苏子怡",
- 3540234 => "雾奈奈-",
- 826046 => "Sakuya十六",
- 16146427 => "椰汁兔",
- 36414290 => "你的清清呀",
+// 10703951 => "几兔灰",
+// 4537972 => "香菜猫饼",
+// 2277346 => "小清晨儿",
+// 13215999 => "kyokyo",
+// 13651121 => "苏子怡",
+// 3540234 => "雾奈奈-",
+// 826046 => "Sakuya十六",
+// 16146427 => "椰汁兔",
+// 36414290 => "你的清清呀",
44328882 => "cc君辣",
41347405 => "香波妖精 Gikiki",
66565394 => "舞小喵 w",
@@ -65,7 +65,8 @@ class AcfunScrape extends Command
12892608 => "可心喵",
70864147 => "凛凛苏Sue",
1702633 => "扛扛扛扛扛",
- 71421930 => "慕慕有奶糖"
+ 71421930 => "慕慕有奶糖",
+ 71075628 => "大保健"
// 14047168 => "特喵冲冲"
];
$service = new AcfunService();
diff --git a/app/Console/Commands/BiliVideoCode.php b/app/Console/Commands/BiliVideoCode.php
index 4b8a3ec..56a087c 100644
--- a/app/Console/Commands/BiliVideoCode.php
+++ b/app/Console/Commands/BiliVideoCode.php
@@ -50,9 +50,9 @@ class BiliVideoCode extends Command
// $bilibili->queryLocalUpVideoList();exit;
// $bilibili->insertDBTest();exit;
// $bilibili->queryPlayList();
-
+// $bilibili->downloadDynamics();exit;
$bilibili->queryUpVideoList(10278125);
- // exit;
+ exit;
// $bilibili->queryDBCollectionList();
// dump($bilibili->requestVideoParts("33483603"));exit;
diff --git a/app/Console/Commands/InstagramScrape.php b/app/Console/Commands/InstagramScrape.php
index fb08625..409dc47 100644
--- a/app/Console/Commands/InstagramScrape.php
+++ b/app/Console/Commands/InstagramScrape.php
@@ -50,10 +50,17 @@ class InstagramScrape extends Command
// print_r($userList);exit;
$ins = new InstagramService();
- $ins->scrapeFeedsV2();
- sleep(60*2);
- $ins->scrapeUsersV2(89, null);
- // $ins->scrapeUsersV2(89, ["lxx.baby", "nyanchan22", "doly0818", "17_chill", "aoi_sola", "sejinming", "tngnlo"]);
+// $ins->scrapeFeedsV2();
+// sleep(60*2);
+// $ins->scrapeUsersV2(89, ["ngoctrinh89", "changchinlan", "na0912mi", "janed_404", "amandacerny", "beargenie", "beauty.leg"]);
+
+ $ins->scrapeUsersV2(89, null);
+// $ins->scrapeUsersV2(89, ["maggiewu1008", "e_s2_e", "anran.1033", "yura_936", "masami_nagasawa", "jen2jen2_"]);
+ // $ins->scrapeUsersV2(89, ["candiceswanepoel", "maggiewu1008", "janie.lin", "cxxsomi", "naughty_rabbit_", "cho_hyunyoung", "2km2km", "ms_puiyi", "ms_puiyi"]);
+ // "candiceswanepoel", "maggiewu1008, janie.lin, cxxsomi, naughty_rabbit_, cho_hyunyoung, 2km2km, ms_puiyi, irishuo_
+ // sleep(60*2);
+ // $ins->scrapeUsersV2(89, null);
+//
exit;
// $ins->getUserNameById('4156629214');exit;
diff --git a/app/Console/Commands/RenameTest.php b/app/Console/Commands/RenameTest.php
index 4f0fd38..7bfefe2 100644
--- a/app/Console/Commands/RenameTest.php
+++ b/app/Console/Commands/RenameTest.php
@@ -64,7 +64,7 @@ class RenameTest extends Command
// asort($arr);
// dump($rename->getNameLevel());
// dump($arr);exit;
- // $rename->rename($path, $prefix);
+ $rename->rename($path, $prefix);
$rename->splitCustomSizeOfFolder($path, $prefix, 500);exit;
// $rename->rename("/Volumes/WD/tmp/写真图/猫九", "猫九-");
diff --git a/app/Console/Commands/TestCommand.php b/app/Console/Commands/TestCommand.php
index 901d4a1..6c733c6 100644
--- a/app/Console/Commands/TestCommand.php
+++ b/app/Console/Commands/TestCommand.php
@@ -6,7 +6,10 @@ namespace App\Console\Commands;
use App\Services\GooglePhotoSyncService;
//use App\Services\LiveStreamService;
+use GuzzleHttp\Client;
+use GuzzleHttp\Psr7\Request;
use Illuminate\Console\Command;
+use Illuminate\Support\Facades\Redis;
class TestCommand extends Command
{
@@ -41,6 +44,11 @@ class TestCommand extends Command
*/
public function handle()
{
+// $this->test02();
+// exit;
+ $this->test5();exit;
+ $this->test01();exit;
+ $this->test04();exit;
// echo strlen("[VLOG] 메이드와 단 둘이 청소하실래요-ㅣ메이드복 입고 청소하기__ㅣ모델 일상 코스프레 브이로그ㅣCleaning Maid Cosplayㅣメイドといっしょに掃除しませんか?");exit;
// $service = new GooglePhotoSyncService();
@@ -49,13 +57,14 @@ class TestCommand extends Command
// $service->syncImageFiles();
// exit;
// $baseDir = "/Users/shixuesen/Documents/sync/image";
- $baseDir = "/Users/shixuesen/Documents/otherSync";
- $dirs = ["tumblr__0048"];
+ $baseDir = "/Users/shixuesen/Documents/otherSync/very";
+ $baseDir = "/Users/shixuesen/Downloads/y";
+ $dirs = ["mv"];
$files = [];
foreach ($dirs as $dir) {
$currentFiles = scandir($baseDir . DIRECTORY_SEPARATOR . $dir);
foreach ($currentFiles as $file) {
- if ($file == "." || $file == ".." || $file == ".DS_Store") {
+ if ($file == "." || $file == ".." || $file == ".DS_Store" || is_dir($baseDir . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file)) {
continue;
}
$files[] = $baseDir . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file;
@@ -172,4 +181,122 @@ class TestCommand extends Command
// dump($stat);
}
+
+ public function test01()
+ {
+ $keys = Redis::connection("cache_txy4")->lrange("file_to_encode", 0, -1);
+ foreach ($keys as $key) {
+ if (str_contains($key, "崔兔子")) {
+// echo $key;
+ Redis::connection("cache_txy4")->lrem("file_to_encode", 0, $key);
+ }
+ }
+// dump($keys);
+// echo Redis::connection("cache_txy4")->get("aaaaaa");exit;
+ }
+
+ public function test02()
+ {
+ $url = "https://wx4.sinaimg.cn/large/a2ca2fd3ly1hdcbwq251wj20h70fi0zi.jpg";
+ $urlInfo = parse_url($url);
+ $host = $urlInfo["host"];
+ $client = new Client();
+ $headers = [
+ 'authority' => $host,
+ 'accept' => 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
+ 'accept-language' => 'zh-CN,zh;q=0.9',
+ 'cache-control' => 'no-cache',
+ 'pragma' => 'no-cache',
+ 'referer' => 'https://m.weibo.cn/',
+ 'sec-ch-ua' => '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
+ 'sec-ch-ua-mobile' => '?0',
+ 'sec-ch-ua-platform' => '"macOS"',
+ 'sec-fetch-dest' => 'image',
+ 'sec-fetch-mode' => 'no-cors',
+ 'sec-fetch-site' => 'cross-site',
+ 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
+ ];
+ $request = new Request('GET', $url, $headers);
+ $res = $client->sendAsync($request)->wait();
+ return $res->getBody();
+ }
+
+ public function test03()
+ {
+ $list = Redis::connection()->smembers("永远别问为什么");
+ $files = scandir("/Volumes/Xcode");
+ foreach ($files as $file) {
+ if ($file == "." || $file == "..") {
+ continue;
+ }
+ if (!in_array($file, $list)) {
+ echo "$file not in array \n";
+ }
+ }
+ }
+
+
+ public function test04()
+ {
+// $baseDir = "/Volumes/Xcode/";
+ $baseDir = "/Users/shixuesen/Documents/otherSync/very";
+ $dirs = ["weibo_image03"];
+ $files = [];
+ foreach ($dirs as $dir) {
+ $currentFiles = scandir($baseDir . DIRECTORY_SEPARATOR . $dir);
+ foreach ($currentFiles as $file) {
+ if ($file == "." || $file == ".." || $file == ".DS_Store" || is_dir($baseDir . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file)) {
+ continue;
+ }
+ $files[] = $baseDir . DIRECTORY_SEPARATOR . $dir . DIRECTORY_SEPARATOR . $file;
+ }
+
+// $files = array_merge($files, $currentFiles);
+ }
+
+ $md5Set = [];
+
+// $newDir = "/Users/shixuesen/Downloads/y/Nagisa魔物喵202003fantia会员合集/魔物喵__001";
+// mkdir($newDir);
+ $i = 0;
+ foreach ($files as $file) {
+ if ($file == "." || $file == ".." || $file == ".DS_Store") {
+ continue;
+ }
+ $hash = md5_file($file);
+ if (array_key_exists($hash, $md5Set)) {
+ echo "file is same $file, and {$md5Set[$hash]} \n";
+// rename($dir . DIRECTORY_SEPARATOR . $file, $newDir . DIRECTORY_SEPARATOR . $file);
+// exit;
+ $i++;
+ } else {
+ $md5Set[$hash] = $file;
+ }
+ }
+ echo "all same file count is $i";
+ exit;
+ }
+
+ public function test5()
+ {
+ $dir = "/Volumes/Crucial X6/Image/6001-6050/6001-6050.7z";
+ $files = scandir($dir);
+ $set = [];
+ foreach ($files as $file) {
+ if ($file == "." || $file == ".." || $file == ".DS_Store") {
+ continue;
+ }
+ preg_match("#NO.\d+\s(\S+)\[#", $file, $matches);
+ $owner_name = $matches[1];
+ if (array_key_exists($owner_name, $set)) {
+ dump("$owner_name exists");
+ } else {
+ $set[$owner_name] = 1;
+ }
+// dump($owner_name);
+
+
+ }
+
+ }
}
diff --git a/app/Http/Controllers/GooglePhotoController.php b/app/Http/Controllers/GooglePhotoController.php
index 672264c..c99704a 100644
--- a/app/Http/Controllers/GooglePhotoController.php
+++ b/app/Http/Controllers/GooglePhotoController.php
@@ -36,8 +36,8 @@ class GooglePhotoController extends Controller {
*/
$photosLibraryClient = new PhotosLibraryClient(['credentials' => $credentials]);
-// $this->queryAlbumsList($photosLibraryClient);exit;
- $this->queryImageListInAlbum($photosLibraryClient, "AN5jk266WOQuZQzWrt9ci-NfP7a5rYDfqsC-72LTMa4D9SeBis41vuAQRGnQ3odxgdo3Zl8pskVh");exit;
+ // $this->queryAlbumsList($photosLibraryClient);exit;
+ $this->queryImageListInAlbum($photosLibraryClient, "AN5jk24bD4OEqFqtDy8e_gdAvmRSQAs5xwEHDDpK4mi5Du0c_Hm7iJqk4A0DbaT0eeeQrp39xaKc");exit;
$service = new GooglePhotoSyncService();
// $service->getAuthToken("4/0AX4XfWj_bDRqhnNLf4MGTMCAwt52Q4v6Dz1CLe1sx8I__Qu41z0fhX87I-amFAwpDGY0jA", ['https://www.googleapis.com/auth/photoslibrary'], config('app.albums_authentication_redirect_url'));
@@ -61,9 +61,9 @@ class GooglePhotoController extends Controller {
// 1. 获取相册里的照片
// 2. 获取相册列表
- // $this->queryAlbumsList($photosLibraryClient);
+ $this->queryAlbumsList($photosLibraryClient);
// 2. 获取相册列表
- // exit;
+ exit;
$options["pageSize"] = 100;
$options["pageToken"] = "CkgKQnR5cGUuZ29vZ2xlYXBpcy5jb20vZ29vZ2xlLnBob3Rvcy5saWJyYXJ5LnYxLkxpc3RNZWRpYUl0ZW1zUmVxdWVzdBICCGQSogFBSF91UTQyZWo2TWdQb3cyZDVOOHdubldId0JwakJ0cUJwbHk4akV3Qm8tZ2xvTWpuWHdlRHlzX2VBRzRWZkgzUS0yNVdpRlE4cnhGTVVCaEF0ZEp1UFJuZzN4dncta0pIOWZJalZuVk1jbFZVWnpzdzRSVDNvTkt0SXVKNGpDUlVWTnh5NS12MTVhd3BHaTRrY2ZUTEhEeUVrbHVrMUVhRncaGzJvcFczVXpwQ3ZnU1hZTlNUVVQwVmd0V19Ecw";
$pagedResponse = $photosLibraryClient->listMediaItems($options);
diff --git a/app/Http/Controllers/WeiboController.php b/app/Http/Controllers/WeiboController.php
index 6ea6e18..e786dd9 100644
--- a/app/Http/Controllers/WeiboController.php
+++ b/app/Http/Controllers/WeiboController.php
@@ -66,7 +66,14 @@ class WeiboController extends Controller
"腐团儿" => "1076032304291523",
"聂小雨" => "1076032579189065",
"小何同学" => "1076032104580380",
- "只有一个9521" => "1076037504338957"
+ "只有一个9521" => "1076037504338957",
+ "娜扎工作室" => "2304136001863056",
+ "刘教師特别授業" => "1076037686776705",
+ "Nana姐姐的微博" => "1076037764879728",
+ "小蓝蓝 plus" => "1076037409360499",
+ "露露" => "1076037731119705"
+// "娜扎工作室" => "2304136001863056_-_WEIBO_SECOND_PROFILE_WEIBO",
+
];
diff --git a/app/Services/AcfunService.php b/app/Services/AcfunService.php
index 2362a70..9a1343c 100644
--- a/app/Services/AcfunService.php
+++ b/app/Services/AcfunService.php
@@ -62,17 +62,19 @@ class AcfunService
'authority: www.acfun.cn',
'accept: application/json, text/plain, */*',
'accept-language: zh-CN,zh;q=0.9',
+ 'cache-control: no-cache',
'content-type: application/x-www-form-urlencoded',
- 'cookie: _did=web_49890374118F8C83; _did=web_49890374118F8C83; csrfToken=z0M8iPhQeBXdQKahCT9eh9IF; cur_req_id=188114995840AAD3_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=188114995840AAD3_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=1676524023,1677578838,1679105811; stochastic=OGh4ZW56ZTE5OGk%3D; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScC3mFmJ0_Ny_jdlp2zX4A9m4Cdsr9h5Pz1Ee1jfyHlfDWB14lyEDrxjlR_wDpBDHlFj2MoPPKJhFw_vhgMWL4oYye4jeI4T-EkCJXSuh19UabKnU00Rj84eEQK-wqRckMqhgZC0Uy5rTTIRkXkrqgDcaEsGnuGb9hF53qaZMO1JuGKUpeyIgPM38QqVI2JkcsDH48S4w8MCRIEl_3M4VqTyPWTyDS2coBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=e4d65708dfdada24d2843be08d79cff2c1da; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; lsv_js_player_v2_main=e4d400; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1679105822',
+ 'cookie: _did=web_49890374118F8C83; _did=web_49890374118F8C83; acPasstoken=ChVpbmZyYS5hY2Z1bi5wYXNzdG9rZW4ScC3mFmJ0_Ny_jdlp2zX4A9m4Cdsr9h5Pz1Ee1jfyHlfDWB14lyEDrxjlR_wDpBDHlFj2MoPPKJhFw_vhgMWL4oYye4jeI4T-EkCJXSuh19UabKnU00Rj84eEQK-wqRckMqhgZC0Uy5rTTIRkXkrqgDcaEsGnuGb9hF53qaZMO1JuGKUpeyIgPM38QqVI2JkcsDH48S4w8MCRIEl_3M4VqTyPWTyDS2coBTAB; auth_key=572984; ac_username=Nicksxs; acPostHint=e4d65708dfdada24d2843be08d79cff2c1da; ac_userimg=https%3A%2F%2Fimgs.aixifan.com%2Fstyle%2Fimage%2F201907%2FuQ5Vc06d3HSVTjY3VZocT81X40FByVpw.jpg; csrfToken=ImnwOlsler0iTnGD_YS1hxQ8; cur_req_id=3800241004A0CFD7_self_2d45c537a4f93b4689463857c3114dd1; cur_group_id=3800241004A0CFD7_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=1677578838,1679105811,1680140982; Hm_lpvt_2af69bc2b378fb58ae04ed2a04257ed1=1680141307',
'origin: https://www.acfun.cn',
+ 'pragma: no-cache',
'referer: https://www.acfun.cn/member/favourite',
- 'sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="102", "Google Chrome";v="102"',
+ 'sec-ch-ua: "Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
'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/102.0.5005.61 Safari/537.36'
+ 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36'
),
));
@@ -153,9 +155,13 @@ class AcfunService
$mainQl = QueryList::getInstance();
$pCursor = "";
$queried = 0;
+ $reqId = 1;
do {
- $result = $this->requestUpPageApi($upId, $pCursor);
+ $result = $this->requestUpPageApi($upId, $reqId, $pCursor);
// dump($result);
+ if (!$result) {
+ return;
+ }
$resourceIds = $mainQl->setHtml($result["html"])->find(".video-item")->attrs("resource-id");
$titles = $mainQl->setHtml($result["html"])->find(".video-name")->htmls();
dump($resourceIds);
@@ -178,6 +184,7 @@ class AcfunService
}
if (array_key_exists("pcursor", $result)) {
$pCursor = $result["pcursor"];
+ $reqId ++;
} else {
break;
}
@@ -219,12 +226,14 @@ class AcfunService
return $response;
}
- public function requestUpPageApi($upId, $pcursor = "")
+ public function requestUpPageApi($upId, $reqId, $pcursor = "")
{
if ($upId == null) {
return "";
}
- $url = "https://m.acfun.cn/upPage/$upId?pagelets=video-list&reqID=4&ajaxpipe=1&userId=$upId&type=3";
+ $t = time() * 1000;
+ $url = "https://m.acfun.cn/upPage/$upId?pagelets=video-list&reqID=$reqId&ajaxpipe=1&userId=$upId&type=3&pcursor=$pcursor&t=$t";
+// https://m.acfun.cn/upPage/1702633?pagelets=video-list&reqID=1&ajaxpipe=1&userId=1702633&type=3&pcursor=1677145407113&t=1680146711555
if ($pcursor != null && $pcursor != "") {
$url .= "&pcursor=$pcursor";
@@ -265,6 +274,11 @@ class AcfunService
// echo $response;
$replaced = str_replace("/**/", "", $response);
$result = json_decode($replaced, true);
+ if ($result == null || !array_key_exists("scripts", $result)) {
+ echo "=========================scripts not exist ===========================\n" . $url;
+ echo "=========================scripts not exist ===========================\n" . $response;
+ return false;
+ }
$scripts = $result["scripts"][0];
preg_match_all("#no_more#", $scripts, $noMore);
if (count($noMore[0]) > 0) {
diff --git a/app/Services/BilibiliServiceV2.php b/app/Services/BilibiliServiceV2.php
index 1ff341c..e31c746 100644
--- a/app/Services/BilibiliServiceV2.php
+++ b/app/Services/BilibiliServiceV2.php
@@ -8,13 +8,16 @@ use App\BilibiliUpVideos;
use App\BilibiliVideoParts;
use App\BilibiliVideos;
use App\Repositories\BilibiliVideoRepository;
+use DateTime;
use Exception;
-use GuzzleHttp\Client;
+use GuzzleHttp\Psr7\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Redis;
+use Psr\Http\Message\{RequestInterface, ResponseInterface};
+use GuzzleHttp\{Client, HandlerStack, Middleware, RetryMiddleware};
class BilibiliServiceV2
{
@@ -33,12 +36,49 @@ class BilibiliServiceV2
// private $remoteDir = "/data/";
private $remoteDir = "/Volumes/Crucial X6/Video/";
+ private $mixinKeyEncTab = [
+ 46, 47, 18, 2, 53, 8, 23, 32, 15, 50, 10, 31, 58, 3, 45, 35, 27, 43, 5, 49,
+ 33, 9, 42, 19, 29, 28, 14, 39, 12, 38, 41, 13, 37, 48, 7, 16, 24, 55, 40,
+ 61, 26, 17, 0, 1, 60, 51, 30, 4, 22, 25, 54, 21, 56, 59, 6, 63, 57, 62, 11,
+ 36, 20, 34, 44, 52
+ ];
+
protected $repository;
+ protected $client;
+
public function __construct(BilibiliVideoRepository $repository)
{
$this->repository = $repository;
+ $maxRetries = 3;
+
+ $decider = function (int $retries, RequestInterface $request, ResponseInterface $response = null) use ($maxRetries): bool {
+ return
+ $retries < $maxRetries
+ && null !== $response
+ && 429 === $response->getStatusCode();
+ };
+
+ $delay = function (int $retries, ResponseInterface $response): int {
+ if (!$response->hasHeader('Retry-After')) {
+ return RetryMiddleware::exponentialDelay($retries);
+ }
+
+ $retryAfter = $response->getHeaderLine('Retry-After');
+
+ if (!is_numeric($retryAfter)) {
+ $retryAfter = (new DateTime($retryAfter))->getTimestamp() - time();
+ }
+
+ return (int)$retryAfter * 1000;
+ };
+
+ $stack = HandlerStack::create();
+ $stack->push(Middleware::retry($decider, $delay));
+
+
+ $this->client = new Client(['handler' => $stack]);
}
public function queryPlayList()
@@ -76,10 +116,9 @@ class BilibiliServiceV2
// 391073761 女团直拍
// 267781236 韩国女团饭拍直拍
// 23400436 小雪_juvia
- $list = BilibiliUpVideos
- ::orderBy('updated_at', 'asc')
- ->take(110)
- ->get();
+ $list = BilibiliUpVideos::where("id", "<", "150")
+ ->orderBy('id', 'desc')
+ ->get();
// $list = $list->slice(87);
foreach ($list as $item) {
Log::info("schedule queryUpVideoList current up is {$item['up_name']}, started at: " . date("Y-m-d H:i:s"));
@@ -88,14 +127,39 @@ class BilibiliServiceV2
$mediaId = $item['mid'];
$videos = [];
$pageNo = 1;
- $url = "https://api.bilibili.com/x/space/arc/search?mid={$mediaId}&ps=30&tid=0&keyword=&order=pubdate&jsonp=jsonp&pn=";
- $pageAll = 10;
+ $url = "https://api.bilibili.com/x/space/wbi/arc/search?mid={$mediaId}&ps=30&tid=0&keyword=&pn=";
+ $pageAll = 2;
+
+ // https://api.bilibili.com/x/space/wbi/arc/search?
+ // mid=363430107&
+ //ps=30&
+ //tid=0&
+ //pn=1&
+ //keyword=&
+ //order=pubdate&
+ //platform=web&
+ //web_location=1550101&
+ //order_avoided=true&
+ //w_rid=a1011501119a6d795f369ec2bafa1af2&
+ //wts=1685087658
// https://space.bilibili.com/475250/video
for ($i = 1; $i < $pageAll; $i++) {
$curl = curl_init();
+ $params = [
+ "mid" => $mediaId,
+ "ps" => 30,
+ "tid" => 0,
+ "keyword" => "",
+ "order" => "pubdate",
+ "platform" => "web",
+ "web_location" => 1550101,
+ "order_avoided" => true,
+ "pn" => $i
+ ];
+ $query = $this->build_params($params);
curl_setopt_array($curl, array(
- CURLOPT_URL => "https://api.bilibili.com/x/space/arc/search?mid={$mediaId}&ps=30&tid=0&keyword=&order=pubdate&jsonp=jsonp&pn={$i}",
+ CURLOPT_URL => "https://api.bilibili.com/x/space/wbi/arc/search?$query",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
@@ -730,7 +794,7 @@ class BilibiliServiceV2
}
}
$i++;
- $list = BilibiliVideos::simplePaginate(20, null, 'page', $i);
+ $list = BilibiliVideos::simplePaginate(50, null, 'page', $i);
try {
usleep(random_int(10, 1000) * 1000);
} catch (Exception $e) {
@@ -1140,4 +1204,154 @@ done && echo "ok"');
}
return false;
}
+
+ public function downloadDynamics()
+ {
+ $env = App::environment();
+ $list = BilibiliUpVideos::orderBy("created_at", "desc")->where("id", "<", "94")->limit(100)->get();
+ foreach ($list as $item) {
+ $mid = $item["mid"];
+ $offset = null;
+ $response = null;
+ do {
+ $jsonResponse = $this->dynamicsRequest($mid, $offset);
+ $response = json_decode($jsonResponse, true);
+ if (array_key_exists("code", $response) && $response["code"] == '0' && array_key_exists("data", $response) && array_key_exists("items", $response["data"])) {
+ $dynamics = $response["data"]["items"];
+ foreach ($dynamics as $dynamic) {
+ if ($dynamic["type"] == "DYNAMIC_TYPE_DRAW") {
+ if (array_key_exists("modules", $dynamic) &&
+ array_key_exists("module_dynamic", $dynamic["modules"]) &&
+ array_key_exists("major", $dynamic["modules"]["module_dynamic"]) &&
+ array_key_exists("draw", $dynamic["modules"]["module_dynamic"]["major"]) &&
+ array_key_exists("items", $dynamic["modules"]["module_dynamic"]["major"]["draw"])
+ ) {
+ $imageItems = $dynamic["modules"]["module_dynamic"]["major"]["draw"]["items"];
+ foreach ($imageItems as $imageItem) {
+ $imageUrl = $imageItem["src"];
+ $this->downloadImage($imageUrl, "/Users/shixuesen/Downloads/y/bili", $item["up_name"]);
+ }
+ }
+ }
+ }
+ }
+ if (array_key_exists("data", $response) && array_key_exists("offset", $response["data"])) {
+ $offset = $response["data"]["offset"];
+ echo "{$item["up_name"]} offset: $offset \n";
+ }
+ usleep(random_int(10, 100) * 100);
+ } while ($response != null && array_key_exists("data", $response) && array_key_exists("has_more", $response["data"]) && $response["data"]["has_more"]);
+
+ }
+
+ }
+
+ public function dynamicsRequest($mid, $offset)
+ {
+ $client = new Client();
+ $headers = [
+ 'authority' => 'api.bilibili.com',
+ 'accept' => 'application/json, text/plain, */*',
+ 'accept-language' => 'zh-CN,zh;q=0.9',
+ 'cache-control' => 'no-cache',
+ 'origin' => 'https://space.bilibili.com',
+ 'pragma' => 'no-cache',
+ 'referer' => "https://space.bilibili.com/$mid/dynamic",
+ 'sec-ch-ua' => '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
+ 'sec-ch-ua-mobile' => '?0',
+ 'sec-ch-ua-platform' => '"macOS"',
+ 'sec-fetch-dest' => 'empty',
+ 'sec-fetch-mode' => 'cors',
+ 'sec-fetch-site' => 'same-site',
+ 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
+ ];
+ if ($offset != null) {
+ $url = "https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?offset={$offset}&host_mid={$mid}&timezone_offset=-480&features=itemOpusStyle";
+ } else {
+ $url = "https://api.bilibili.com/x/polymer/web-dynamic/v1/feed/space?offset=&host_mid={$mid}&timezone_offset=-480&features=itemOpusStyle";
+ }
+ $request = new Request('GET', $url, $headers);
+ $res = $client->sendAsync($request)->wait();
+ return $res->getBody();
+ }
+
+ public function downloadImage($imageUrl, $path, $upName)
+ {
+ $filePathInfo = pathinfo($imageUrl);
+ $filename = $filePathInfo['basename'];
+ $request = new Request('GET', $imageUrl);
+ try {
+ $res = $this->client->sendAsync($request)->wait();
+ } catch (\Exception $e) {
+ Log::error("$upName, $imageUrl, is error " . $e->getMessage());
+ return;
+ }
+ $fileLocalName = $path . DIRECTORY_SEPARATOR . $upName . "_" . $filename;
+ if (is_file($fileLocalName) && filesize($fileLocalName) > 10000) {
+ echo $fileLocalName . " exists \n";
+ } else {
+ file_put_contents($path . DIRECTORY_SEPARATOR . $upName . "_" . $filename, $res->getBody());
+ }
+ }
+
+
+ public function getMixinKey($orig)
+ {
+ // '对 imgKey 和 subKey 进行字符顺序打乱编码'
+ return substr(implode('', array_map(function ($i) use ($orig) {
+ return $orig[$i];
+ }, $this->mixinKeyEncTab)), 0, 32);
+ }
+
+ public function encWbi($params, $img_key, $sub_key)
+ {
+ // '为请求参数进行 wbi 签名'
+ $mixin_key = $this->getMixinKey($img_key . $sub_key);
+ $curr_time = round(time());
+ $params['wts'] = $curr_time; // 添加 wts 字段
+ ksort($params); // 按照 key 重排参数
+ $params = array_map(function ($v) {
+ return preg_replace("#[!'()*/]#", '', $v); // 过滤 value 中的 "!'()*" 字符
+ }, $params);
+ $query = http_build_query($params); // 序列化参数
+ $wbi_sign = md5($query . $mixin_key); // 计算 w_rid
+ $params['w_rid'] = $wbi_sign;
+ return $params;
+ }
+ public function getWbiKeys()
+ {
+ $img_key = Redis::connection()->get("img_key");
+ $sub_key = Redis::connection()->get("sub_key");
+ if ($img_key != null && $sub_key != null) {
+ return [$img_key, $sub_key];
+ }
+ // '获取最新的 img_key 和 sub_key'
+ $resp = file_get_contents('https://api.bilibili.com/x/web-interface/nav');
+ $json_content = json_decode($resp, true);
+ $img_url = $json_content['data']['wbi_img']['img_url'];
+ $sub_url = $json_content['data']['wbi_img']['sub_url'];
+ $img_key = substr($img_url, strrpos($img_url, '/') + 1, strrpos($img_url, '.') - strrpos($img_url, '/') - 1);
+ $sub_key = substr($sub_url, strrpos($sub_url, '/') + 1, strrpos($sub_url, '.') - strrpos($sub_url, '/') - 1);
+ Redis::connection()->setex("img_key", strtotime('23:59:59')-time(), $img_key);
+ Redis::connection()->setex("sub_key", strtotime('23:59:59')-time(), $sub_key);
+ return [$img_key, $sub_key];
+ }
+
+ public function build_params($params)
+ {
+ list($img_key, $sub_key) = $this->getWbiKeys();
+// dump($img_key);
+// dump($sub_key);
+ $signed_params = $this->encWbi(
+ $params,
+ $img_key,
+ $sub_key
+ );
+// dump($signed_params);exit;
+ $query = http_build_query($signed_params);
+// print_r($signed_params);
+ return $query;
+ }
}
+
+
diff --git a/app/Services/FfmpegService.php b/app/Services/FfmpegService.php
index 505f171..46c8d3d 100644
--- a/app/Services/FfmpegService.php
+++ b/app/Services/FfmpegService.php
@@ -128,8 +128,10 @@ class FfmpegService
public function processVideo($pathFile)
{
$slowFlag = false;
- if (date("H") >= 22 || date("H") < 8) {
- $slowFlag = true;
+ if (date("H") >= 6 && date("i") > 30 && date("H") < 9) {
+ Log::info("H > 6 stopFlag is set");
+ dump("H > 6 stopFlag is set");
+ exit;
}
// while () {
// Log::info("now is " . date("Y-m-d H:i:s") . " sleep 5 minutes");
@@ -195,16 +197,12 @@ class FfmpegService
Log::info("process target file : $targetFile");
if ($this->getDimension($pathFile)->getWidth() > 3840) {
// $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -threads 16 -i ". escapeshellarg($pathFile) ." -preset ultrafast -crf 25 -c:v libx265 -x265-params pools=8 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'");
- if ($slowFlag) {
- $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -i ". escapeshellarg($pathFile) ." -c:v libx265 -x265-params pools=2 -vtag hvc1 -vf \"scale=4096:-1\" " . escapeshellarg($targetFile) . " && echo 'ok'");
- } else {
- $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -i ". escapeshellarg($pathFile) ." -c:v libx265 -x265-params pools=8 -vtag hvc1 -vf \"scale=4096:-1\" " . escapeshellarg($targetFile) . " && echo 'ok'");
- }
+ $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -i ". escapeshellarg($pathFile) ." -c:v libx265 -x265-params pools=8 -vtag hvc1 -vf \"scale=4096:-1\" " . escapeshellarg($targetFile) . " && echo 'ok'");
} else {
if ($slowFlag) {
- $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -threads 2 -i ". escapeshellarg($pathFile) ." -preset fast -c:v libx265 -x265-params pools=2 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'");
+ $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -threads 2 -i ". escapeshellarg($pathFile) ." -c:v libx265 -x265-params pools=14 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'");
} else {
- $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -threads 8 -i ". escapeshellarg($pathFile) ." -preset fast -c:v libx265 -x265-params pools=8 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'");
+ $result = shell_exec("/Users/shixuesen/Downloads/ffmpeg -threads 2 -i ". escapeshellarg($pathFile) ." -c:v libx265 -x265-params pools=14 -vtag hvc1 " . escapeshellarg($targetFile) . " && echo 'ok'");
}
}
// echo $result;
@@ -336,8 +334,8 @@ class FfmpegService
Log::error("ffprobe has error just return false for test, exception: ". $e->getMessage());
return false;
}
- return false;
-// return trim($codecName) == "hevc";
+// return false;
+ return trim($codecName) == "hevc";
}
public function getDimension($file): Dimension
diff --git a/app/Services/InstagramService.php b/app/Services/InstagramService.php
index 3d31800..0699b2c 100644
--- a/app/Services/InstagramService.php
+++ b/app/Services/InstagramService.php
@@ -68,7 +68,7 @@ class InstagramService
"queena820628" => 12991274468,
"bitnara1105" => 5849529154,
"mobe_carrie0223" => 566598605,
- "mikamikatn" => 4156629214,
+ "mikamikatn" => 45602633214,
"inkyung97" => 5763414441,
"e_seoa" => 6859472347,
"r_ap82_" => 11599648301,
@@ -964,6 +964,7 @@ class InstagramService
"gawonaa" => 6552618014,
"bitnara_daily" => 56599499536,
"bonnie.90106_" => 55798122328,
+ "zennyrt" => 9676745878,
];
@@ -1541,7 +1542,9 @@ class InstagramService
$toQueryUsers = Redis::connection()->lrange(self::INS_USER_KEY, 0, 9);
Redis::connection()->ltrim(self::INS_USER_KEY, 10, -1);
}
- $alwaysNeedToQueryUsers = ["bonnie.90106_", "amy00522", "bitnara1105", "zhizhibooty", "_azhua", "exy_s2", "colin.anthony2", "7alice77", "leeesovelys2", "anran.1033", "doly0818", "siawase726", "yifei_cc", "17_chill", "shinapit46", "crissielee_", "boram__jj", "cho_hyunyoung", "cxxsomi", "inkyung97", "na0912mi", "naughty_rabbit_", "sejinming", "zyzyxin222"];
+ $alwaysNeedToQueryUsers = [];
+// $alwaysNeedToQueryUsers = ["bonnie.90106_","jiee_wen", "hazyryu", "mikamikatn", "boram__jj", "cho_hyunyoung", "cxxsomi", "inkyung97", "na0912mi", "naughty_rabbit_", "sejinming", "zyzyxin222"];
+ // "bonnie.90106_", "amy00522", "bitnara1105", "zhizhibooty", "_azhua", "exy_s2", "colin.anthony2", "7alice77", "leeesovelys2", "anran.1033", "doly0818", "siawase726", "yifei_cc", "17_chill", "shinapit46", "crissielee_",
$toQueryUsers = array_unique(array_merge($alwaysNeedToQueryUsers, $toQueryUsers));
} else {
if (is_array($singleUser)) {
@@ -1691,7 +1694,8 @@ class InstagramService
// This will be a null value again when we've reached the last page!
// And we will stop looping through pages as soon as maxId becomes null.
if ($singleUser != null || (is_array($singleUser) && count($singleUser) > 0)) {
- if ($count - $existCount > 200) {
+ if ($count - $existCount > 200 ) {
+ // || $count > (50 + random_int(0, 20))
Log::info("new count bigger than 100", ['user' => $trueName]);
goto a;
}
@@ -2210,24 +2214,26 @@ class InstagramService
'accept-language' => 'zh-CN,zh;q=0.9',
'cache-control' => 'no-cache',
'content-type' => 'application/x-www-form-urlencoded',
- 'cookie' => 'ig_did=1E87B96C-B061-484F-89A8-C76BF8E11C52; ig_nrcb=1; mid=Y0QEJQAEAAGK3xW8v5Uwszo_cBzM; ds_user_id=361404591; datr=qAREY1W0Mocw3OoikuJcsL1c; csrftoken=o8uqypXnqzLbV4MKBo7ZeI4Tn7s4WwUt; dpr=2; shbid="10286\\054361404591\\0541710812830:01f7d29af58e88473b6537a789f05c33c9f3f0f41339fa59de8559924c7f8c1d51dc5202"; shbts="1679276830\\054361404591\\0541710812830:01f7cc9321450385cca359a813811464e1a637e9e4e8c2080b2e323f8303e37bd9c73a7c"; sessionid=361404591%3AVuUxqubuMmj6HZ%3A25%3AAYfVauWYX0ZMLkdbLaUmu6w7hi0OYzqf9Jz9qHPWqg; rur="NAO\\054361404591\\0541710813556:01f78e24f3dfa349efc89a199901cd50d645eacbe61d0bee262a5684ed303d140ae38986"',
+ 'cookie' => 'ig_did=1E87B96C-B061-484F-89A8-C76BF8E11C52; ig_nrcb=1; mid=Y0QEJQAEAAGK3xW8v5Uwszo_cBzM; datr=qAREY1W0Mocw3OoikuJcsL1c; ds_user_id=361404591; dpr=2; csrftoken=CFl1Ud94y0bme7hQP8Uvp8Xl4sKcFViX; shbid="16067\\054361404591\\0541716949395:01f70eef8d26bcb8f7f993fc31a064d0ee750f7e2b3649a97f4749d0bcd9f95d657910dc"; shbts="1685413395\\054361404591\\0541716949395:01f7e9d7690bc741b7e96b090605dad786de17d15651400beab2a35ea38e28ded2f59495"; sessionid=361404591%3AfFydERGFX9GaEm%3A10%3AAYc8JRCrHUvc9fh9IM2HBM5cX6oontDKzd6Ea01oMA; fbm_124024574287414=base_domain=.instagram.com; fbsr_124024574287414=L9kVkvYFJVPwU5BRVImtTBmcvaV1dkQ0ydKNAcOEhZ8.eyJ1c2VyX2lkIjoiMTAwMDA3ODU5ODI1MDQ3IiwiY29kZSI6IkFRQXp0UzBiQTVnYnNBSl9pNW1Dd01idS1rbEZuRENvTHZqRnpkNFplR01qb1FZekRDS3BQY3huZGpYSU04NzltM3hwQnZkbFhQbEh5cFlLMU5USEJ4RnV6ejZEZFN2MFREejhWdHd1dF85MHAtWEdEVENfZDhpdEpKM3JPY1ptLS1KSHNROXJIemtuZkFyNE5SdFpRY19RNUJSd2lGZmRndUd2MUFXU3ZOSFV1RW40TUE0d1hKYm5ZMV80WjFzNktGdEZ3UXVDR3MwUGdIOFQ2QnltQ0lzeGh6NHA2UWgtdlp0VGFoR0Q1VlBMZ1hqZG9fVDM4bE9xREs4SzYzX1dlZ3JySno0S2dCMkRXdlJuUGc1OTRqcXU5WGlUNUFMbURhbUMxdjFlYlVFQnA2S20ta2drYmdPMXMxR2JIQmEzbEw3OS0zelNreUVmekF3X2NsVUdsYTFSIiwib2F1dGhfdG9rZW4iOiJFQUFCd3pMaXhuallCQUhJcWNmdFBBRkhNcDZuVlU4ZDVSaWs1WkFCYWtUN3NTUE1VWkN2WkE2cHNxWkFZQ21sWXF6YUQ1Tk5GQTNUa0JSQjcxTmxTWHhRZTVVSEEzdm9CbGlsODJ3ZFVxMjZnZm91TUxTVWFucDNCejlpaDlFRFhGT1RnaEN0SnVEbGE3clpCbnNIWElqMGlCbnNMMUhOSzZ3Z0FaQ25jOVY3TVpDWkFJaVpCQU9BbHRLNDRkZzVuYkVUQVpEIiwiYWxnb3JpdGhtIjoiSE1BQy1TSEEyNTYiLCJpc3N1ZWRfYXQiOjE2ODU0MTM4ODZ9; rur="NAO\\054361404591\\0541716949889:01f7a134fbbef26c1e76c0c6ed205588018f90a91254d1626ab18e1df4c3a418faa2853b"',
'origin' => 'https://www.instagram.com',
'pragma' => 'no-cache',
'referer' => 'https://www.instagram.com/',
'sec-ch-prefers-color-scheme' => 'light',
- 'sec-ch-ua' => '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
+ 'sec-ch-ua' => '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
+ 'sec-ch-ua-full-version-list' => '"Chromium";v="112.0.5615.137", "Google Chrome";v="112.0.5615.137", "Not:A-Brand";v="99.0.0.0"',
'sec-ch-ua-mobile' => '?0',
'sec-ch-ua-platform' => '"macOS"',
+ 'sec-ch-ua-platform-version' => '"12.6.0"',
'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/110.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/112.0.0.0 Safari/537.36',
'viewport-width' => '1512',
- 'x-asbd-id' => '198387',
- 'x-csrftoken' => 'o8uqypXnqzLbV4MKBo7ZeI4Tn7s4WwUt',
+ 'x-asbd-id' => '129477',
+ 'x-csrftoken' => 'CFl1Ud94y0bme7hQP8Uvp8Xl4sKcFViX',
'x-ig-app-id' => '936619743392459',
- 'x-ig-www-claim' => 'hmac.AR2DN3JP5T1uzerp-Udyl58luFekDMO1MUYZolRys4KAvCnY',
- 'x-instagram-ajax' => '1007137483',
+ 'x-ig-www-claim' => 'hmac.AR2DN3JP5T1uzerp-Udyl58luFekDMO1MUYZolRys4KAvCTz',
+ 'x-instagram-ajax' => '1007579192',
'x-requested-with' => 'XMLHttpRequest'
];
$options = [
@@ -2303,22 +2309,24 @@ class InstagramService
'accept' => '*/*',
'accept-language' => 'zh-CN,zh;q=0.9',
'cache-control' => 'no-cache',
- 'cookie' => 'ig_did=1E87B96C-B061-484F-89A8-C76BF8E11C52; ig_nrcb=1; mid=Y0QEJQAEAAGK3xW8v5Uwszo_cBzM; ds_user_id=361404591; datr=qAREY1W0Mocw3OoikuJcsL1c; csrftoken=o8uqypXnqzLbV4MKBo7ZeI4Tn7s4WwUt; dpr=2; shbid="10286\\054361404591\\0541710812830:01f7d29af58e88473b6537a789f05c33c9f3f0f41339fa59de8559924c7f8c1d51dc5202"; shbts="1679276830\\054361404591\\0541710812830:01f7cc9321450385cca359a813811464e1a637e9e4e8c2080b2e323f8303e37bd9c73a7c"; sessionid=361404591%3AVuUxqubuMmj6HZ%3A25%3AAYfVauWYX0ZMLkdbLaUmu6w7hi0OYzqf9Jz9qHPWqg; rur="NAO\\054361404591\\0541710812852:01f76d935ed50ff550dbf89bb5f923ab7d02cb0ac4fc6bc8ff913d9232e56beed0c17b72"',
+ 'cookie' => 'ig_did=1E87B96C-B061-484F-89A8-C76BF8E11C52; ig_nrcb=1; mid=Y0QEJQAEAAGK3xW8v5Uwszo_cBzM; datr=qAREY1W0Mocw3OoikuJcsL1c; ds_user_id=361404591; dpr=2; csrftoken=CFl1Ud94y0bme7hQP8Uvp8Xl4sKcFViX; shbid="16067\\054361404591\\0541716949395:01f70eef8d26bcb8f7f993fc31a064d0ee750f7e2b3649a97f4749d0bcd9f95d657910dc"; shbts="1685413395\\054361404591\\0541716949395:01f7e9d7690bc741b7e96b090605dad786de17d15651400beab2a35ea38e28ded2f59495"; sessionid=361404591%3AfFydERGFX9GaEm%3A10%3AAYc8JRCrHUvc9fh9IM2HBM5cX6oontDKzd6Ea01oMA; fbm_124024574287414=base_domain=.instagram.com; fbsr_124024574287414=5BhPy3xcwHNWy1YFi8Wok9t4T5MmacABKqStGCMBouI.eyJ1c2VyX2lkIjoiMTAwMDA3ODU5ODI1MDQ3IiwiY29kZSI6IkFRQ2drOGExb05lZXNUb1JBQzBteG4xV3JoQUVyYXQyR0RJczdnRlUwYXlVdVlGTkFBNlZiMTBWNC1aUDJKaDdTSkVLS1pwTDN2bHkxZG9UVTVpSXhQcHB0bU15QXhiMWN6MjVjdm9jTDBZSTlKdENoRDhWU3o0aERGaVRqS3FRQUdaNWJ6NG9laVFzU0ZkRDFMdm5iTndoajR1OS1jLW5GLXZXaDVKb0dIbUY1VENqNTM4aDJNYzRaQ2VQNjlLb0xJTExrMm5RYVBLNVIxUDljWDZrUzEySlJvTmtPQlpJNDM0S2RQN2ozVnhpelRRRU5uVUhlM09BYm16WUdIM3ZNUTlxR3ZNSm51UHdXbDBIZVF6U1ltUmt5OS1iRU1ueFZyb3hMR0pIOW1hOXYzb21VNURvMXhCMWJ4c094enJOZjRqQXpBSHBOazJuOGJpRkpmalVidlVMIiwib2F1dGhfdG9rZW4iOiJFQUFCd3pMaXhuallCQU05R2NQTlBXb2pQNkE5Umh0UTF5RVNDSWVSVVBUQ01mRkw2cXBockhqQUFrdzdVdzB6ME11RjQ0WVpBNTc1Nmo4cXJzbnFtemZVVGk4UVpDdjlaQXlTQ0taQWFyalpBSnVaQUpLMFpBanVFa3Z2VndMbVdWa05WWExHMnRtQTNVZjFlWkJYeUxmQTVOUjI5THYzVTdIYW1pWkNDUnh4R1JxNVVsYm03cVlyZWhSWkNSQTYyanhKVDBaRCIsImFsZ29yaXRobSI6IkhNQUMtU0hBMjU2IiwiaXNzdWVkX2F0IjoxNjg1NDEzNDAxfQ; rur="NAO\\054361404591\\0541716949402:01f7509be66ac75e565c9d7c696b9b0dbd0250d0cc7339c745db84662c633f6d9aa2b055"',
'pragma' => 'no-cache',
- 'referer' => 'https://www.instagram.com/yifaer_chen/',
+ 'referer' => 'https://www.instagram.com/cho_hyunyoung/',
'sec-ch-prefers-color-scheme' => 'light',
- 'sec-ch-ua' => '"Chromium";v="110", "Not A(Brand";v="24", "Google Chrome";v="110"',
+ 'sec-ch-ua' => '"Chromium";v="112", "Google Chrome";v="112", "Not:A-Brand";v="99"',
+ 'sec-ch-ua-full-version-list' => '"Chromium";v="112.0.5615.137", "Google Chrome";v="112.0.5615.137", "Not:A-Brand";v="99.0.0.0"',
'sec-ch-ua-mobile' => '?0',
'sec-ch-ua-platform' => '"macOS"',
+ 'sec-ch-ua-platform-version' => '"12.6.0"',
'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/110.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/112.0.0.0 Safari/537.36',
'viewport-width' => '1512',
- 'x-asbd-id' => '198387',
- 'x-csrftoken' => 'o8uqypXnqzLbV4MKBo7ZeI4Tn7s4WwUt',
+ 'x-asbd-id' => '129477',
+ 'x-csrftoken' => 'CFl1Ud94y0bme7hQP8Uvp8Xl4sKcFViX',
'x-ig-app-id' => '936619743392459',
- 'x-ig-www-claim' => 'hmac.AR2DN3JP5T1uzerp-Udyl58luFekDMO1MUYZolRys4KAvCnY',
+ 'x-ig-www-claim' => 'hmac.AR2DN3JP5T1uzerp-Udyl58luFekDMO1MUYZolRys4KAvCTz',
'x-requested-with' => 'XMLHttpRequest'
];
$url = "https://i.instagram.com/api/v1/feed/user/{$userId}/?count=12";
diff --git a/app/Services/WeiboService.php b/app/Services/WeiboService.php
index d49e076..2ea92fd 100644
--- a/app/Services/WeiboService.php
+++ b/app/Services/WeiboService.php
@@ -2,6 +2,8 @@
namespace App\Services;
use App\ImageRecord;
+use GuzzleHttp\Client;
+use GuzzleHttp\Psr7\Request;
use Illuminate\Support\Arr;
use Illuminate\Support\Facades\Log;
@@ -46,6 +48,8 @@ class WeiboService
// file_put_contents( $fname , $content );
$decoded_json = json_decode($content, true);
$cards = $decoded_json['data']['cards'];
+// $cards = array_slice($cards, 3, 1);
+ // Log::info(json_encode($cards));exit;
foreach ($cards as $card) {
if (!array_key_exists("mblog", $card)) {
continue;
@@ -55,8 +59,10 @@ class WeiboService
// if (!file_exists($subdir)) {
// mkdir($subdir);
// }
- echo json_encode($mblog);
+ // echo json_encode($mblog);
+ Log::info("mblog info: " . json_encode($mblog));
if (array_key_exists("pics", $mblog)) {
+ Log::info("-------enter 1");
$pics = $mblog['pics'];
$user = Arr::get($mblog, "user", []);
$text = Arr::get($mblog, "text", '');
@@ -83,6 +89,7 @@ class WeiboService
// }
// }
} else if (array_key_exists("retweeted_status", $mblog)) {
+ Log::info("-------enter 2");
if (array_key_exists("pics", $mblog["retweeted_status"])) {
$pics = $mblog["retweeted_status"]['pics'];
# code...
@@ -93,10 +100,13 @@ class WeiboService
# code...
} else if (array_key_exists("page_info", $mblog) && array_key_exists("media_info", $mblog["page_info"])) {
# code...
+ Log::info("-------enter 3");
+ Log::info("page_info: ". json_encode($mblog["page_info"]));
$page_info = $mblog["page_info"];
$media_info = $mblog["page_info"]["media_info"];
$medis_urls = $mblog["page_info"]["urls"];
$video_url = Arr::get($medis_urls, "mp4_720p_mp4", "");
+ Log::info("video_urls: " . $video_url);
if ($video_url == "") {
$video_url = Arr::get($medis_urls, "mp4_hd_url", "");
}
@@ -245,7 +255,7 @@ class WeiboService
$file_name = $subDir . DIRECTORY_SEPARATOR . $picName . "." . $picExt;
$baseName = $picName . "." . $picExt;
if (!file_exists($file_name) && !$this->checkFileHasDownload($baseName)) {
- $pic_content = file_get_contents($pic_url);
+ $pic_content = $this->downloadImg($pic_url);
// echo $pic_content;
file_put_contents($file_name, $pic_content);
$this->files[] = $baseName;
@@ -255,6 +265,31 @@ class WeiboService
}
}
+ public function downloadImg($url)
+ {
+ $urlInfo = parse_url($url);
+ $host = $urlInfo["host"];
+ $client = new Client();
+ $headers = [
+ 'authority' => $host,
+ 'accept' => 'image/avif,image/webp,image/apng,image/svg+xml,image/*,*/*;q=0.8',
+ 'accept-language' => 'zh-CN,zh;q=0.9',
+ 'cache-control' => 'no-cache',
+ 'pragma' => 'no-cache',
+ 'referer' => 'https://m.weibo.cn/',
+ 'sec-ch-ua' => '"Google Chrome";v="111", "Not(A:Brand";v="8", "Chromium";v="111"',
+ 'sec-ch-ua-mobile' => '?0',
+ 'sec-ch-ua-platform' => '"macOS"',
+ 'sec-fetch-dest' => 'image',
+ 'sec-fetch-mode' => 'no-cors',
+ 'sec-fetch-site' => 'cross-site',
+ 'user-agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/111.0.0.0 Safari/537.36'
+ ];
+ $request = new Request('GET', $url, $headers);
+ $res = $client->sendAsync($request)->wait();
+ return $res->getBody();
+ }
+
function process_video($video_url, $subdir, $video_name)
{
Log::info("video_url: " . $video_url);
@@ -303,7 +338,7 @@ class WeiboService
}
public function scrapeWeiboComments($content) {
-
+
}
diff --git a/config/database.php b/config/database.php
index 22347a4..b5a4899 100644
--- a/config/database.php
+++ b/config/database.php
@@ -126,6 +126,13 @@ return [
'database' => env('REDIS_CACHE_DB', 1),
],
+ 'cache_txy4' => [
+ 'host' => env('TXY4_REDIS_HOST', '127.0.0.1'),
+ 'password' => env('TXY4_REDIS_PASSWORD', null),
+ 'port' => env('TXY4_REDIS_PORT', 16379),
+ 'database' => env('TXY4_REDIS_CACHE_DB', 1),
+ ],
+
],
];
diff --git a/fail.log b/fail.log
index 85a9580..41314dd 100644
--- a/fail.log
+++ b/fail.log
@@ -2771,3 +2771,30 @@
/Users/shixuesen/OneDrive/Pictures/instagram/shinapit46/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/333812454_199637476048632_4591223738887286501_n.webp?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=100&_nc_ohc=FJ9l_3smNHoAX_nEuJo&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA0OTExNDk1NjQwNzgzMzY1Ng%3D%3D.2-ccb7-5&oh=00_AfBF5NrM2CqjLXBJfJHMKu__34W1hlxMwXBchXXe1Z2qWQ&oe=640589E2&_nc_sid=6136e7
/Users/shixuesen/OneDrive/Pictures/instagram/shinapit46/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/334218038_762443441819964_4415681788775980429_n.webp?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=100&_nc_ohc=49gREt8DAKoAX_H1urc&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA0OTExMzE4MDM5MzA1ODU1Nw%3D%3D.2-ccb7-5&oh=00_AfCN-af6ApbOzxVC1J9WljbNTvJ3JjtGstF8iuVr9l6kzA&oe=6404DF58&_nc_sid=6136e7
/Users/shixuesen/OneDrive/Pictures/instagram/yifei_cc/ https://scontent-lax3-1.cdninstagram.com/v/t66.30100-16/10000000_3350498921867992_1199864389448827511_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjEwODAuY2xpcHMuaGlnaCIsInFlX2dyb3VwcyI6IltcImlnX3dlYl9kZWxpdmVyeV92dHNfb3RmXCJdIn0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=KZF8w_5QIb0AX8Nv_ep&edm=ABmJApABAAAA&vs=769980204489005_1297028759&_nc_vs=HBksFQAYJEdJQ1dtQURZNmc3U1F1Y0xBSGNDdlJkT3hxWVFicFIxQUFBRhUAAsgBABUAGCRHTElMOEFLdUYwakF6cndBQURuTExudXJ0WFZHYnBSMUFBQUYVAgLIAQAoABgAGwAVAAAmyprWgZGQ%2Bz8VAigCQzMsF0BlcQ5WBBiTGBJkYXNoX2hpZ2hfMTA4MHBfdjERAHX%2BBwA%3D&ccb=7-5&oh=00_AfC-7KhPX_Hgl_eyHz-5FLuX2_rOBJEGIiae26Bs_vNswQ&oe=64102159&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-1.cdninstagram.com/o1/v/t16/f1/m82/5846546C73E0665AEA9420B6B9CCB8A4_video_dashinit.mp4?efg=eyJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSIsInZlbmNvZGVfdGFnIjoidnRzX3ZvZF91cmxnZW4uNjQwLmNsaXBzLmJhc2VsaW5lIn0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&vs=1834925800186288_3854764589&_nc_vs=HBkcFQIYT2lnX3hwdl9yZWVsc19wZXJtYW5lbnRfcHJvZC81ODQ2NTQ2QzczRTA2NjVBRUE5NDIwQjZCOUNDQjhBNF92aWRlb19kYXNoaW5pdC5tcDQVAALIAQAoABgAGwAVAAAm0LTanNKQwz8VAigCQzMsF0ArzMzMzMzNGBJkYXNoX2Jhc2VsaW5lXzFfdjERAHX%2BBwA%3D&ccb=9-4&oh=00_AfCyki-C5d2wX_rD_BFvK2kIPh5Rs2P7V4J3nOYMxjU4VA&oe=641B62D9&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/306088673_784529202669973_6631828299179648744_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=mvQ_YWo09Y4AX-A6khI&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MjkyMzMwNTkyNjYzMTc0OTk0NA%3D%3D.2-ccb7-5&oh=00_AfAtmUd1yBkSCHZ1Qu0XRrNJBK1kNmc_muMB3Coo-bgWhA&oe=641E9FED&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/305124165_598769655039510_1933641232736451451_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5oaWdocHJvZmlsZS1iYXNlbGluZSIsInFlX2dyb3VwcyI6IltcImlnX3dlYl9kZWxpdmVyeV92dHNfb3RmXCJdIn0&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=DmQRSbL4218AX_gxdIK&edm=ABmJApABAAAA&vs=1023702468270994_860552630&_nc_vs=HBksFQAYJEdFWFRMeElXUnBmc2t5QUNBSHY3VGRCMHJOVWFicV9FQUFBRhUAAsgBABUAGCRHRmZvQlJKbTVnN1pDNE1CQUU4aXg4aEVoRk1GYnFfRUFBQUYVAgLIAQAoABgAGwAVAAAmjJT22p2Y7z8VAigCQzMsF0AriDEm6XjVGB5kYXNoX2hpZ2hwcm9maWxlLWJhc2VsaW5lXzFfdjERAHX%2BBwA%3D&ccb=7-5&oh=00_AfBXqw3CFdbhU4xmGbndM_uwvpXCsKJm8J7GLAqCCmSXXA&oe=641B8A7C&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/305361102_139069971899385_7510875558892705482_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjQ4MC5jbGlwcy5iYXNlbGluZSIsInFlX2dyb3VwcyI6IltcImlnX3dlYl9kZWxpdmVyeV92dHNfb3RmXCJdIn0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=PLLlJVO3JsUAX90sdCT&edm=ABmJApABAAAA&vs=1254846885266196_46387278&_nc_vs=HBksFQAYJEdNNXdNeEw1STBiQWUzNEFBTXFXOXNlRy1UdG9icV9FQUFBRhUAAsgBABUAGCRHTjI4TWhLaDBRZ3lQMUFFQU5ELWxGbGM3TnRmYnFfRUFBQUYVAgLIAQAoABgAGwAVAAAmlt3htI%2FEuD8VAigCQzMsF0AkVP3ztkWiGBJkYXNoX2Jhc2VsaW5lXzFfdjERAHX%2BBwA%3D&ccb=7-5&oh=00_AfBs8QTJvCzpgi7geCd6ARWx44s4oD4_WBAPdE1-hnV8QQ&oe=641B68FE&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/302566877_471591661539634_7387245564608654630_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=61-ysoJ2GJcAX_V8Egz&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MjkxODk2NDIyMDAzMzUwMDAwOA%3D%3D.2-ccb7-5&oh=00_AfDb3z1kIQquOqUstQ-lLM4iWCbZw3a3Z2y4jkA_nVWIAQ&oe=641F7026&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/305001137_611317280348187_5078299659422184300_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=103&_nc_ohc=CI0d-jyt9KQAX_6KHKH&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MjkxODk2NDIyMDAzMzU2MDQyMA%3D%3D.2-ccb7-5&oh=00_AfAMjbxKRt5qjonUfmj0NgwiBK3ICHF38g68vH1CQOdL2g&oe=641E343B&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/doly0818/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/305018179_3261658000789252_5515474327167614441_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=D6k58qRmnf4AX8S1zlR&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MjkxODk2NDIyMDA1ODg0ODAzNw%3D%3D.2-ccb7-5&oh=00_AfDZ7LIW7qBOH3OGlf7MSTz_tgyJX1viNWxAiOy9K93d5g&oe=641E934E&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/ms_puiyi/ https://scontent-sjc3-1.cdninstagram.com/v/t51.2885-15/337421739_1216479642343049_8410880872104146798_n.jpg?stp=dst-jpg_e15&_nc_ht=scontent-sjc3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=npBktsRTy0UAX8hXOTH&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA2NDg1MDE3NjU2ODM0ODM4OQ%3D%3D.2-ccb7-5&oh=00_AfCl4P4h4DoOlKFS0Z1JGvTfF_jW0L4q91a1C5JsdProoQ&oe=64233C6C&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/ms_puiyi/ https://scontent-sjc3-1.cdninstagram.com/v/t51.2885-15/337306479_2336046279922454_9056320335810269011_n.jpg?stp=dst-jpg_e15&_nc_ht=scontent-sjc3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=qgK5KFU9GuEAX_xnoVa&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA2NDg1MDE3NzgxNTc4MDk1MA%3D%3D.2-ccb7-5&oh=00_AfAutpSD5f0vyy0n0zTob0ZEE1SIjgQzUAfh-WkHM_PkSA&oe=64219F9E&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/20130235_151752535397634_7513382081271955456_n.mp4?efg=eyJxZV9ncm91cHMiOiJbXCJpZ19wcm9ncmVzc2l2ZV91cmxnZW4ucHJvZHVjdF90eXBlLmZlZWRcIl0ifQ&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=MNRZQ3-cQH0AX88I0Na&edm=ABmJApABAAAA&ccb=7-5&oh=00_AfD9bhIkZBLrdKT729eyQLlH3Ai-WNMuOzWbFzrAwA6dig&oe=6428975F&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/10000000_245196011073450_3978577606703858329_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=nXMrQTxFlmMAX__4nEm&edm=ABmJApABAAAA&vs=17926200065077094_1786842476&_nc_vs=HBksFQAYJEdJQ1dtQUNxN3lNbEFkOEFBSmxDNlA1QXZ6WTNicUNCQUFBRhUAAsgBABUAGCRHR2daT2hBS0Nnb0o3MVlDQU03TTN1OWtlaFlmYnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaKmqvc39XgPxUCKAJDMywXQIRqysCDEm8YEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfDYFEFAeo5lktgvJBqWcxa8RVJlQdKRSpMZfiPRsMOCfg&oe=64299384&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/10000000_816231449228512_5275018916717540040_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=VvMcxZsDxakAX9ocPYz&edm=ABmJApABAAAA&vs=17947165330715929_1686556750&_nc_vs=HBksFQAYJEdJQ1dtQURnOUpXeFdfWUNBTWd5YXFyQm9UUkpicUNCQUFBRhUAAsgBABUAGCRHQjh2TFJCYnhJWWNUUVFFQUpkeFdFUU1PY2d6YnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaEoY3t3Z%2FOPxUCKAJDMywXQIf8ZFocrAgYEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfDnFfx6juYdYgKHYBr_3cnh7QBqsvVvyS8gqMWJiFRwQw&oe=642958B1&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/10000000_139437671818534_5289898710386471027_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=lc8Rr9pNX2wAX8KGfQt&edm=ABmJApABAAAA&vs=17947752697636528_1895491438&_nc_vs=HBksFQAYJEdJQ1dtQUFtcGVWYzBYNEFBSFB3WVpyWmZtbEpicUNCQUFBRhUAAsgBABUAGCRHTlA4S3hESTV3MG5PdHdRQU5uZ2hJV1lhekp4YnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACawu5%2FNpoT1PxUCKAJDMywXQJJg7peNT98YEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfBjqWxCiruBiLsI_jEVBS4vfSiEKQVCqAcv8QH3oNA-Tg&oe=64299377&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/10000000_1243738766137779_3185429725621617173_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=103&_nc_ohc=7T1YP-72N2UAX9QUkSt&edm=ABmJApABAAAA&vs=17917081925055221_998335223&_nc_vs=HBksFQAYJEdJQ1dtQUN6V1ZsLUxHc0VBQldDcFZSMTZ6UXNicUNCQUFBRhUAAsgBABUAGCRHSUx6RmhBS1FRRnh3bEVCQUVGMnBEMHkyUGRCYnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbI7Pnotb7uQBUCKAJDMywXQJWFSLQ5WBAYEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfDlPwg8jkxK-UCR0YgszmEOhNEfSldm79XyzWSS06-Eyg&oe=642951A2&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/10000000_818668099004730_3134112962501818641_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=pBAkz9vHdBgAX_5tMRx&edm=ABmJApABAAAA&vs=17873430806254603_239911059&_nc_vs=HBksFQAYJEdJQ1dtQUE2NlRvRmtfZ0NBQkU1M2xjaW0zNHJicUNCQUFBRhUAAsgBABUAGCRHRHBCT1FtX1dDNlZYa0FFQUJsSThNV010dGhsYnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaW3Z7IzPK%2FPxUCKAJDMywXQI4llYEGJN0YEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfCPSPtP-wSAlKwGEBEO61TbzN1qrCRKv86DGJlLHnqAEg&oe=64299EE1&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/parlovetati/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/10000000_607349996700251_264575771520038342_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5pZ3R2LmRlZmF1bHQiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=heHUslkae_UAX-l3CL3&edm=ABmJApABAAAA&vs=18083510356236989_432273197&_nc_vs=HBksFQAYJEdJQ1dtQUJid3M2d1lTZ0NBTVoxb0MxRDlxc0RicUNCQUFBRhUAAsgBABUAGCRHSUNXbUFBVGFrc01TaUlCQUlqQkVJV09aOVlhYnFDQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACb6wd6R67afQBUCKAJDMywXQJypul41P30YFWRhc2hfYmFzZWxpbmVfNzIwcF92MREAdewHAA%3D%3D&ccb=7-5&oh=00_AfCGPmAnGhTcVsWapAUxpJejxk6lxRspmgwIIiXK3FiQXQ&oe=6429DFDD&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/341412046_158039300251202_4524950755884184369_n.jpg?stp=dst-jpg_e15&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=ut6RkQ2VYFEAX8FWov_&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA4MzQzNzk3MDAwNTczNTk2Mg%3D%3D.2-ccb7-5&oh=00_AfCincNWSWVG_QMs2qhZFkXxku22bHMlfBbSuPQ1T5XrGw&oe=644C775F&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/341924248_788079609196411_3832985151774792148_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=107&_nc_ohc=SirlS_gyozMAX8k0qwD&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA4MzQzODc1NDQ0MTI3NDcyNg%3D%3D.2-ccb7-5&oh=00_AfAXY2SbjeZFwzWY06dSBL4psEEguXdZoMPvcjHyZXp89Q&oe=644C5BB4&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/amberchenslife/ https://scontent-lax3-2.cdninstagram.com/v/t66.30100-16/10000000_966609704344935_1907735401525748622_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjEwODAuY2xpcHMuYmFzZWxpbmUiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=103&_nc_ohc=wrFCWP2NfdkAX8hQ_GP&edm=ABmJApABAAAA&vs=944047243415528_3241796991&_nc_vs=HBksFQAYJEdJQ1dtQUJuWFJCY0lHOERBSTRqWVhVOW8za2FicFIxQUFBRhUAAsgBABUAGCRHRWg0c0FrcktfOWl5RU1EQVBjNGhxX0VDazFDYnBSMUFBQUYVAgLIAQAoABgAGwAVAAAmgtusyrTpgkAVAigCQzMsF0BN92yLQ5WBGBZkYXNoX2Jhc2VsaW5lXzEwODBwX3YxEQB1%2FgcA&ccb=7-5&oh=00_AfA6r3msZo0dUDrqHPifPQ-wSeWkco0IbwnBzpmsexbipQ&oe=645A1E27&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/lurehsu/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/345238611_605050394683705_2910951418340466386_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=KXMXWTAX2A8AX-U71YP&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzA5NTk4NTgyMTg1Mzc5Mzg0NQ%3D%3D.2-ccb7-5&oh=00_AfCDzIGNvHtCcTIf1-H9y11n3Vpf1SsNWpTCVbL2iWmFqQ&oe=6460E234&_nc_sid=6136e7
+/Users/shixuesen/OneDrive/Pictures/instagram/Likes_new/ https://scontent-lax3-1.cdninstagram.com/v/t66.30100-16/10000000_136084739454377_6272574686122322584_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjEwODAuY2xpcHMuYmFzZWxpbmUiLCJxZV9ncm91cHMiOiJbXCJpZ193ZWJfZGVsaXZlcnlfdnRzX290ZlwiXSJ9&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=WssCkmW5UT4AX8NDmvv&edm=AJ9x6zYBAAAA&vs=611618730904331_491832877&_nc_vs=HBksFQAYJEdJQ1dtQUNwOVkyeXhIc0FBSmlxYllseHFReFhicFIxQUFBRhUAAsgBABUAGCRHSDFGQmhNLVc4S1AyZUlBQUlzeEJVU1BKQkkyYnBSMUFBQUYVAgLIAQAoABgAGwAVAAAmxLW3%2Fo%2FihEAVAigCQzMsF0BoKIMSbpeNGBZkYXNoX2Jhc2VsaW5lXzEwODBwX3YxEQB1%2FgcA&ccb=7-5&oh=00_AfBKFJQstZ1ekwrOI7GsvbRpyEC02zPCdwVrYYw7D-LN2g&oe=6460A938&_nc_sid=cff2a4
+/Users/shixuesen/OneDrive/Pictures/instagram/Likes_new/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/345931432_625184756148113_9138877017364304521_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=stWmcUrBW20AX8XtRKs&edm=AJ9x6zYBAAAA&ccb=7-5&ig_cache_key=MzA5OTQ0NTg4NTU0MDM2NDYyNA%3D%3D.2-ccb7-5&oh=00_AfAvIt3oxtboi00s03xaFTVq8cn2EZNfQWNFsjv7hEtJBA&oe=646362EE&_nc_sid=cff2a4
+/Users/shixuesen/OneDrive/Pictures/instagram/Likes_new/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/346099706_899919744403864_7120782227451009418_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=EwQpmrDMOHYAX94fhzP&edm=AJ9x6zYBAAAA&ccb=7-5&ig_cache_key=MzA5OTMyMTg4NzEzMjk1MTI3OQ%3D%3D.2-ccb7-5&oh=00_AfDud-YAzBD4Cdja7JFSEx1TY2YumruNKdLIZuRo0X4TgA&oe=64649584&_nc_sid=cff2a4
+/Users/shixuesen/OneDrive/Pictures/instagram/Likes_new/ https://scontent-iad3-1.cdninstagram.com/v/t51.2885-15/346459754_955189092187244_3132305561500628055_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-iad3-1.cdninstagram.com&_nc_cat=108&_nc_ohc=C98RI21lRWAAX8fkxKH&edm=AJ9x6zYBAAAA&ccb=7-5&ig_cache_key=MzEwMTgwMDU0NzA5NjIwODIwOQ%3D%3D.2-ccb7-5&oh=00_AfCRSZqn9t83cur5cC9OXeY1JyXxYGRfQ0IP9pUH4d7ZgQ&oe=646660F6&_nc_sid=cff2a4
+/Users/shixuesen/OneDrive/Pictures/instagram/naughty_rabbit_/ https://scontent-iad3-2.cdninstagram.com/v/t51.2885-15/347463511_1035962154032722_6961171125783130309_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-iad3-2.cdninstagram.com&_nc_cat=1&_nc_ohc=LSu6GP7rqQcAX9Ej9TO&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzEwNTc1NjA2ODEzNjQ5ODU5OA%3D%3D.2-ccb7-5&oh=00_AfDiIVH4gjZiGlaN66rQK4SUVgkIoZT8DbPiMVV_sk87Yg&oe=64707769&_nc_sid=a1ad6c
+/Users/shixuesen/OneDrive/Pictures/instagram/beargenie/ https://scontent-iad3-2.cdninstagram.com/v/t51.2885-15/347725126_201443812840049_8752093749535121235_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-iad3-2.cdninstagram.com&_nc_cat=105&_nc_ohc=VDWn6gqwcC8AX9UtXT-&edm=ABmJApABAAAA&ccb=7-5&ig_cache_key=MzEwNjc3NTI1NTg1NTUyMDY2NQ%3D%3D.2-ccb7-5&oh=00_AfC3fPRjXm30Ie7RhuORR07U1obFzYUNICZiXNWZszM9nQ&oe=6471ED97&_nc_sid=a1ad6c
+/Users/shixuesen/OneDrive/Pictures/instagram/Likes_new/ https://scontent-ord5-1.cdninstagram.com/v/t51.2885-15/350240208_624666975993937_7913994115751187492_n.jpg?stp=dst-jpg_e35&_nc_ht=scontent-ord5-1.cdninstagram.com&_nc_cat=101&_nc_ohc=zb6WaSWvg5MAX9TntT8&edm=AJ9x6zYBAAAA&ccb=7-5&ig_cache_key=MzExMzE2ODAwMDU5ODYyNjkxOQ%3D%3D.2-ccb7-5&oh=00_AfBMMq50XQ70XGfBqt7mUx0xdx5b2Trd-vCGyghefYWI6A&oe=647AF0B2&_nc_sid=5f7460