diff --git a/.idea/php.xml b/.idea/php.xml index 6b24f53..9303ec8 100644 --- a/.idea/php.xml +++ b/.idea/php.xml @@ -165,6 +165,7 @@ + diff --git a/app/Console/Commands/BiliVideoCode.php b/app/Console/Commands/BiliVideoCode.php index cd65415..16ed9ed 100644 --- a/app/Console/Commands/BiliVideoCode.php +++ b/app/Console/Commands/BiliVideoCode.php @@ -49,12 +49,12 @@ class BiliVideoCode extends Command // $bilibili->insertDBTest();exit; // $bilibili->queryPlayList(); - $bilibili->queryUpVideoList(10278125); +// $bilibili->queryUpVideoList(10278125); // exit; - $bilibili->queryDBCollectionList(); +// $bilibili->queryDBCollectionList(); // exit; -// $bilibili->queryForVideoParts(); + $bilibili->queryForVideoParts(); $bilibili->compareAndDownloadUpVideos(); // exit; $bilibili->compareAndDownloadCollectionVideos(); @@ -63,7 +63,7 @@ class BiliVideoCode extends Command // $bilibili->queryLocalUpVideoList(); // $bilibili->queryForVideoParts(); // $bilibili->queryDBCollectionList(); - $bilibili->checkVideoHasDownload(); +// $bilibili->checkVideoHasDownload(); // echo is_dir("/Volumes/Seagate Backup Plus Drive/Video/bilibili/少女时代"); } diff --git a/app/Console/Commands/ComicsScrape.php b/app/Console/Commands/ComicsScrape.php index f0673a4..9664fdb 100644 --- a/app/Console/Commands/ComicsScrape.php +++ b/app/Console/Commands/ComicsScrape.php @@ -39,7 +39,8 @@ class ComicsScrape extends Command public function handle() { $comic = new ComicsService(); - $comic->scrapeAllAlbum("https://www.003004.com/papa"); +// $comic->scrapeAllAlbum("https://www.003004.com/papa"); + $comic->processHomeBusinessPeople("http://homebusinesspeople.com/detail/1829683o344697.html"); // } } diff --git a/app/Console/Commands/CommonTest.php b/app/Console/Commands/CommonTest.php index 5247ec0..88df0f8 100644 --- a/app/Console/Commands/CommonTest.php +++ b/app/Console/Commands/CommonTest.php @@ -41,6 +41,7 @@ class CommonTest extends Command */ public function handle() { + $this->testAnnie();exit; $commonScrapeService = new CommonScrapeService(); $commonScrapeService->scrapeAlbum();exit; dump(FileUtils::scanDuplicateDir("/Volumes/intel660p/image/xg/ycc"));exit; @@ -61,4 +62,12 @@ class CommonTest extends Command print_r($p2); // } + + public function testAnnie() + { + $result = shell_exec("annie -i av417536178"); + echo $result; + preg_match_all("#\[(\d+)\]\s+-+\s+Quality:\s+[\S]+\s+720P#", $result, $match); + dump($match); + } } diff --git a/app/Console/Commands/HandBrakeCommand.php b/app/Console/Commands/HandBrakeCommand.php index 3b08650..41ecfff 100644 --- a/app/Console/Commands/HandBrakeCommand.php +++ b/app/Console/Commands/HandBrakeCommand.php @@ -3,6 +3,7 @@ namespace App\Console\Commands; use App\Services\HandBrakeService; +use App\Services\ReplaceCompressedVideoService; use Illuminate\Console\Command; class HandBrakeCommand extends Command @@ -12,7 +13,7 @@ class HandBrakeCommand extends Command * * @var string */ - protected $signature = 'handle:video'; + protected $signature = 'handle:video {path}'; /** * The console command description. @@ -39,8 +40,11 @@ class HandBrakeCommand extends Command public function handle() { // - $service = new HandBrakeService(); - $service->processDir(); + $path = $this->argument("path"); + echo $path; +// $service = new HandBrakeService(); + $service = new ReplaceCompressedVideoService(); + $service->processDir(trim($path)); // $service->processUnCompleteDir(); } } diff --git a/app/Console/Commands/InstagramScrape.php b/app/Console/Commands/InstagramScrape.php index 13e21d3..e2e4e47 100644 --- a/app/Console/Commands/InstagramScrape.php +++ b/app/Console/Commands/InstagramScrape.php @@ -13,7 +13,7 @@ class InstagramScrape extends Command * * @var string */ - protected $signature = 'ins:like'; + protected $signature = 'ins:like {start}'; /** * The console command description. @@ -39,10 +39,16 @@ class InstagramScrape extends Command */ public function handle() { +// $dir = "/aaa/bbb"; +// $dir = str_replace("/", "", $dir); +// echo $dir;exit; // + $start = $this->argument('start'); +// echo $start;exit; $ins = new InstagramService(); - $ins->scrapeUsers(); - $ins->scrapeLikedUsers();exit; + $ins->scrapeUsers($start); + $ins->scrapeLikedUsers(); + $ins->scrapeCollection();exit; // $ins->getUserNameById(); // $ins->queryFollowUsers(); // $ins->commonRequest(); diff --git a/app/Console/Commands/RenameTest.php b/app/Console/Commands/RenameTest.php index dbe68e7..c4c5371 100644 --- a/app/Console/Commands/RenameTest.php +++ b/app/Console/Commands/RenameTest.php @@ -40,8 +40,8 @@ class RenameTest extends Command { // $rename = new RenameService(); -// $rename->rename("/Volumes/WD/tmp/尤果网/尤G网", "尤果网-"); - $rename->rename("/Volumes/Backup/images/写真/【写真】Shika小鹿鹿 – 69套图合集", ""); +// $rename->rename("/Volumes/WD/tmp/写真图/猫九", "猫九-"); + $rename->rename("/Volumes/Backup/images/写真/pcBack/3/", ""); // $rename->rename(); // $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/"); } diff --git a/app/Console/Kernel.php b/app/Console/Kernel.php index e9ef5fa..ad49ff1 100644 --- a/app/Console/Kernel.php +++ b/app/Console/Kernel.php @@ -17,6 +17,7 @@ use Illuminate\Foundation\Console\Kernel as ConsoleKernel; use App\Services\InstagramService; use Illuminate\Support\Facades\Log; +date_default_timezone_set('PRC'); class Kernel extends ConsoleKernel { diff --git a/app/Http/Controllers/WeiboController.php b/app/Http/Controllers/WeiboController.php index 8e23212..0b6b43b 100644 --- a/app/Http/Controllers/WeiboController.php +++ b/app/Http/Controllers/WeiboController.php @@ -32,7 +32,7 @@ class WeiboController extends Controller // for( $i = 341; $i >= 1 ; $i-- ) // $url[] = 'https://m.weibo.cn/api/container/getIndex?containerid=1076035893812490&openApp=0&page='.$i; - for( $i = 12; $i >= 1 ; $i-- ) + for( $i = 20; $i >= 1 ; $i-- ) $url[] = 'https://m.weibo.cn/api/container/getIndex?containerid=230259&openApp=0&page='.$i; // for ($i = 5; $i >= 1; $i--) { // $url[] = 'https://m.weibo.cn/feed/group?gid=4423532052076817&&page=' . $i; diff --git a/app/Services/BilibiliServiceV2.php b/app/Services/BilibiliServiceV2.php index 21c63b9..bc64ab3 100644 --- a/app/Services/BilibiliServiceV2.php +++ b/app/Services/BilibiliServiceV2.php @@ -238,6 +238,7 @@ class BilibiliServiceV2 public function compareAndDownloadUpVideos($isAll = false) { $list = BilibiliUpVideos::all(); +// $list = array_slice($list->all(), 15, 5); foreach ($list as $item) { dump("当前 up名称是: " . $item["up_name"] . "\n"); if ($item["is_downloaded"] == 1) { @@ -251,15 +252,26 @@ class BilibiliServiceV2 ->where('created_at', '>=', date("Y-m-d H:i:s", strtotime("-1 week")))->get(); } $videoList = []; + $videoPartsMap = []; if (count($vItems) > 0) { foreach ($vItems as $vItem) { if ($vItem["is_download"] == 1 && $vItem["is_downloaded"] == 0) { - $videoList[] = "av" . $vItem["aid"]; +// $videoList[] = "av" . $vItem["aid"]; + $videoPartsMap = []; + $videoPartsMap[$vItem["aid"]] = $vItem["total_parts"]; + echo "当前 up名称是: " . $item["up_name"] . " 当前下载的视频 title: " . $vItem["title"] . " 当前下载的视频 aid 是:" . $vItem["aid"] . "\n" ; + Log::info("当前 up名称是: " . $item["up_name"] . " 当前下载的视频 title: " . $vItem["title"] . " 当前下载的视频 aid 是:" . $vItem["aid"]); if ($item['mid'] == 27174777) { - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/bilibili/", "女团"); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/", "女团"); + } else if ($item["mid"] == 391316322) { + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/", "娜娜"); + } else if ($item["mid"] == 396501206) { + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/", "佳佳"); } else { - $this->downloadBSitePlaylist($videoList, $this->baseDir . "bilibili/", $item['up_name']); + $this->partDownloadBSitePlaylist($videoPartsMap, $this->baseDir . "bilibili/", $item['up_name']); } + $vItem["is_downloaded"] = 1; + $vItem->save(); } } } @@ -276,6 +288,7 @@ class BilibiliServiceV2 } Log::info("schedule compareAndDownloadCollectionVideos current collection is {$item['title']}, started at: " . date("Y-m-d H:i:s")); $videoList = []; + $videoPartsMap = []; if ($isAll) { $vItems = BilibiliVideos::where("collection_mid", $item["media_id"])->get(); } else { @@ -287,21 +300,27 @@ class BilibiliServiceV2 if (count($vItems) > 0) { foreach ($vItems as $vItem) { if ($vItem["is_download"] == 1 && $vItem["is_downloaded"] == 0) { - $videoList[] = "av" . $vItem["aid"]; +// $videoList[] = "av" . $vItem["aid"]; + $videoPartsMap = []; + $videoPartsMap[$vItem["aid"]] = $vItem["total_parts"]; + echo "收藏夹名称是: " . $item["title"] . " 当前下载的视频 title: " . $vItem["title"] . " 当前下载的视频 aid 是:" . $vItem["aid"] . "\n" ; + Log::info("收藏夹名称是: " . $item["title"] . " 当前下载的视频 title: " . $vItem["title"] . " 当前下载的视频 aid 是:" . $vItem["aid"]); if ($item['title'] == "默认收藏夹") { dump("xxxxxxxxxxxx----------------"); - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/", "bilibili"); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/", "bilibili"); } else if ($item['title'] == '少女时代') { - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/bilibili/少女时代", ""); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/少女时代", ""); } else if ($item['title'] == 'aoa') { - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/bilibili/aoa", ""); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/aoa", ""); } else if ($item['title'] == 'blackpink') { - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/bilibili/blackpink", ""); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/blackpink", ""); } else if ($item['title'] == 'wjsn') { - $this->downloadBSitePlaylist($videoList, "/Volumes/WD/tmp/bilibili/wjsn", ""); + $this->partDownloadBSitePlaylist($videoPartsMap, "/Volumes/WD/tmp/bilibili/wjsn", ""); } else { - $this->downloadBSitePlaylist($videoList, $this->baseDir . "bilibili/", $item['title']); + $this->partDownloadBSitePlaylist($videoPartsMap, $this->baseDir . "bilibili/", $item['title']); } + $vItem["is_downloaded"] = 1; + $vItem->save(); } } } @@ -557,13 +576,19 @@ class BilibiliServiceV2 public function queryForVideoParts() { $i = 1; - $list = BilibiliVideos::simplePaginate(50, null, 'page', $i); + $list = BilibiliVideos::orderBy('id', 'desc')->simplePaginate(200, null, 'page', $i); // dump($list->items()[0]->aid); while ($list->isNotEmpty()) { foreach ($list->items() as $item) { // dump("current item", [$item->getAttributes()]); $response = $this->requestVideoParts($item->aid); - $partList = Arr::get(json_decode($response, true), "data"); + dump($response); + $responseJson = json_decode($response, true); + if ($responseJson["code"] !== 0) { + Log::error("response is error, aid: " . $item->aid . " response: " . $response); + continue; + } + $partList = Arr::get($responseJson, "data"); if (count($partList) > 0) { foreach ($partList as $part) { if ($item["from_type"] == 1) { @@ -591,8 +616,12 @@ class BilibiliServiceV2 $item->total_parts = count($partList); $item->save(); } - + try { + usleep(random_int(10, 100) * 1000); + } catch (\Exception $e) { + } } + break; $i++; $list = BilibiliVideos::simplePaginate(50, null, 'page', $i); try { @@ -834,9 +863,6 @@ class BilibiliServiceV2 */ public function partDownloadBSitePlaylist($aidMap, $dir = "/Volumes/intel660p/video/mv/mp4", $subDir) { - dump("partDownloadBSitePlaylist"); - dump($aidMap); - dump($dir); $dirExists = is_dir($dir); dump($dirExists); if ($dirExists) { @@ -845,13 +871,15 @@ class BilibiliServiceV2 if (!is_dir($innerDir)) { mkdir($innerDir); } + echo "当前视频的下载路径是: " . $innerDir . "\n"; + Log::info("当前视频的下载路径是: " . $innerDir ); foreach ($aidMap as $aid => $parts) { dump($aid); Log::info("current download command is : cd '{$innerDir}' && annie -r https://www.bilibili.com/video/av80815149 -p " . $aid); $downloadResult = shell_exec('cd "' .$innerDir .'" && url="https://www.bilibili.com/video/av' . $aid . '?p=" for i in $(seq 1 ' . $parts . ') do -annie -c "SESSDATA=75ed2a5a%2C1620866280%2Cc0fab*b1" $url$i +annie -f 64 $url$i done ' ); Log::info($downloadResult); Log::info("current download result: " . $downloadResult); diff --git a/app/Services/ComicsService.php b/app/Services/ComicsService.php index 16ed259..fd0b9c8 100644 --- a/app/Services/ComicsService.php +++ b/app/Services/ComicsService.php @@ -11,6 +11,10 @@ class ComicsService private $queryInstance; +// private $comicRootPath = "/Volumes/Backup/HuaVid/全彩汉化韩漫第01弹"; + + private $comicRootPath = "/Users/shixuesen/Documents/fixnew"; + public function __construct() { $this->queryInstance = QueryList::getInstance(); @@ -65,13 +69,63 @@ class ComicsService public function processAlbum($item) { $content = $this->getQueryInstance()->get($item["link"]); + // 单个相册里的页码链接 $rules = [ - "link" => [".post-page-numbers", "href"] + "link" => ["", "href"] ]; - $range = ".article-content > div:nth-child(1) a"; -// $list = $content->rules($rules)->range($range)->query()->getData(); - $list = $content->find(".article-content > div:nth-child(1) a")->attrs("href"); - dump($list->all()); + $range = ".article-content > div:nth-child(2) a"; + $items = $content->rules($rules)->range($range)->query()->getData(); +// $items = $content->find(".article-content > div:nth-child(2) a")->attrs("href"); + dump("album link list", $items->all()); + $parsedItems = array_slice($items->all(), 0, count($items->all()) - 1); + $imageRules = [ + "src" => ["", "src"] + ]; + $imageRange = "body > section > div.content-wrap > div > article > p:nth-child(4) img"; + $imageItems = $content->rules($imageRules)->range($imageRange)->query()->getData(); + $parsedImageItems = $imageItems->all(); + +// dump($items->all());exit; + foreach ($parsedItems as $parsedItem) { + break; + $content = $this->getQueryInstance()->get($parsedItem["link"]); + $imageItems = $content->rules($imageRules)->range($imageRange)->query()->getData(); + $parsedImageItems = array_merge($parsedImageItems, $imageItems->all()); + break; + } + $this->processSingleAlbumPage($parsedImageItems, $item["title"]); + } + + public function processSingleAlbumPage($items, $title) + { + CommonService::mergeImage($this->comicRootPath . "/" . $title, array_slice($items, 0, 50));exit; + foreach ($items as $item) { + CommonService::downloadImage($this->comicRootPath . "/" . $title, $item["src"]); + } + dump(array_slice($items, 0, 10)); + } + + public function processImages($item) + { + + } + + public function processHomeBusinessPeople($url) + { + $content = $this->getQueryInstance()->get($url); + $imageRules = [ + "src" => ["", "data-src"] + ]; + $imageRange = "#comicdetail > div:nth-child(7) img"; + $items = $content->rules($imageRules)->range($imageRange)->query()->getData(); + dump($items->all()); + foreach ($items->all() as $item) { + if ($item["src"] != null) { + CommonService::downloadImage($this->comicRootPath . "/" . "【周二连载】继母的朋友们(作者:Red-A&頸枕) 第1~48话/", $item["src"]); + } + usleep(1000); + } + } } diff --git a/app/Services/CommonService.php b/app/Services/CommonService.php index 32e4540..96814e3 100644 --- a/app/Services/CommonService.php +++ b/app/Services/CommonService.php @@ -17,17 +17,62 @@ class CommonService $host = parse_url($imageUrl, PHP_URL_HOST); $dirList = explode("/", $dir); $albumName = array_pop($dirList); - $cookieStr = "__cfduid=d959b19dbaa25a5fac7c5fe1d3988d15e1610778634; frontend=36ab879e6d75ae4e19e4843a1bdf2e45; _gid=GA1.2.22159331.1610804846; __cf_bm=19f3172d7b8d3c97ce28f86ec56af4da3c3560a2-1610805781-1800-Adr3Ph9l2oeHE9Ms+YrTrKfE1uwMO7Tpcw/WxfRrPldspHy/AcwPovSpDcrz+DE3UHWhrw60voIaOsPy3VvpvTV9fjU9F1Hk3y1U5O6V1RZeclh6+YoIpZc1UfRyixPrKw==; frontend-rmu=qUl6oIQSib76RH6A4ZJGALhooK63; frontend-rmt=3d1i%2F0DU5cuBB%2BII5MzosWl0MPonPRchZyJyhL73PzaHWBzoq9RFDWJG%2FDPtCncI; _ga_170M3FX3HZ=GS1.1.1610804845.1.1.1610806191.0; _ga=GA1.2.6396742.1610804846; _gat_UA-140713725-1=1"; - $cookieArr = parseCookieHeader($cookieStr); - $cookieJar = CookieJar::fromArray($cookieArr, ".v2ph.com"); +// $cookieStr = "__cfduid=d959b19dbaa25a5fac7c5fe1d3988d15e1610778634; frontend=36ab879e6d75ae4e19e4843a1bdf2e45; _gid=GA1.2.22159331.1610804846; __cf_bm=19f3172d7b8d3c97ce28f86ec56af4da3c3560a2-1610805781-1800-Adr3Ph9l2oeHE9Ms+YrTrKfE1uwMO7Tpcw/WxfRrPldspHy/AcwPovSpDcrz+DE3UHWhrw60voIaOsPy3VvpvTV9fjU9F1Hk3y1U5O6V1RZeclh6+YoIpZc1UfRyixPrKw==; frontend-rmu=qUl6oIQSib76RH6A4ZJGALhooK63; frontend-rmt=3d1i%2F0DU5cuBB%2BII5MzosWl0MPonPRchZyJyhL73PzaHWBzoq9RFDWJG%2FDPtCncI; _ga_170M3FX3HZ=GS1.1.1610804845.1.1.1610806191.0; _ga=GA1.2.6396742.1610804846; _gat_UA-140713725-1=1"; +// $cookieArr = parseCookieHeader($cookieStr); +// $cookieJar = CookieJar::fromArray($cookieArr, ".v2ph.com"); $client = new GuzzleHttp\Client(['headers' => [ 'User-Agent' => 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.109 Safari/537.36', 'Referer' => $host, - 'cookies' => $cookieJar +// 'cookies' => $cookieJar ]]); $fileParts = pathinfo($imageUrl); $completeFile = $dir . "/" . $albumName . "-" . $fileParts["filename"] . "." . $fileParts["extension"]; $client->request('GET', $imageUrl, ['sink' => $completeFile]); } + public static function mergeImage($path, $picList) + { + $imgInfo = array();//图片信息 + $tmp = 1; + $width = 720;//生成的图像宽度 + $picCount = count($picList);//图片总数 + $imgInfo['width'] = $width; + $imgInfo['height'] = 0; + //首先等比例缩放,让所有图片宽度一样,计算出图片等比例缩放后的长和宽 + for ($i = 0; $i < $picCount; $i++) { + usleep(100); + $imgInfo[$i]['url'] = $picList[$i]['src']; + $imgInfo[$i] = getimagesize($imgInfo[$i]['url']); + $tmp = ($imgInfo[$i][0]) / $width; + $imgInfo[$i]['width'] = $width; + $imgInfo[$i]['height'] = ($imgInfo[$i][1]) / $tmp; + $imgInfo[$i]['url'] = $picList[$i]['src']; + $imgInfo[$i]['x'] = 0; + $imgInfo[$i]['y'] = $imgInfo['height']; + $imgInfo['height'] += $imgInfo[$i]['height']; + + } + $new_img = ImageCreateTrueColor($imgInfo['width'], $imgInfo['height']); // 创建一个画布,作为拼接后的图片 + for ($i = 0; $i < $picCount; $i++) { + usleep(100); + //以下的三行代码 缩放原图 + $img_r = imagecreatefromjpeg($imgInfo[$i]['url']); // 获取原图 + $dst_r = ImageCreateTrueColor($imgInfo[$i]['width'], $imgInfo[$i]['height']); // 获取新图 + imagecopyresampled($dst_r, $img_r, 0, 0, 0, 0, + $imgInfo[$i]['width'], $imgInfo[$i]['height'], $imgInfo[$i][0], $imgInfo[$i][1]); + + //把缩放后的图片放在画布上 + imagecopyresampled($new_img, $dst_r, $imgInfo[$i]['x'], $imgInfo[$i]['y'], 0, 0, + $imgInfo['width'], $imgInfo[$i]['height'], $imgInfo[$i]['width'], $imgInfo[$i]['height']); + + imagedestroy($dst_r);//销毁掉缩放的图片 + } + //获取时间戳,以时间戳的名字存放 + $name = strval(time()); + $img_path = $path . $name . ".jpg"; + //存放拼接后的图片到本地 + imagejpeg($new_img, $img_path); + + } + } diff --git a/app/Services/HandBrakeService.php b/app/Services/HandBrakeService.php index ee208ab..012eb6c 100644 --- a/app/Services/HandBrakeService.php +++ b/app/Services/HandBrakeService.php @@ -53,7 +53,7 @@ class HandBrakeService } // public function processDir($baseDir = "/Volumes/WD/Video/HuaVid/") - public function processDir($baseDir = "/Volumes/Samsung/weibo/old_video") + public function processDir($baseDir = "/Volumes/Backup/HuaVid/大忽悠") { $files = scandir($baseDir); foreach ($files as $file) { @@ -85,7 +85,7 @@ class HandBrakeService $width = $video->get('width')->getAbsoluteValue(); if ($width <= 1280 && $height <= 720) { echo "$pathFile 分辨率小于 720p 跳过\n"; - return; +// return; } } $fileInfo = pathinfo($pathFile); diff --git a/app/Services/InstagramService.php b/app/Services/InstagramService.php index 3e15e18..17dd02a 100644 --- a/app/Services/InstagramService.php +++ b/app/Services/InstagramService.php @@ -139,7 +139,7 @@ class InstagramService $myfile = file_put_contents($failLogFile, $filePrefix . "\t" . $fileUrl . PHP_EOL, FILE_APPEND | LOCK_EX); } - function downloadFile($filenameUrl, $flag = 0, $filePrefix = "") + function downloadFile($filenameUrl, $flag = 0, $filePrefix = "", $fileNamePrefix = "") { //echo $filenameUrl;exit; $filePathInfo = pathinfo($filenameUrl); @@ -152,6 +152,7 @@ class InstagramService if ($pos > 0) { $filename = substr($filename, 0, $pos); } + $filename = $fileNamePrefix . $filename; // if ($filename == "33020038_640464766303508_27725890796388352_n.jpg"){ // $flag = 1; // } @@ -242,14 +243,14 @@ class InstagramService $imageUrl = $item->getImageVersions2()->getCandidates()[0]->getUrl(); $res = $this->downloadFile($imageUrl, 0, $baseImageDir); if ($res == 0) { - exit; + return; } break; case Item::VIDEO: $videoUrl = $item->getVideoVersions()[0]->getUrl(); $res = $this->downloadFile($videoUrl, 0, $baseImageDir); if ($res == 0) { - exit; + return; } break; case Item::CAROUSEL: @@ -259,7 +260,7 @@ class InstagramService $imageUrl = $imageItem->getImageVersions2()->getCandidates()[0]->getUrl(); $res = $this->downloadFile($imageUrl, 0, $baseImageDir); if ($res == 0) { - exit; + return; } } break; @@ -285,7 +286,7 @@ class InstagramService } } - public function scrapeUsers() + public function scrapeUsers($start = 0) { $ig = new Instagram($this->debug, $this->truncatedDebug); @@ -306,7 +307,7 @@ class InstagramService try { $userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt"); - $userList = array_slice($userList, 65, 65); + $userList = array_slice($userList, $start, 65); // $userList = ['1992.ai_']; // print_r($userList);exit; // print_r($userList); @@ -448,6 +449,82 @@ class InstagramService } } + public function scrapeCollection() + { + $ig = new Instagram($this->debug, $this->truncatedDebug); + + try { +// echo 1; + $ig->login($this->username, $this->password); + } catch + (\Exception $e) { + dump($e); + echo 'Something went wrong: ' . $e->getMessage() . "\n"; + exit(0); + } + +// dump($list->getItems()[0]->getMedia()->getCarouselMedia()); + + $collectImageDir = "/Users/shixuesen/OneDrive/Pictures/instagram/collect/"; + + $maxId = null; + // } + do { + // Request the page corresponding to maxId. + echo "\n current maxId: " . $maxId; + $response = $ig->collection->getFeed("17906577283646940", $maxId); + // In this example we're simply printing the IDs of this page's items. + foreach ($response->getItems() as $item) { + $userFullName = str_replace("/", "", $item->getMedia()->getUser()->getFullName()); + switch ($item->getMedia()->getMediaType()) { + case Item::PHOTO: + $imageUrl = $item->getMedia()->getImageVersions2()->getCandidates()[0]->getUrl(); + $res = $this->downloadFile($imageUrl, 0, $collectImageDir, $userFullName . "-"); + $filename = $this->parseExactFileName($imageUrl); + // Ins::firstOrCreate(['image_name' => $filename], [ + // 'username' => $userName, + // 'image_url' => $imageUrl + // ]); + if ($res == 0) { + return; + } + break; + case Item::VIDEO: + $videoUrl = $item->getMedia()->getVideoVersions()[0]->getUrl(); + $res = $this->downloadFile($videoUrl, 0, $collectImageDir, $userFullName . "-"); + $filename = $this->parseExactFileName($videoUrl); + // Ins::firstOrCreate(['image_name' => $filename], [ + // 'username' => $userName, + // 'image_url' => $videoUrl + // ]); + if ($res == 0) { + return; + } + break; + case Item::CAROUSEL: + foreach ($item->getMedia()->getCarouselMedia() as $imageItem) { + $imageUrl = $imageItem->getImageVersions2()->getCandidates()[0]->getUrl(); + $res = $this->downloadFile($imageUrl, 0, $collectImageDir, $userFullName . "-"); + $filename = $this->parseExactFileName($imageUrl); + // Ins::firstOrCreate(['image_name' => $filename], [ + // 'username' => $userName, + // 'image_url' => $imageUrl + // ]); + if ($res == 0) { + return; + } + } + break; + } + + // printf("[%s] https://instagram.com/p/%s/\n", $item->getId(), $item->getCode()); + sleep(5 * random_int(1, 10)); + } + echo "\n Sleeping for 5s...\n"; + sleep(10); + } while ($maxId !== null); + } + public function scanLocalFiles($baseDir = '/Users/shixuesen/OneDrive/Pictures/instagram/') { $dirs = scandir($baseDir, 1); diff --git a/app/Services/MM24Service.php b/app/Services/MM24Service.php index 800f816..28f987e 100644 --- a/app/Services/MM24Service.php +++ b/app/Services/MM24Service.php @@ -8,20 +8,23 @@ use QL\QueryList; class MM24Service { + private $baseUrl = "https://www.ligui.org/beautyleg/"; + public function getAlbum() { for ($i = 1; $i < 20; $i++) { if ($i == 1) { - $baseUrl = "https://www.mm24.cc/taotu"; + $baseUrl = "https://www.ligui.org/beautyleg"; } else { - $baseUrl = "https://www.mm24.cc/taotu/1-{$i}.html"; + $baseUrl = "https://www.ligui.org/beautyleg/1_{$i}.html"; } $baseQl = QueryList::get($baseUrl); - $albumUrls = $baseQl->find("body > div.main > div.boxs > ul > li > a")->attrs("href"); +// $albumUrls = $baseQl->find("body > div.main > div.boxs > ul > li > a")->attrs("href"); + $albumUrls = $baseQl->find("#container > div.post > a")->attrs("href"); foreach ($albumUrls as $albumUrl) { dump($albumUrl); - $this->getImage("https://www.mm24.cc" . substr($albumUrl, 0, strlen($albumUrl) - 5)); + $this->getImage("https://www.ligui.org/" . substr($albumUrl, 0, strlen($albumUrl) - 5)); } } //$baseUrl = "https://www.mm24.cc/taotu/"; @@ -29,8 +32,8 @@ class MM24Service } public function getImage($albumUrl) { - $baseDir = "/Volumes/intel660p/image/bl/"; - $baseUrl = "https://www.mm24.cc/"; + $baseDir = "/Users/shixuesen/Documents/fix_new/"; + $baseUrl = "https://www.ligui.org/beautyleg/"; for ($i = 1; $i < 100; $i++) { dump("new loop start"); if ($i == 1) { @@ -41,18 +44,20 @@ class MM24Service try { $baseQl = QueryList::get($ablumn); } catch (\Exception $e) { -// echo json_encode($e->getMessage()); + echo json_encode($e->getMessage()); return; } if ($i == 1) { - $title = $baseQl->find("body > div.width > div.weizhi > h1")->htmls()[0]; + $title = $baseQl->find("#entry > h1")->htmls()[0]; + echo $title; } - $img = $baseQl->find("#img_view > img")->attr("src"); + $img = $baseQl->find("#bigpic > a > img")->attr("src"); + echo $img; $albumPath = $baseDir . "/" .$title; if (!file_exists($albumPath)) { mkdir($albumPath); } - if (file_exists($albumPath."/".pathinfo($img)['filename'].".jpg")) { + if (file_exists($albumPath."/". $i . "-" . pathinfo($img)['filename'].".jpg")) { continue; } $opts = array('http'=> ['header' => @@ -85,7 +90,7 @@ class MM24Service dump("after fail curl request"); echo curl_error($curl_handle); - $fp = fopen($albumPath."/".pathinfo($img)['filename'].".jpg", 'x'); + $fp = fopen($albumPath."/". $i . "-" . pathinfo($img)['filename'].".jpg", 'x'); fwrite($fp, $query); fclose($fp); $sleepTime = 1000 * random_int(100, 1000); diff --git a/app/Services/NewNvshenService.php b/app/Services/NewNvshenService.php index 1244c46..6e3c145 100644 --- a/app/Services/NewNvshenService.php +++ b/app/Services/NewNvshenService.php @@ -83,7 +83,7 @@ class NewNvshenService ]; - public function scrapeNvshenGirls() + public function scrapeNvshenGirls($isAll = false) { // 15902 原干惠 // 22162 杨晨晨 @@ -94,7 +94,7 @@ class NewNvshenService $NUM_OF_ATTEMPTS = 50; $mainQl = QueryList::getInstance(); - self::$name_dir = array_slice(self::$name_dir, 1, 1); +// self::$name_dir = array_slice(self::$name_dir, 1, 1); foreach (self::$name_dir as $username => $name) { // $baseDir = "/Users/shixuesen/Documents/tmp/image/xg/" . $name['dir'] . "/"; $baseDir = "/Volumes/intel660p/image/xg/" . $name["dir"] . "/"; @@ -113,9 +113,9 @@ class NewNvshenService } // dump($albumCodeMap);exit; } - $baseUrl = "https://www.nvshens.org"; + $baseUrl = "https://www.invshen.net"; usleep(random_int(1000, 10000) * 1000); - $peopleUrl = "https://www.nvshens.org/girl/"; + $peopleUrl = "https://www.invshen.net/girl/"; $peopleUrl .= $name['code']; @@ -152,7 +152,12 @@ class NewNvshenService $totalAlbumPage = ceil($totalAlbumNum / 30); } - $baseAlbumUrl = "https://www.nvshens.org/girl/{$name['code']}/album/"; + $baseAlbumUrl = "https://www.invshen.net/girl/{$name['code']}/album/"; + // 表示限制抓取相册数 + $countLimit = 5; + if ($isAll) { + $countLimit = 5000; + } for ($i = 0; $i <= $totalAlbumPage; $i++) { dump("current album page no: " . $i); if ($onlyOnePage) { @@ -169,6 +174,10 @@ class NewNvshenService // $pageAlbum = array_slice($pageAlbum, 19); // dump($pageAlbum);exit; foreach ($pageAlbum as $album) { + if ($countLimit <= 0) { + dump("相册已超过限制数量,跳出"); + break 2; + } usleep(10000 * random_int(1000, 10000)); dump("相册:", [$album]); // $pageQL = $qL0->get($baseUrl . $album); @@ -257,6 +266,7 @@ class NewNvshenService } dump($page->all()); // exit; + $countLimit--; } // "https://img.onvshen.com:85/gallery/22162/31696/0.jpg" // exit; @@ -272,7 +282,7 @@ class NewNvshenService public function subTest() { - $baseUrl = "https://www.nvshens.org"; + $baseUrl = "https://www.invshen.net"; $album = "/g/31347/"; $pageQL = QueryList::get($baseUrl . $album); $page = $pageQL->find(".albumInfo > span")->htmls(); diff --git a/app/Services/ReplaceCompressedVideoService.php b/app/Services/ReplaceCompressedVideoService.php new file mode 100644 index 0000000..986eb43 --- /dev/null +++ b/app/Services/ReplaceCompressedVideoService.php @@ -0,0 +1,204 @@ +processDir($subDir); + } else { + $this->processVideo($subDir); + } + } + } + + public function processVideo($pathFile) + { + $mime = mime_content_type($pathFile); +// dump("file type", [$mime, $pathFile]);exit; +// continue; + $mediaInfo = new MediaInfo(); + $mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true); + if (strstr($mime, "video/") || strstr($mime, "application/octet-stream")) { + if (is_file($pathFile)) { + $mediaContainer = $mediaInfo->getInfo($pathFile); + foreach ($mediaContainer->getVideos() as $video) { + $height = $video->get('height')->getAbsoluteValue(); + $width = $video->get('width')->getAbsoluteValue(); + if ($height > $width && $width <= 720) { + echo "$pathFile 分辨率小于 720p 跳过\n"; + return; + } + if ($height <= $width && $height <= 720) { + echo "$pathFile 分辨率小于 720p 跳过\n"; + return; + } + + } + $fileInfo = pathinfo($pathFile); + dump("fileInfo", $fileInfo); + if (ends_with($fileInfo["filename"], "-XXXXX#compressed")) { + return; + } + if (starts_with($fileInfo["filename"], "171221 M!CountDown 光州特辑女团现场合集") || starts_with($fileInfo["filename"], "Rainbow - A 现场合集 P14 Rainbow - A + Mach")) { + return; + } + if (Redis::sismember("unneed", $fileInfo["filename"])) { + return; + } + $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-XXXXX#compressed'. '.' . $fileInfo["extension"]; + if (is_file($targetFile)) { + unlink($pathFile); + rename($targetFile, $pathFile); + return; + } + dump("targetFile", [$targetFile]); +// $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $subPathFile ."' -o '". $targetFile . " && echo 'success'"); + $result = shell_exec("handBrakeCli --json -Z 'Very Fast 720p30' -i '". $pathFile ."' -o '". $targetFile . "'"); +// echo $result; + preg_match_all("#\"State\"\: \"WORKDONE\"#", $result, $match); + if (count($match) > 0) { + echo "compress work done remove the file \n"; + $oldFileSize = filesize($pathFile); + $newFileSize = filesize($targetFile); + if ($newFileSize >= $oldFileSize) { + Redis::sadd("unneed", $fileInfo["filename"]); + echo "old file size is smaller than new one, old is " . file_size($oldFileSize) . " and new is " . file_size($newFileSize) . ", now remove new one"; + unlink($targetFile); + } else { + echo "new file size is smaller than old one, new is " . file_size($newFileSize) . " and old is " . file_size($oldFileSize) . ", now remove old one"; + unlink($pathFile); + rename($targetFile, $pathFile); + } + } + } + } + } + + function human_filesize($bytes, $decimals = 2) { + $sz = 'BKMGTP'; + $factor = floor((strlen($bytes) - 1) / 3); + return sprintf("%.{$decimals}f", $bytes / pow(1024, $factor)) . @$sz[$factor]; + } + + public function processUnCompleteDir($baseDir = "/Volumes/WD/tmp/探花系列【AI高清2K修复】大合集") +// public function processDir($baseDir = "/Volumes/Backup/iPhone nPlayer/") + { + $files = scandir($baseDir); + foreach ($files as $file) { + if ($file == "." || $file == "..") { + continue; + } + $subDir = implode("/", [$baseDir, $file]); + $isDir = is_dir($subDir); + if ($isDir) { + $this->processUnCompleteDir($subDir); + } else { + $this->processUnCompleteVideo($subDir); + } + } + } + + public function processUnCompleteVideo($pathFile) + { + //... + $mediaInfo = new MediaInfo(); + $mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true); + + $mime = mime_content_type($pathFile); +// dump("file type", [$mime, $subPathFile]); +// continue; + if (strstr($mime, "video/")) { + if (is_file($pathFile)) { + $fileInfo = pathinfo($pathFile); +// dump("fileInfo", $fileInfo); + if (ends_with($fileInfo["filename"], "-1")) { + return; + } + if (is_file($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"])) { + $mediaInfoContainer1 = $mediaInfo->getInfo($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"]); + $millSecond1 = $mediaInfoContainer1->getGeneral()->get("duration")->getMilliseconds(); + echo gettype($millSecond1) . "\n"; +// ["duration"] . "\n"; + $mediaInfoContainer = $mediaInfo->getInfo($pathFile); + $millSecond = $mediaInfoContainer->getGeneral()->get("duration")->getMilliseconds(); + echo gettype($millSecond) . "\n"; + if (abs(intval($millSecond) - intval($millSecond1)) > 100) { + echo $pathFile . "\n"; + echo abs(intval($millSecond) - intval($millSecond1)) . "\n"; + } + +// unlink($pathFile); + return; + } +// $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"]; +// dump("targetFile", [$targetFile]); +//// $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $subPathFile ."' -o '". $targetFile . " && echo 'success'"); +// $result = shell_exec("handBrakeCli -Z 'Very Fast 720p30' -i '". $pathFile ."' -o '". $targetFile . "'"); +// dump($result); + + } + } + } + +} diff --git a/app/Services/TujiguService.php b/app/Services/TujiguService.php index 0f21276..a534034 100644 --- a/app/Services/TujiguService.php +++ b/app/Services/TujiguService.php @@ -83,7 +83,7 @@ class TujiguService ]; - public function scrapeTujiguGirls() + public function scrapeTujiguGirls($isAll = false) { // self::$name_dir = array_slice(self::$name_dir, 1, 1); foreach (self::$name_dir as $username => $name) { @@ -128,6 +128,12 @@ class TujiguService $totalAlbumPage = ceil($totalAlbumNum / 40); } $baseAlbumUrl = "https://www.tujigu.com/t/{$name['code']}/"; + + // 表示限制抓取相册数 + $countLimit = 8; + if ($isAll) { + $countLimit = 5000; + } for ($i = 0; $i < $totalAlbumPage; $i++) { if ($onlyOnePage || $totalAlbumPage == 1 || $i == 0) { $albumQl = QueryList::get($peopleUrl); @@ -139,6 +145,10 @@ class TujiguService $pageAlbum = $albumList->all(); dump($pageAlbum); foreach ($pageAlbum as $album) { + if ($countLimit <= 0) { + dump("相册已超过限制数量,跳出"); + break 2; + } dump("current album page no: " . $i); usleep(10000 * random_int(1000, 10000)); dump("相册:", [$album]); @@ -221,6 +231,7 @@ class TujiguService } dump($page->all()); // exit; + $countLimit--; } } diff --git a/app/Services/XiurenjiService.php b/app/Services/XiurenjiService.php index 5b0658b..7d4b0a7 100644 --- a/app/Services/XiurenjiService.php +++ b/app/Services/XiurenjiService.php @@ -81,13 +81,14 @@ class XiurenjiService dump("new Album: " . urldecode($albumName[0])); $albumName = urldecode($albumName[0]); } - $this->parseContent($this->rootDir. $albumName, $pageContent); + $imageNo = 1; + $this->parseContent($this->rootDir. $albumName, $pageContent, $imageNo); dump("albumName: ". $albumName); // dump("item: ". $item); // exit; for ($i = 1; $i < $pageCount; $i++) { $pageContent = $this->getEncodeHtmlContent($this->xiurenRootUrl . $albumCode . "_" . $i . ".html"); - $this->parseContent($this->rootDir. $albumName, $pageContent); + $this->parseContent($this->rootDir. $albumName, $pageContent, $imageNo); } // dump("slashPos: " . $slashPos . " dotPos: " . $dotPos . " albumCode: ". $albumCode); // dump($item); @@ -95,7 +96,7 @@ class XiurenjiService } } - public function parseContent($dir, $pageContent) + public function parseContent($dir, $pageContent, &$imageNo) { if (!is_dir($dir)) { try { @@ -114,6 +115,12 @@ class XiurenjiService $trueImageUrl = "https://www.xiurenji.com" . $imageUrl; $fileInfo = pathinfo($trueImageUrl); if (file_exists($dir . "/" .$fileInfo["basename"])) { + rename($dir . "/" . $fileInfo["basename"], $dir . "/" . $imageNo . "-" . $fileInfo["basename"]); + $imageNo++; + continue; + } + if (file_exists($dir . "/" . $imageNo . "-" . $fileInfo["basename"])) { + $imageNo++; continue; } dump($fileInfo); @@ -147,10 +154,12 @@ class XiurenjiService break; } while($attempts < 100); if ($content != "") { - file_put_contents($dir . "/" .$fileInfo["basename"], $content); + file_put_contents($dir . "/" . $imageNo . "-" . $fileInfo["basename"], $content); } else { Log::error("image content is empty ". $trueImageUrl); } + $imageNo++; +// dump("current imageNo: " . $imageNo); } } diff --git a/composer.json b/composer.json index 2bd8e8d..780b1fd 100644 --- a/composer.json +++ b/composer.json @@ -29,6 +29,7 @@ "netresearch/jsonmapper": "^1.6", "norkunas/youtube-dl-php": "^1.4", "protoqol/prequel": "^1.22", + "ps/image-optimizer": "^2.0", "qcloud/cos-sdk-v5": ">=1.0", "raiym/instagram-php-scraper": "^0.8.31", "symfony/finder": "^4.4", diff --git a/composer.lock b/composer.lock index 2bdb578..9c506b7 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "4fee38a1137444a0d52476dfcd4ebaed", + "content-hash": "c1e5ebef565e5b9357e36df1deab2b66", "packages": [ { "name": "barryvdh/laravel-ide-helper", @@ -5205,6 +5205,77 @@ }, "time": "2020-06-27T02:14:30+00:00" }, + { + "name": "ps/image-optimizer", + "version": "2.0.4", + "source": { + "type": "git", + "url": "https://github.com/psliwa/image-optimizer.git", + "reference": "9f9e8ccc617d3c1b5034a659bc2c1c14a6de2647" + }, + "dist": { + "type": "zip", + "url": "https://api.github.com/repos/psliwa/image-optimizer/zipball/9f9e8ccc617d3c1b5034a659bc2c1c14a6de2647", + "reference": "9f9e8ccc617d3c1b5034a659bc2c1c14a6de2647", + "shasum": "", + "mirrors": [ + { + "url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%", + "preferred": true + } + ] + }, + "require": { + "php": "^7.3 | ^8.0", + "psr/log": "^1.0", + "symfony/options-resolver": "~3.3 | ~4.0 | ~5.0", + "symfony/process": "~3.3 | ~4.0 | ~5.0" + }, + "require-dev": { + "ext-gd": "*", + "phpunit/phpunit": "^9.0" + }, + "type": "library", + "autoload": { + "psr-0": { + "ImageOptimizer": "src/" + } + }, + "notification-url": "https://packagist.org/downloads/", + "license": [ + "MIT" + ], + "authors": [ + { + "name": "Piotr Sliwa", + "email": "peter.pl7@gmail.com" + } + ], + "description": "Image optimization / compression library. This library is able to optimize png, jpg and gif files in very easy and handy way. It uses optipng, pngquant, pngcrush, pngout, gifsicle, jpegoptim and jpegtran tools.", + "keywords": [ + "compression", + "image", + "image optimizer", + "jpegoptim", + "optimization", + "optipng" + ], + "support": { + "issues": "https://github.com/psliwa/image-optimizer/issues", + "source": "https://github.com/psliwa/image-optimizer/tree/2.0.4" + }, + "funding": [ + { + "url": "https://www.paypal.me/psliwa", + "type": "custom" + }, + { + "url": "https://github.com/psliwa", + "type": "github" + } + ], + "time": "2021-02-23T19:34:48+00:00" + }, { "name": "psr/cache", "version": "1.0.1", diff --git a/fail.log b/fail.log index 43f0834..a456fc7 100644 --- a/fail.log +++ b/fail.log @@ -969,3 +969,54 @@ /Users/shixuesen/OneDrive/Pictures/instagram/cxxsomi/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/150928119_699242484043058_7630353759629458952_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=hz1rRFqvOisAX8BGhBY&se=7&tp=1&oh=cb0318c22f162a4530bb3182f1b93387&oe=605B49BD&ig_cache_key=MjUxMjU0NzY5NTU3NTc1MTk1Mg%3D%3D.2 /Users/shixuesen/OneDrive/Pictures/instagram/angelachong_99/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/151302909_356631788711874_2200316248623901481_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=GjvGznhEI6MAX-OtKRo&se=8&tp=1&oh=23b6af9b76ad6839721d668dfa40304a&oe=605FB7AD&ig_cache_key=MjUxNDU2NzM2Mzc1MDYyMDU4Nw%3D%3D.2 /Users/shixuesen/OneDrive/Pictures/instagram/2km2km/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/153398333_179791520578347_3415261100805801786_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=Lr2poZjMVRUAX8EhpKu&se=7&tp=1&oh=5e0ddaa4084e18af4d1acd6ef5d91ff6&oe=6061B5BE&ig_cache_key=MjUxNTk1MDE1Njk3MzYxNzE0OQ%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/airisuzuki_official_uf/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88760607_134514971907376_4171244239883694655_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=wZVVSSQwW2sAX_40v-x&vs=18197011030034527_347794243&_nc_vs=HBksFQAYJEdCOWhTZ1V3RlI0MVYzb0FBRDl5cVRXSlBPTTVidXFIQUFBQRUAAsgBABUAGCRHSmlBV3dsZ2Nyc3U1SG9BQU9weFBOYWxydnBoYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa%2B9%2B%2FQuIXTQBUCKAJDMywXQCpU%2FfO2RaIYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=2f6cf53478&oe=6044FFFB&oh=0a2361645a8abbfcd0021af75744c3e7 +/Users/shixuesen/OneDrive/Pictures/instagram/limerencelm/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/156463249_189351575911040_2501234323167779718_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=108&_nc_ohc=ejEjPCkjh8MAX8DupLp&oh=f864c8cab3dff32e3ddfd934ab3bcf06&oe=606E1A42&ig_cache_key=MjUyMjY4OTQzNzAyNjgzMzc2Ng%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/156606640_1380234762331463_8214798277084842983_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=e-L1E78vAO0AX-uvvi6&oh=a7257fded1a600cadfb11ac86528ffbf&oe=606D5699&ig_cache_key=MjUyMjQ4MDYxMTQ3MTMxMDgzNg%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/skuukzky/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/157242101_1173418349784579_2778575007390863088_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=abWedYfXVg4AX9zW2ur&oh=5f6fe0166e1db5bebe4f2e5920a5578a&oe=606F00BB&ig_cache_key=MjUyMzg5NTI2OTE2NzU2ODI5NQ%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/79595973_251305149980078_6773871250614849780_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjU0MC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=6blqxArugRoAX-47T41&vs=17948715751413471_1258578853&_nc_vs=HBksFQAYJEdNV0p2Z1N1M1RHS2pfUUFBUFFRSVU4RG9BRmVidXFIQUFBQRUAAsgBABUAGCRHRi1FZHdtSUEzenBUNndBQUJpMHkzUHRxdm9oYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa%2BidTp4JDiPxUCKAJDMywXQCpU%2FfO2RaIYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=82a6eb8348&oe=60497CBB&oh=2c4e362c6794e8db0e8342615888d6af +/Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/98794063_265756488451432_8827490873356720666_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=B4yp-ECWiGsAX9-OHFE&vs=17874942350305462_552215608&_nc_vs=HBksFQAYJEdFOTY0d1ZvUlJkQnRQRUFBQm9hYnVRdGpJRjZidXFIQUFBQRUAAsgBABUAGCRHSlQ5YWdudElCNlpMOWtCQUo5Z3JodkhrZHg1YnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbs1t3rycrAPxUCKAJDMywXQCgzMzMzMzMYEmRhc2hfYmFzZWxpbmVfM192MREAdegHAA%3D%3D&_nc_rid=82a6e55851&oe=604979FB&oh=364bce5d8ef75e8580189adb25c41bcc +/Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/73723937_342420563781130_9167063942741945464_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=sM6fK74nzyIAX9LojJy&vs=17860366049423324_2706109404&_nc_vs=HBksFQAYJEdDSHdaQVFLWmhFQWJqY0JBSGpzYkRRVzlEZC1idXFIQUFBQRUAAsgBABUAGCRHQzRYZEFrTlFCNE1PbzBCQUU0bU1uX3R4NVk4YnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa435eVjfq5PxUCKAJDMywXQC4AAAAAAAAYEmRhc2hfYmFzZWxpbmVfM192MREAdegHAA%3D%3D&_nc_rid=82a6ef55f4&oe=6049B3B4&oh=15469493ff545b3f76bc5c00f9d78133 +/Users/shixuesen/OneDrive/Pictures/instagram/collect/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/90407050_209440316976804_4377456586688884453_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=100&_nc_ohc=Wa48T3IMkkIAX8YSDwu&oh=9bfb0f1f986581e3e616620a375518ca&oe=6072BEC8&ig_cache_key=MjI3MjM4MzIxNTI4NDg1MjYwMA%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/collect/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/p480x480/90504540_536282880604661_66086985855698024_n.jpg?tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=luEFzPs2dEEAX8I74i4&oh=1174d31039f5f0fae22a21d0a4c010bf&oe=60729CDE&ig_cache_key=MjI3MjM3OTczMjM1MTcwMDgxNw%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/__leeheeeun__/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/159085723_144660567449625_4760770736435743183_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5mZWVkLmRlZmF1bHQifQ&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=FmpnR3NuEtUAX8Y7NT5&vs=17913728131615870_3718004236&_nc_vs=HBksFQAYJEdKdDBld2taWUx4cGtZTUFBTS1KVTlyQ3B4RkNia1lMQUFBRhUAAsgBABUAGCRHTC1ZZlFudUFPQjE1dUFCQUV4T0tvckVSSkVMYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACb859u1mJzSPxUCKAJDMywXQEaVP3ztkWgYEmRhc2hfYmFzZWxpbmVfM192MREAdeoHAA%3D%3D&_nc_rid=ab44d9b57a&oe=604D4732&oh=8f61f4c03cf4d131093f02038ddc5073 +/Users/shixuesen/OneDrive/Pictures/instagram/mobeee19920223/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/159188045_445351823384219_5720431441448475231_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=yACTpgvqICgAX_1Y-5R&oh=884a1a93ac7cc388f0869ff34c757286&oe=60765715&ig_cache_key=MjUyNjE2NDU1MzIzMjc0MDg1Nw%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/98709827_1344184375946007_4793494567860034196_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=rlFFt5pygxEAX-WhVRk&vs=17878867139137114_190025075&_nc_vs=HBksFQAYJEdFTXg0Z1VYcXoxUWg4WUVBSlRhRDVicDZZVkNidXFIQUFBQRUAAsgBABUAGCRHTUVSaFFsblhPb3RVTDhCQUNlMHozejZ2OXAtYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa07rKchK%2FCPxUCKAJDMywXQAczMzMzMzMYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=2d95ae7f99&oe=60524AED&oh=71ed42679efe4398675f0cfea3577e61 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/102082470_1058141571341801_3457251942134548687_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=Fuhk7-BZTP4AX8SbSo-&vs=18071169691264154_567438996&_nc_vs=HBksFQAYJEdLYW5GUWJwWFh2SVg4SURBTV9JOWZWU29Qb3ZidXFIQUFBQRUAAsgBABUAGCRHS0RsaXdrcHRQdVR4X2dDQU40Y2I0aHBCc3dCYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa02%2FLlweiZQBUCKAJDMywXQC27ZFocrAgYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=2d95a541de&oe=6052AAE1&oh=a255588868ef6aba083342a8b07e81f1 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/75135164_120706810026467_166481533277471465_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=RrQsCQmt1hoAX_jAlTx&vs=17865456368396184_2771627408&_nc_vs=HBksFQAYJEdMeDRlZ1RqbVlnX3lHMEFBT21DcW93U2RrOENidXFIQUFBQRUAAsgBABUAGCRHS2xLVmdsQXR3eHRDbjBCQU45RU04aGZCdFp5YnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACawsc6HtqK8PxUCKAJDMywXQC4AAAAAAAAYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=2d95ac702b&oe=60528EA1&oh=e5543ad762ab2543991394d90b29e824 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/75107167_614978252708110_5916761238207824410_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=fTDOpTvRdjEAX9inK4y&vs=17885408153090754_3170697729&_nc_vs=HBksFQAYJEdGOExlZ1FPR1V6SVVTOENBQnFDTFhELWpoeFNidXFIQUFBQRUAAsgBABUAGCRHTkViZXduTlVLQVR3dG9BQUhHc1p3TXJnOGw4YnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaEi7%2Be4qvFPxUCKAJDMywXQC4AAAAAAAAYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=2d95aed076&oe=60526BE1&oh=9b3c1429b4581e900988529b95db25db +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/160220522_151996790117981_3940324088089389007_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=Y7gdShYBd58AX-wUZ9l&oh=8898ba887ba3170e782f40084ae94a93&oe=6077FE12&ig_cache_key=MjUyOTYzNDk1OTY2MzkzOTE1OQ%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/161447296_470294770833652_7069834902647750101_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=El-DBinAkY0AX-Y5ioi&oh=8bce3b25a2149d35a5ed49b018639ecf&oe=6079EB8E&ig_cache_key=MjUyOTYzNDk1OTczMTA3NDI5Ng%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/queena820628/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/160281323_131819952135765_8943080943444037084_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=Cy0chiUmHysAX97YqzB&oh=ddbf5ff92dda56d0791465641b407492&oe=6078182F&ig_cache_key=MjUyOTY5NTI0MjcyNTA0NzU1OA%3D%3D.2 +/Users/shixuesen/OneDrive/Pictures/instagram/e.s2.e/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/161682553_1120862051709124_3338670804664985940_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=P2DjKQ3MJdsAX8dVY3P&ccb=7-4&oh=d21474acd7fd66c84631013e6c41efc4&oe=607EDBD5&_nc_sid=6136e7&ig_cache_key=MjUzMTE3NjIxMjU0MjQwMzIxMQ%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/nyanchan22/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/163375498_119136800189008_2378763467239822346_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5mZWVkLmRlZmF1bHQifQ&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=LvF1S-A6cvUAX9V5pYm&vs=17894920510935425_3866105712&_nc_vs=HBksFQAYJEdJcnB2QWxRcXFleVdtd0FBQXFVZ1MzRkVBTWhia1lMQUFBRhUAAsgBABUAGCRHRWxGbHdsVm9Nc01GZmtBQU1SMzdJOF9ZaUFIYmtZTEFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACaCnfilu9XJPxUCKAJDMywXQDOZmZmZmZoYEmRhc2hfYmFzZWxpbmVfMV92MREAdeoHAA%3D%3D&_nc_rid=aafc4e3b9d&ccb=7-4&oe=6059E181&oh=b00db2cee44cc3bd251cbc3732f50be5&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/162923959_1095149807559746_7112264909188223662_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=HXBIluDyP0gAX-nrYlH&ccb=7-4&oh=72c0b974ab987640181b013764957b7a&oe=6084365C&_nc_sid=7479f6&ig_cache_key=MjUzNTcyNDkxNTgzNzgyMDM3Ng%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/p480x480/163584931_303227391221759_6083036838718408558_n.jpg?tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=2v9Ze-PQTA0AX_0yqzP&ccb=7-4&oh=824b4932ba27d23546d23bfc4c8cc8dd&oe=6084A5EC&_nc_sid=7479f6&ig_cache_key=MjUzNTcyMjI5NDg5Mjc4NDk2Ng%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/162923959_288685149327790_6418765448836630117_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=U8zRxAMg19gAX-msbJc&ccb=7-4&oh=82982457119ea1c4650226ad89c17e61&oe=60844A15&_nc_sid=7479f6&ig_cache_key=MjUzNTcyNDkxNTgyMDg5NzEwMg%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/163408784_512984446525327_3620829302224599105_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=107&_nc_ohc=wscK227DSt0AX-mYc3f&ccb=7-4&oh=389f0b2e365a5fd577430219158fcfd7&oe=60841D52&_nc_sid=7479f6&ig_cache_key=MjUzNTcyNDkxNTg2MjkwOTcwMA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/162877492_361598465024990_8555117578210471747_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=iZEw6BSprzMAX8XDY5t&ccb=7-4&oh=2fc05bf546f8c3af02d80933ebb18ef5&oe=6085829B&_nc_sid=7479f6&ig_cache_key=MjUzNTcyNDkxNTg0NjE5OTExNg%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163252912_1140991233015593_4887939106548406903_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=adSKZ-mqRYwAX8xu_T8&ccb=7-4&oh=3a7b12b3a501660a7c8108f47d15e2a8&oe=6085A082&_nc_sid=7479f6&ig_cache_key=MjUzNTcyNDkxNTg0NjI2MjAwMw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/164318964_2956832824599859_7019632302455812726_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=107&_nc_ohc=fRa7_m7xPoUAX9qYc0C&ccb=7-4&oh=de12e251c38b95619b932df3c0e15a0b&oe=60858EB5&_nc_sid=7479f6&ig_cache_key=MjUzNTc0MjExMDQ3OTM5MzczMw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163874123_350041429697469_1559834855470857326_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=zkfiJ3EZ1yQAX82y_ZN&ccb=7-4&oh=43a951f0cd9d9e0ba53ad1e7b8c59b24&oe=6085992A&_nc_sid=7479f6&ig_cache_key=MjUzNTc0MjExMDM3ODYwMzAyMA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163170609_649378619178473_2869500608345839236_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=YHWiFW5OgBMAX9NyCqe&ccb=7-4&oh=bb15c7a0a7b25556e96a27e09e2f7cbe&oe=60852EC5&_nc_sid=7479f6&ig_cache_key=MjUzNTc0MjExMDM3MDI2ODY3Mw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163107951_4572888952727355_277708902539767421_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=P65OUttRvREAX-k1z5T&ccb=7-4&oh=1f16f690bd7678d6b1fb6ebaba910e72&oe=608498C3&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA1NjY4NDcwMg%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163983486_3916000518487112_3484780215017184260_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=108&_nc_ohc=-XHolWJUKa0AX88bo7N&ccb=7-4&oh=c903ce07c06287d0f5857bffcd63db49&oe=60838B6A&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA2NTExNjU2Mw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/164032330_1353283995036616_2058195176400057439_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=-OgPs_MiG_4AX_7JmNb&ccb=7-4&oh=f087c21cf4b0b8a8275a63095b2d1bfc&oe=608634CC&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA0MDA3MDg2OQ%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/163235627_926124701482223_1252806770544787112_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=111&_nc_ohc=S8aDGfzLvRcAX9TFxoE&ccb=7-4&oh=9564a8f65f0f0418484b7c4718dbfe9f&oe=6083C9C8&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA4MTg0NjY4Nw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/162914685_734925843845370_719294627101245916_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=Ha53dny3EFMAX_1chYc&ccb=7-4&oh=c5c6b31e9821f8334b050aa3e4d6207c&oe=6083DA50&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA3MzY0NzY4OA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/162956968_280427120214537_5727328144074194837_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=6mH7NR34P2EAX-QIhS8&ccb=7-4&oh=65f74a3a2c1c6f23a4ea40594de47bd6&oe=6084757F&_nc_sid=7479f6&ig_cache_key=MjUzNTc0Mjc1MjA5MDQ2MDkzMQ%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163226889_877368089770814_1550857348892465159_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=uG-6JpjKS9gAX9mfTjC&ccb=7-4&oh=3bee6d844a570cd051f98483a747a2c0&oe=60839229&_nc_sid=7479f6&ig_cache_key=MjUzNTc1MTc1NTk2MjAyNjE3NA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/163395121_276755030619438_4409430524423933223_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=2mGT0NzF_2UAX86z7zP&ccb=7-4&oh=e46c8a341820bab438ef894194aa85f9&oe=60837875&_nc_sid=7479f6&ig_cache_key=MjUzNTc3Mzg1MjE0ODc1NjQ5OQ%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/163290957_1927231107418158_3860786224391464551_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=OeYHM1AumMMAX_8rMQe&ccb=7-4&oh=fd3634b3ac453dae0f0eedf10c9bfbac&oe=6083756C&_nc_sid=7479f6&ig_cache_key=MjUzNTc3NzY2Mjc0MzQ2OTc1Mg%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/163034960_490210522143997_1625857144353691190_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=101&_nc_ohc=nCfzsoDXqCcAX97xaHu&ccb=7-4&oh=d555202bfbd5d268272497ebc3f25a00&oe=6083058F&_nc_sid=7479f6&ig_cache_key=MjUzNTc4MTMzMTYyNjMyMDQxMg%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88675447_169047108284565_5822486267418376149_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=uWYxHxCvphEAX-75A08&vs=17893526890979550_1430361348&_nc_vs=HBksFQAYJEdIY1VTUVdWOE5aWXY1a0FBTlgzRDA5cG9NMVFidXFIQUFBQRUAAsgBABUAGCRHQ05od2dsS3pDRk1wcFlGQU9xQzEtd1FUSVVBYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACa8xbvXq4TJPxUCKAJDMywXQByIMSbpeNUYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=bbe3c5e1f8&ccb=7-4&oe=605E1D52&oh=d1c342f478e806ab9f2f20ecdf3cd6fc&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88659674_3044598449155095_5195585655666802250_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=cyffGoYaFsYAX8sG76f&vs=17904821959770989_3678737401&_nc_vs=HBksFQAYJEdOcldTQVVYckF2UkM5RUtBRXBfSWw2Z2JScElidXFIQUFBQRUAAsgBABUAGCRHQW9Kd0FuNk5PSWYyR29BQUY0c2NFVFBkaHBpYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACba6qrD5pXOPxUCKAJDMywXQB6IMSbpeNUYEmRhc2hfYmFzZWxpbmVfM192MREAdegHAA%3D%3D&_nc_rid=bbe3ccc983&ccb=7-4&oe=605DF1E0&oh=97a639dbfe4da2b1d5153f469e82c4f2&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88674705_1018955841964509_5732786124958335110_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=_-o_pTHMtoQAX8Dhw8-&vs=17886788699097984_3751458952&_nc_vs=HBkcFQAYJEdKRVJTUVhkaVFBbHZKNERBSVlBYm1lYjhvNVBidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJoC0ocGQ%2FMU%2FFQIoAkMzLBdAFAAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16AcA&_nc_rid=bbe3c444ac&ccb=7-4&oe=605DFB26&oh=9c315da9586bf5b4e1fa66096f97fe92&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88661778_113993450661026_5859817564473033967_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=8XIPKhFVf6UAX9BCBRD&vs=17886116684038756_215554893&_nc_vs=HBksFQAYJEdCTGZTQVdpSkNJcnJXY0FBT19FQWpzSFFWSlJidXFIQUFBQRUAAsgBABUAGCRHQ3pycmdrWGlOV3BEamdEQUgxM3pnc0d3dHRoYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbInIG0gdXFPxUCKAJDMywXQBJDlYEGJN0YEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=bbe3c3e183&ccb=7-4&oe=605E71F4&oh=ab0cae815e1dd42c2affa056713f77fb&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88668044_1432958327057021_5726444432150176773_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=j1BK1j6CcQEAX9GFR3x&vs=18172971070098383_3214993290&_nc_vs=HBkcFQAYJEdJejNTQVY5NmdfY1JCY0ZBQVVrVS16ZWFuaFBidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJp74oZaRjshAFQIoAkMzLBdAFAAAAAAAABgSZGFzaF9iYXNlbGluZV8zX3YxEQB16AcA&_nc_rid=bbe3c46448&ccb=7-4&oe=605E7F49&oh=aa4e8a011b297683f0fd5e3db4015f96&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yui_xin_/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/88662821_725049241466190_7588624272094092256_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=3STc5p6bMNMAX8wCLSD&vs=17854652423504840_589328717&_nc_vs=HBkcFQAYJEdDWGpTQVZPZFh1dWJaTUNBT0JiRTdpUk5WQnBidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJpCwu8%2FGrbc%2FFQIoAkMzLBdAFAAAAAAAABgSZGFzaF9iYXNlbGluZV8yX3YxEQB16AcA&_nc_rid=bbe3ce58a3&ccb=7-4&oe=605E2ACF&oh=7706541986085e8d2a442f3100f5e702&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/yura_936/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/10000000_1168185566947312_1693223758573978502_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=D0FrFnecAHYAX-u33rB&vs=17848937384535800_4256096211&_nc_vs=HBksFQAYJEdJQ1dtQUR3NTc5bGRTWUVBSWJERFk4SmluOFhicV9FQUFBRhUAAsgBABUAGCRHTHBXekFscjNZQVgwamtCQUZ2Z0plUE1BUnh2YnFfRUFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACbwmrWQ8uC0PxUCKAJDMywXQD4AAAAAAAAYEmRhc2hfYmFzZWxpbmVfMV92MREAdf4HAA%3D%3D&_nc_rid=b2ca54748d&ccb=7-4&oe=6061677C&oh=c88c90362732b6af6b248a3ac4e8d18d&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/v/t50.16885-16/10000000_287422346194300_3910341378798440836_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjEyODAuaWd0di5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=T4G-jIZtZjgAX-3ddFz&vs=18209025361020542_1654957900&_nc_vs=HBksFQAYJEdJQ1dtQUI4YmRpNmFBVUJBSVRSeWlIRVVrUTJidlZCQUFBRhUAAsgBABUAGCRHSFB3M3drRjBJdl9yX1FCQUhZYnBhR3dkdTVnYnZWQkFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACb8vJztycDYQBUCKAJDMywXQGJxDlYEGJMYEmRhc2hfYmFzZWxpbmVfMV92MREAdewHAA%3D%3D&_nc_rid=8f1b00aafc&ccb=7-4&oe=606164A6&oh=bf9ddd7945b4a3cdb053147e46bdaef4&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/boram__jj/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/167024104_1815376588631817_3942044325993166028_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=YhNiUEjdOkkAX91VD5P&ccb=7-4&oh=501ed1a91fd314927f3b4c45c5086b90&oe=6089E74E&_nc_sid=6136e7&ig_cache_key=MjUzOTkxODA3MzE3Mzg0NjY5Nw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/weiman_the_real_one/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/79615348_903629410435215_5874278704738433173_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=XzlyHme-jssAX9fyNgM&edm=AOVtZ6oAAAAA&vs=17912127361730227_270718654&_nc_vs=HBksFQAYJEdIVFZ2Z1NQZ0FTZTJEVURBSlY0azlOYm9ZVlJidXFIQUFBQRUAAsgBABUAGCRHTEo5LUFtdjRiV2FoelVLQU05S2ZLcVRXTnd2YnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbmu%2FGjhL%2FRPxUCKAJDMywXQC4AAAAAAAAYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=aab0d17314&ccb=7-4&oe=60753D3F&oh=21ed37a2c79e1618478d116e6110ca2f&_nc_sid=bab638 +/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/173205557_167251781933216_1150698725227016954_n.jpg?se=7&tp=1&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=1&_nc_ohc=WtORZ2J3Y-UAX_RatNU&edm=APv5SkIAAAAA&ccb=7-4&oh=2b1b884668df7e8e974905edcaf5497f&oe=609CF6BA&_nc_sid=7479f6&ig_cache_key=MjU1MDc4NjM3ODEwNzk3NDI5Nw%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/ngoctrinh89/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/98618760_3227004884069355_6044999634251674592_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=O_mfjDVyUb0AX8STxQP&edm=AOVtZ6oAAAAA&vs=17882073455230920_638136539&_nc_vs=HBksFQAYJEdJak40QVhycTgyZjhYWUxBT0R6NzdvakpfUlRidXFIQUFBQRUAAsgBABUAGCRHRlpSZUFwdVlmS0p1d1FCQUs0T2dWY3R2ZVlIYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACaQ3Oj61OnDPxUCKAJDMywXQCuZmZmZmZoYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=76a0e8f923&ccb=7-4&oe=60834C43&oh=d715adacda8bb3840e0bf87c8f995ad5&_nc_sid=bab638