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