Browse Source

add new code

feature/new_bilibili_and_instagram_sxs20191126
shixuesen 5 years ago
parent
commit
dfcab4d3d5
24 changed files with 13035 additions and 1141 deletions
  1. +1
    -0
      .idea/php.xml
  2. +4
    -4
      app/Console/Commands/BiliVideoCode.php
  3. +15
    -0
      app/Console/Commands/CommonTest.php
  4. +2
    -2
      app/Console/Commands/FullSiteCommand.php
  5. +4
    -3
      app/Console/Commands/InstagramScrape.php
  6. +1
    -1
      app/Console/Commands/RenameTest.php
  7. +4
    -4
      app/Console/Kernel.php
  8. +8
    -2
      app/Http/Controllers/WeiboController.php
  9. +15
    -0
      app/Services/CommonScrapeService.php
  10. +52
    -0
      app/Services/FileService.php
  11. +25
    -10
      app/Services/FullSiteService.php
  12. +2
    -2
      app/Services/HandBrakeService.php
  13. +28
    -20
      app/Services/Ins24Service.php
  14. +7
    -6
      app/Services/InstagramService.php
  15. +7
    -2
      app/Services/NewNvshenService.php
  16. +10
    -3
      app/Services/NewXiuGirlsService.php
  17. +70
    -65
      app/Services/TujiguService.php
  18. +89
    -4
      app/Services/WeiboService.php
  19. +32
    -5
      app/Services/XiurenjiService.php
  20. +35
    -0
      app/Utils/FileUtils.php
  21. +1
    -0
      composer.json
  22. +2841
    -1008
      composer.lock
  23. +9764
    -0
      composer.lock.1
  24. +18
    -0
      fail.log

+ 1
- 0
.idea/php.xml View File

@ -164,6 +164,7 @@
<path value="$PROJECT_DIR$/vendor/league/mime-type-detection" /> <path value="$PROJECT_DIR$/vendor/league/mime-type-detection" />
<path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" /> <path value="$PROJECT_DIR$/vendor/symfony/deprecation-contracts" />
<path value="$PROJECT_DIR$/vendor/james-heinrich/getid3" /> <path value="$PROJECT_DIR$/vendor/james-heinrich/getid3" />
<path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
</include_path> </include_path>
</component> </component>
<component name="PhpProjectSharedConfiguration" php_language_level="7.1" /> <component name="PhpProjectSharedConfiguration" php_language_level="7.1" />


+ 4
- 4
app/Console/Commands/BiliVideoCode.php View File

@ -48,12 +48,12 @@ class BiliVideoCode extends Command
// $bilibili->insertDBTest();exit; // $bilibili->insertDBTest();exit;
// $bilibili->queryPlayList(); // $bilibili->queryPlayList();
// $bilibili->queryUpVideoList(10278125);
$bilibili->queryUpVideoList(10278125);
// exit; // exit;
// $bilibili->queryDBCollectionList();
// $bilibili->queryForVideoParts();
// $bilibili->compareAndDownloadUpVideos();
$bilibili->queryDBCollectionList();
$bilibili->queryForVideoParts();
$bilibili->compareAndDownloadUpVideos();
// exit; // exit;
$bilibili->compareAndDownloadCollectionVideos(); $bilibili->compareAndDownloadCollectionVideos();
// $bilibili->queryCollectionList(); // $bilibili->queryCollectionList();


+ 15
- 0
app/Console/Commands/CommonTest.php View File

@ -2,7 +2,11 @@
namespace App\Console\Commands; namespace App\Console\Commands;
use App\Services\CommonScrapeService;
use App\Services\FileService;
use App\Utils\FileUtils;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Redis;
class CommonTest extends Command class CommonTest extends Command
{ {
@ -37,6 +41,17 @@ class CommonTest extends Command
*/ */
public function handle() public function handle()
{ {
$commonScrapeService = new CommonScrapeService();
$commonScrapeService->scrapeBLImage();exit;
dump(FileUtils::scanDuplicateDir("/Volumes/intel660p/image/xg/ycc"));exit;
$fileService = new FileService();
$fileService->segmentFiles("/Volumes/Samsung/weibo/old_image");
exit;
// Redis::set("hello", "123");
echo Redis::get("fullSet");
exit;
echo mb_strlen("霸气欣欣爷,内地画师,兼职推女神模特,毕业于广州美术学院国画系,自称广州沙画师彩绘师欣儿,一位猫咪爱好%E8");exit;
setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030')); setlocale(LC_ALL,array('zh_CN.gbk','zh_CN.gb2312','zh_CN.gb18030'));
setlocale(LC_ALL, "zh_CN.UTF-8"); setlocale(LC_ALL, "zh_CN.UTF-8");
$p1 = pathinfo('D:\\atlas\\这是文件夹\\可爱胖胖是怎么变帅的#超能陆战队.mp4'); $p1 = pathinfo('D:\\atlas\\这是文件夹\\可爱胖胖是怎么变帅的#超能陆战队.mp4');


+ 2
- 2
app/Console/Commands/FullSiteCommand.php View File

@ -39,8 +39,8 @@ class FullSiteCommand extends Command
public function handle() public function handle()
{ {
$service = new FullSiteService(); $service = new FullSiteService();
// $service->replaceImagePath();exit;
$service->fullSiteDownloadImage();
$service->replaceImagePath();exit;
// $service->fullSiteDownloadImage();
// //
} }
} }

+ 4
- 3
app/Console/Commands/InstagramScrape.php View File

@ -40,13 +40,14 @@ class InstagramScrape extends Command
public function handle() public function handle()
{ {
// //
// $ins = new InstagramService();
// $ins->scrapeUsers();
$ins = new InstagramService();
$ins->scrapeUsers();
$ins->scrapeLikedUsers();exit;
// $ins->getUserNameById(); // $ins->getUserNameById();
// $ins->queryFollowUsers(); // $ins->queryFollowUsers();
// $ins->commonRequest(); // $ins->commonRequest();
$ins24 = new Ins24Service(); $ins24 = new Ins24Service();
$ins24->scrapeUsers(); $ins24->scrapeUsers();
// $ins24->scrapeUsersVideos();
$ins24->scrapeUsersVideos();
} }
} }

+ 1
- 1
app/Console/Commands/RenameTest.php View File

@ -41,7 +41,7 @@ class RenameTest extends Command
// //
$rename = new RenameService(); $rename = new RenameService();
// $rename->rename("/Volumes/WD/tmp/尤果网/尤G网", "尤果网-"); // $rename->rename("/Volumes/WD/tmp/尤果网/尤G网", "尤果网-");
$rename->rename("/Users/shixuesen/Documents/tmp/nm", "");
$rename->rename("/Volumes/WD/tmp/写真图/面饼仙儿/019/面饼仙儿 1-20", "");
// $rename->rename(); // $rename->rename();
// $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/"); // $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/");
} }


+ 4
- 4
app/Console/Kernel.php View File

@ -116,11 +116,11 @@ class Kernel extends ConsoleKernel
// })->everyMinute(); // })->everyMinute();
})->dailyAt("00:10"); })->dailyAt("00:10");
$schedule->call(function () {
$service = new InstagramService();
$service->scrapeLikedUsers();
// $schedule->call(function () {
// $service = new InstagramService();
// $service->scrapeLikedUsers();
// })->everyMinute(); // })->everyMinute();
})->dailyAt('02:00');
// })->dailyAt('02:00');
$schedule->call(function () { $schedule->call(function () {
$xiuService = new NewXiuGirlsService(); $xiuService = new NewXiuGirlsService();


+ 8
- 2
app/Http/Controllers/WeiboController.php View File

@ -30,8 +30,13 @@ class WeiboController extends Controller
$url = array(); $url = array();
for( $i = 341; $i >= 1 ; $i-- )
$url[] = 'https://m.weibo.cn/api/container/getIndex?containerid=1076035893812490&openApp=0&page='.$i;
// for( $i = 341; $i >= 1 ; $i-- )
// $url[] = 'https://m.weibo.cn/api/container/getIndex?containerid=1076035893812490&openApp=0&page='.$i;
for( $i = 5; $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;
// }
return response()->json($url); return response()->json($url);
} }
@ -57,6 +62,7 @@ class WeiboController extends Controller
// Log::info($request->input()); // Log::info($request->input());
$weibo = new WeiboService(); $weibo = new WeiboService();
$result = $weibo->scrapeWeiboPicAndVideo($request->input("content")); $result = $weibo->scrapeWeiboPicAndVideo($request->input("content"));
// $result = $weibo->scrapeGroupWeiboPicAndVideo($request->input("content"));
return response()->json($result); return response()->json($result);
} }


+ 15
- 0
app/Services/CommonScrapeService.php View File

@ -0,0 +1,15 @@
<?php
namespace App\Services;
class CommonScrapeService {
public function scrapeBLImage()
{
$sourceUrl = "http://img11.tu11.com:8080/uploads/20201125/202011251846611";
for ($i = 39; $i < 100; $i++) {
$content = file_get_contents($sourceUrl . $i . ".jpg");
file_put_contents("/Users/shixuesen/Pictures/bl/" . pathinfo($sourceUrl . $i . ".jpg", PATHINFO_BASENAME), $content);
}
}
}

+ 52
- 0
app/Services/FileService.php View File

@ -0,0 +1,52 @@
<?php
namespace App\Services;
use Symfony\Component\Finder\Finder;
class FileService {
public function segmentFiles($baseDir)
{
if (!is_dir($baseDir)) {
return;
}
// $files = new Finder();
// $files->files()->in($baseDir);
$files = $this->scan_dir($baseDir);
$firstTime = true;
$counter = 0;
$dirCounter = 0;
$dirName = "";
foreach ($files as $file) {
if ($firstTime) {
$dirName = $baseDir . "/" . date("Y-m-d", filectime($baseDir . "/" . $file)) . "-$dirCounter";
if (!is_dir($dirName)) {
mkdir($dirName);
}
$dirCounter++;
$firstTime = false;
}
rename($baseDir . "/" . $file, $dirName . "/" . $file);
$counter++;
if ($counter % 1000 == 0) {
$firstTime = true;
}
// exit;
}
}
private function scan_dir($dir) {
$ignored = array(".", "..", ".svn", ".htaccess",".DS_Store");
$files = array();
foreach (scandir($dir) as $file) {
if (in_array($file, $ignored)) continue;
$files[$file] = filemtime($dir . '/' . $file);
}
asort($files);
$files = array_keys($files);
return ($files) ? $files : false;
}
}

+ 25
- 10
app/Services/FullSiteService.php View File

@ -1,5 +1,6 @@
<?php <?php
namespace App\Services; namespace App\Services;
use Illuminate\Support\Facades\Redis;
use Log; use Log;
use QL\QueryList; use QL\QueryList;
@ -61,17 +62,31 @@ class FullSiteService {
public function replaceImagePath() public function replaceImagePath()
{ {
$dir = "/Volumes/WD/tmp/site/mm24.cc/beautyleg/";
// $files = scandir($dir);
// dump("total files count is " . count($files));
// foreach ($files as $file) {
// if ($file == "." || $file == ".." || $file == ".DS_Store") {
// continue;
// }
// dump($file);
// file_put_contents($dir . $file, str_replace("http://img.huangguogan.net", "..", file_get_contents($dir . $file)));
$dir = "/Volumes/WD/tmp/site/mm24.cc/iess/";
$files = scandir($dir);
dump("total files count is " . count($files));
$flag = true;
foreach ($files as $file) {
if ($file == "." || $file == ".." || $file == ".DS_Store") {
continue;
}
dump($file);
if ($flag) {
$isExist = Redis::exists("fullSet");
if (!$isExist) {
continue;
} else {
$flag = false;
}
}
$content = file_get_contents($dir . $file);
if (str_contains($content, "http://img.huangguogan.net")) {
file_put_contents($dir . $file, str_replace("http://img.huangguogan.net", "..", file_get_contents($dir . $file)));
}
Redis::set("fullSet", $file);
// exit; // exit;
// }
}
exit;
for ($i = 1; $i <= 46; $i++) { for ($i = 1; $i <= 46; $i++) {
if ($i == 1) { if ($i == 1) {
$file = "4063.html"; $file = "4063.html";


+ 2
- 2
app/Services/HandBrakeService.php View File

@ -53,7 +53,7 @@ class HandBrakeService
} }
// public function processDir($baseDir = "/Volumes/WD/Video/HuaVid/") // public function processDir($baseDir = "/Volumes/WD/Video/HuaVid/")
public function processDir($baseDir = "/Volumes/Backup/HuaVid/菲儿/")
public function processDir($baseDir = "/Volumes/Backup/legsjapan/")
{ {
$files = scandir($baseDir); $files = scandir($baseDir);
foreach ($files as $file) { foreach ($files as $file) {
@ -83,7 +83,7 @@ class HandBrakeService
return; return;
} }
if (is_file($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"])) { if (is_file($fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"])) {
// unlink($pathFile);
unlink($pathFile);
return; return;
} }
$targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"]; $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-1'. '.' . $fileInfo["extension"];


+ 28
- 20
app/Services/Ins24Service.php View File

@ -25,38 +25,42 @@ class Ins24Service
try { try {
$userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt"); $userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt");
$userList = array_slice($userList, 1);
$userList = array_slice($userList, 27, 1);
// $userList = ['1992.ai_']; // $userList = ['1992.ai_'];
// print_r($userList);exit;
print_r($userList);exit;
// print_r($userList); // print_r($userList);
foreach ($userList as $userName) { foreach ($userList as $userName) {
usleep(random_int(10, 1000) * 100000);
$sleepTime = random_int(10, 1000) * 10000;
echo "currentTime: " . date("y-m-d H:i:s") . " sleep: " .$sleepTime;
usleep($sleepTime);
$trueName = trim($userName); $trueName = trim($userName);
$thisUserImageDir = $baseImageDir . $trueName . "/"; $thisUserImageDir = $baseImageDir . $trueName . "/";
$maxId = "2034758748461248535_13049295449";
$pageNo = 75;
$maxId = ""; $maxId = "";
$pageNo = 1;
$pageNo = 0;
$flag = true; $flag = true;
for (; ;) { for (; ;) {
try { try {
$data = $this->queryImage($trueName, $pageNo, $maxId); $data = $this->queryImage($trueName, $pageNo, $maxId);
$maxId = $data["maxId"];
$pageNo ++;
if (count($data["resourceList"]) == 0) { if (count($data["resourceList"]) == 0) {
break; break;
} }
if ($flag && $data["maxId"] != "2263028000987470356_13049295449") {
echo "maxId not matched! \n";
$flag = false;
continue;
}
// if ($flag && $data["maxId"] != "2263028000987470356_13049295449") {
// echo "maxId not matched! \n";
// $flag = false;
// continue;
// }
foreach ($data["resourceList"] as $resource) { foreach ($data["resourceList"] as $resource) {
$res = $this->downloadFile($resource["mediaURL"], 0, $thisUserImageDir); $res = $this->downloadFile($resource["mediaURL"], 0, $thisUserImageDir);
usleep(random_int(10, 1000) * 100000); usleep(random_int(10, 1000) * 100000);
if ($res == 0) { if ($res == 0) {
break;
break 2;
} }
} }
$maxId = $data["maxId"];
$pageNo ++;
} catch (\Exception $e) { } catch (\Exception $e) {
Log::error("ins get user id for name error: " . $e->getMessage() . " username is " . $userName); Log::error("ins get user id for name error: " . $e->getMessage() . " username is " . $userName);
} }
@ -80,7 +84,9 @@ class Ins24Service
// print_r($userList);exit; // print_r($userList);exit;
// print_r($userList); // print_r($userList);
foreach ($userList as $userName) { foreach ($userList as $userName) {
usleep(random_int(10, 1000) * 100000);
$sleepTime = random_int(10, 1000) * 10000;
echo "currentTime: " . date("y-m-d H:i:s") . " sleep: " .$sleepTime;
// usleep(random_int(10, 1000) * 100000);
$trueName = trim($userName); $trueName = trim($userName);
$thisUserImageDir = $baseImageDir . $trueName . "/"; $thisUserImageDir = $baseImageDir . $trueName . "/";
@ -89,6 +95,8 @@ class Ins24Service
for (; ;) { for (; ;) {
try { try {
$data = $this->queryVideo($trueName, $pageNo, $maxId); $data = $this->queryVideo($trueName, $pageNo, $maxId);
$maxId = $data["maxId"];
$pageNo ++;
if (count($data["resourceList"]) == 0) { if (count($data["resourceList"]) == 0) {
break; break;
} }
@ -121,7 +129,7 @@ class Ins24Service
CURLOPT_RETURNTRANSFER => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "", CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10, CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_TIMEOUT => 200,
CURLOPT_FOLLOWLOCATION => true, CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_CUSTOMREQUEST => "POST",
@ -149,12 +157,12 @@ class Ins24Service
if(curl_exec($curl) === false) if(curl_exec($curl) === false)
{ {
echo 'Curl error: ' . curl_error($curl); echo 'Curl error: ' . curl_error($curl);
} else {
echo $response;
// exit;
} }
curl_close($curl); curl_close($curl);
$formatResponse = json_decode($response, true); $formatResponse = json_decode($response, true);
if ($formatResponse["code"] == 200) { if ($formatResponse["code"] == 200) {
echo "userName: $userName, maxId: " . $formatResponse["data"]["maxId"] . " pageNo: " . $pageNo . " count: " . count($formatResponse["data"]["resourceList"]) . "\n";
return $formatResponse["data"]; return $formatResponse["data"];
} else { } else {
echo $response; echo $response;
@ -174,7 +182,7 @@ class Ins24Service
CURLOPT_RETURNTRANSFER => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "", CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10, CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_TIMEOUT => 200,
CURLOPT_FOLLOWLOCATION => true, CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST", CURLOPT_CUSTOMREQUEST => "POST",
@ -202,12 +210,12 @@ class Ins24Service
if(curl_exec($curl) === false) if(curl_exec($curl) === false)
{ {
echo 'Curl error: ' . curl_error($curl); echo 'Curl error: ' . curl_error($curl);
} else {
echo $response;
// exit;
} }
curl_close($curl); curl_close($curl);
$formatResponse = json_decode($response, true); $formatResponse = json_decode($response, true);
if ($formatResponse["code"] == 200) { if ($formatResponse["code"] == 200) {
echo "userName: $userName, maxId: " . $formatResponse["data"]["maxId"] . " pageNo: " . $pageNo . " count: " . count($formatResponse["data"]["resourceList"]) . "\n";
return $formatResponse["data"]; return $formatResponse["data"];
} else { } else {
echo $response; echo $response;
@ -235,7 +243,7 @@ class Ins24Service
// $flag = 1; // $flag = 1;
// } // }
if (file_exists($filePrefix . $filename) || file_exists($filePrefix . $filename . ".back")) { if (file_exists($filePrefix . $filename) || file_exists($filePrefix . $filename . ".back")) {
echo "\n file exists " . $filePrefix . $filename;
echo "\n file exists " . $filePrefix . $filename . "\n";
return 0; return 0;
} }
try { try {


+ 7
- 6
app/Services/InstagramService.php View File

@ -18,10 +18,10 @@ use InstagramScraper\Exception\InstagramException;
class InstagramService class InstagramService
{ {
// private $username = "nicksxs";
// private $password = 'tmx211314';
private $username = "sili1024";
private $password = 'Qwer2020';
private $username = "nicksxs";
private $password = 'mff@5201314';
// private $username = "sili1024";
// private $password = 'Qwer2020';
private $debug = false; private $debug = false;
private $truncatedDebug = false; private $truncatedDebug = false;
@ -278,7 +278,7 @@ class InstagramService
// always pause between requests that may run very rapidly, otherwise // always pause between requests that may run very rapidly, otherwise
// Instagram will throttle you temporarily for abusing their API! // Instagram will throttle you temporarily for abusing their API!
echo "\n Sleeping for 5s...\n"; echo "\n Sleeping for 5s...\n";
sleep(10);
sleep(5 * random_int(1, 10));
} while ($maxId != null); } while ($maxId != null);
} catch (\Exception $e) { } catch (\Exception $e) {
echo 'Something went wrong: ' . $e->getMessage() . "\n"; echo 'Something went wrong: ' . $e->getMessage() . "\n";
@ -294,6 +294,7 @@ class InstagramService
$ig->login($this->username, $this->password); $ig->login($this->username, $this->password);
} catch } catch
(\Exception $e) { (\Exception $e) {
dump($e);
echo 'Something went wrong: ' . $e->getMessage() . "\n"; echo 'Something went wrong: ' . $e->getMessage() . "\n";
exit(0); exit(0);
} }
@ -303,7 +304,7 @@ class InstagramService
try { try {
$userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt"); $userList = file("/Users/shixuesen/OneDrive/Pictures/instagram/user.txt");
$userList = array_slice($userList, 25, 1);
$userList = array_slice($userList, 0, 35);
// $userList = ['1992.ai_']; // $userList = ['1992.ai_'];
// print_r($userList);exit; // print_r($userList);exit;
// print_r($userList); // print_r($userList);


+ 7
- 2
app/Services/NewNvshenService.php View File

@ -96,17 +96,19 @@ class NewNvshenService
foreach (self::$name_dir as $username => $name) { foreach (self::$name_dir as $username => $name) {
// $baseDir = "/Users/shixuesen/Documents/tmp/image/xg/" . $name['dir'] . "/"; // $baseDir = "/Users/shixuesen/Documents/tmp/image/xg/" . $name['dir'] . "/";
$baseDir = "/Volumes/intel660p/image/xg/" . $name["dir"] . "/"; $baseDir = "/Volumes/intel660p/image/xg/" . $name["dir"] . "/";
$albumCodeMap = [];
// 处理两个网站对应图册名不一致,直接取图册 id 作为唯一性判断的 map // 处理两个网站对应图册名不一致,直接取图册 id 作为唯一性判断的 map
if (is_dir($baseDir)) { if (is_dir($baseDir)) {
$albumDirList = scandir($baseDir); $albumDirList = scandir($baseDir);
foreach ($albumDirList as $albumDir) { foreach ($albumDirList as $albumDir) {
if ($albumDir == "." || $albumDir == "..") {
if ($albumDir == "." || $albumDir == ".." || $albumDir == ".DS_Store") {
continue; continue;
} }
if (is_dir($baseDir . $albumDir ) && is_numeric(explode("-", $albumDir)[0])) { if (is_dir($baseDir . $albumDir ) && is_numeric(explode("-", $albumDir)[0])) {
$albumCodeMap[explode("-", $albumDir)[0]] = $albumDir; $albumCodeMap[explode("-", $albumDir)[0]] = $albumDir;
} }
} }
// dump($albumCodeMap);exit;
} }
$baseUrl = "https://www.nvshens.org"; $baseUrl = "https://www.nvshens.org";
usleep(random_int(1000, 10000) * 1000); usleep(random_int(1000, 10000) * 1000);
@ -171,6 +173,8 @@ class NewNvshenService
try { try {
$page = $mainQl->get($baseUrl . $album, [], ['maxTry' => 5])->find(".albumInfo > span")->htmls(); $page = $mainQl->get($baseUrl . $album, [], ['maxTry' => 5])->find(".albumInfo > span")->htmls();
$title = $mainQl->get($baseUrl . $album, [], ['maxTry' => 5])->find(".albumTitle > #htilte")->htmls(); $title = $mainQl->get($baseUrl . $album, [], ['maxTry' => 5])->find(".albumTitle > #htilte")->htmls();
$imageSource = $mainQl->get($baseUrl . $album, [], ['maxTry' => 5])->find("#hgallery img:nth-child(1)")->attr("src");
$imageSourceParts = pathinfo($imageSource, PATHINFO_DIRNAME);
break; break;
} catch (ConnectException $e) { } catch (ConnectException $e) {
echo 'connection error: ' . $e->getMessage() . "\n"; echo 'connection error: ' . $e->getMessage() . "\n";
@ -187,7 +191,8 @@ class NewNvshenService
$totalImageNum = $result[0]; $totalImageNum = $result[0];
for ($j = 0; $j < $totalImageNum; $j++) { for ($j = 0; $j < $totalImageNum; $j++) {
$albumCode = substr($album, 3, 5); $albumCode = substr($album, 3, 5);
$baseImageUrl = "https://t1.onvshen.com:85/gallery/{$name['code']}/{$albumCode}/";
// $baseImageUrl = "https://" . $imageSourceParts["host"] . ":" . $imageSourceParts["port"] . "/gallery/{$name['code']}/{$albumCode}/";
$baseImageUrl = $imageSourceParts . "/";
if ($j == 0) { if ($j == 0) {
$imageName = $j . ".jpg"; $imageName = $j . ".jpg";
} else { } else {


+ 10
- 3
app/Services/NewXiuGirlsService.php View File

@ -7,6 +7,7 @@ namespace App\Services;
use QL\QueryList; use QL\QueryList;
use Illuminate\Http\File; use Illuminate\Http\File;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
use App\Utils\FileUtils;
class NewXiuGirlsService class NewXiuGirlsService
{ {
@ -104,6 +105,9 @@ class NewXiuGirlsService
mkdir($baseDir); mkdir($baseDir);
} }
// 扫描目录下已有的相册目录,以相册标号作为 key,目录作为值返回
$baseMap = FileUtils::scanBaseDir($baseDir);
// $items = array_slice($items, 1); // $items = array_slice($items, 1);
// print_r($items);continue; // print_r($items);continue;
foreach ($items as $item) { foreach ($items as $item) {
@ -136,10 +140,13 @@ class NewXiuGirlsService
// break; // break;
$albumPath = ""; $albumPath = "";
$albumCode = explode("/", $item)[2]; $albumCode = explode("/", $item)[2];
if (!file_exists($baseDir .explode("/", $item)[2] . "-" .$title[0])) {
mkdir($baseDir .explode("/", $item)[2]. "-" .$title[0]);
if (array_key_exists($albumCode, $baseMap)) {
$albumPath = $baseMap[$albumCode];
}
if ($albumPath == "" && !file_exists($baseDir .explode("/", $item)[2] . "-" .$title[0])) {
$albumPath = $baseDir .explode("/", $item)[2]. "-" .$title[0];
mkdir($albumPath);
} }
$albumPath = $baseDir.explode("/", $item)[2] . "-" . $title[0];
$attempts = 0; $attempts = 0;
$images = []; $images = [];
do { do {


+ 70
- 65
app/Services/TujiguService.php View File

@ -10,70 +10,75 @@ class TujiguService
{ {
private static $name_dir = [ private static $name_dir = [
"周韦彤" => [
"dir" => "周韦彤",
"code" => 1456,
"name" => "周韦彤"
],
"ycc" => [
"dir" => "ycc",
"code" => 459,
"name" => "杨晨晨"
],
"ry" => [
"dir" => "忍野さら",
"code" => "1875",
"name" => "忍野さら"
],
"azu" => [
"dir" => "azu",
"code" => 437,
"name" => "阿朱"
],
"xq" => [
"dir" => "xq",
"code" => 2438,
"name" => "小琪"
],
"ygh" => [
"dir" => "ygh",
"code" => 550,
"name" => "原干惠"
],
"wyc" => [
"dir" => "wyc",
"code" => 293,
"name" => "王语纯"
],
"zz" => [
"dir" => "zz",
"code" => 954,
"name" => "芝芝 booty"
],
"hlr" => [
"dir" => "hlr",
"code" => 1289,
"name" => "黄乐然"
],
"jrq" => [
"dir" => "jrq",
"code" => 5034,
"name" => "姜仁卿"
],
"ny" => [
"dir" => "ny",
"code" => 5301,
"name" => "奈月"
],
"杉本有美" => [
"dir" => "杉本有美",
"code" => 632,
"name" => "杉本有美"
],
"糯美子" => [
"dir" => "糯美子",
"code" => 161,
"name" => "糯美子"
// "周韦彤" => [
// "dir" => "周韦彤",
// "code" => 1456,
// "name" => "周韦彤"
// ],
// "ycc" => [
// "dir" => "ycc",
// "code" => 459,
// "name" => "杨晨晨"
// ],
// "ry" => [
// "dir" => "忍野さら",
// "code" => "1875",
// "name" => "忍野さら"
// ],
// "azu" => [
// "dir" => "azu",
// "code" => 437,
// "name" => "阿朱"
// ],
// "xq" => [
// "dir" => "xq",
// "code" => 2438,
// "name" => "小琪"
// ],
// "ygh" => [
// "dir" => "ygh",
// "code" => 550,
// "name" => "原干惠"
// ],
// "wyc" => [
// "dir" => "wyc",
// "code" => 293,
// "name" => "王语纯"
// ],
// "zz" => [
// "dir" => "zz",
// "code" => 954,
// "name" => "芝芝 booty"
// ],
// "hlr" => [
// "dir" => "hlr",
// "code" => 1289,
// "name" => "黄乐然"
// ],
// "jrq" => [
// "dir" => "jrq",
// "code" => 5034,
// "name" => "姜仁卿"
// ],
// "ny" => [
// "dir" => "ny",
// "code" => 5301,
// "name" => "奈月"
// ],
// "杉本有美" => [
// "dir" => "杉本有美",
// "code" => 632,
// "name" => "杉本有美"
// ],
// "糯美子" => [
// "dir" => "糯美子",
// "code" => 161,
// "name" => "糯美子"
// ],
"小雪" => [
"dir" => "小雪",
"code" => 388,
"name" => "小雪"
] ]
]; ];
@ -152,7 +157,7 @@ class TujiguService
// $albumCode = substr($album, 25, 5); // $albumCode = substr($album, 25, 5);
$albumCode = explode("/", $album)[4]; $albumCode = explode("/", $album)[4];
$baseImageUrl = "https://lns.hywly.com/a/1/{$albumCode}/";
$baseImageUrl = "https://tjg.hywly.com/a/1/{$albumCode}/";
// if ($j == 0) { // if ($j == 0) {
// $imageName = $j . ".jpg"; // $imageName = $j . ".jpg";
// } else { // } else {


+ 89
- 4
app/Services/WeiboService.php View File

@ -23,11 +23,11 @@ class WeiboService
// @mkdir('data/video'); // @mkdir('data/video');
// $video_dir = "/Volumes/intel660p/video/weibo/ruye"; // $video_dir = "/Volumes/intel660p/video/weibo/ruye";
// $image_dir = "/Volumes/intel660p/image/weibo/ruya"; // $image_dir = "/Volumes/intel660p/image/weibo/ruya";
$video_dir = "/Volumes/Samsung/weibo/people/徐圣佑/video";
$image_dir = "/Volumes/Samsung/weibo/people/徐圣佑/image";
// $video_dir = "/Volumes/Samsung/weibo/people/徐圣佑/video";
// $image_dir = "/Volumes/Samsung/weibo/people/徐圣佑/image";
// $video_dir = "/Volumes/Samsung/weibo/video";
// $image_dir = "/Volumes/Samsung/weibo/image";
$video_dir = "/Volumes/Samsung/weibo/video";
$image_dir = "/Volumes/Samsung/weibo/image";
try { try {
if (strlen($content) > 0) { if (strlen($content) > 0) {
@ -109,6 +109,91 @@ class WeiboService
return true; return true;
} }
public function scrapeGroupWeiboPicAndVideo($content)
{
$video_dir = "/Volumes/Samsung/weibo/video";
$image_dir = "/Volumes/Samsung/weibo/image";
try {
if (strlen($content) > 0) {
// $fname = 'data/' . microtime_float() . '.txt';
// file_put_contents( $fname , $content );
$decoded_json = json_decode($content, true);
$cards = $decoded_json['data']['statuses'];
foreach ($cards as $card) {
// if (!array_key_exists("mblog", $card)) {
// continue;
// }
$mblog = $card;
$subdir = "data/video";
if (!file_exists($subdir)) {
mkdir($subdir);
}
echo json_encode($mblog);
if (array_key_exists("pics", $mblog)) {
$pics = $mblog['pics'];
$user = Arr::get($mblog, "user", []);
$text = Arr::get($mblog, "text", '');
var_dump($pics);
self::process_pic($pics, $image_dir, $user, $text);
// foreach ($pics as $pic) {
// if (array_key_exists("large", $pic)) {
// $pic_url = $pic['large']['url'];
// $h2w = $pic['large']['geo']['height']/$pic['large']['geo']['width'];
// } else {
// $pic_url = $pic['url'];
// $h2w = $pic['geo']['height'] / $pic['geo']['width'];
// }
// if ($h2w > 15) {
// continue;
// }
// $pic_name = pathinfo($pic_url, PATHINFO_FILENAME);
// $pic_ext = pathinfo($pic_url, PATHINFO_EXTENSION);
// $file_name = $subdir . "/" . $pic_name . "." . $pic_ext;
// if (!file_exists($file_name)) {
// $pic_content = file_get_contents($pic_url);
// // echo $pic_content;
// file_put_contents($file_name, $pic_content);
// }
// }
} else if (array_key_exists("retweeted_status", $mblog)) {
if (array_key_exists("pics", $mblog["retweeted_status"])) {
$pics = $mblog["retweeted_status"]['pics'];
# code...
$user = Arr::get($mblog["retweeted_status"], "user", []);
$text = Arr::get($mblog["retweeted_status"], "text", '');
self::process_pic($pics, $image_dir, $user, $text);
}
# code...
} else if (array_key_exists("page_info", $mblog) && array_key_exists("media_info", $mblog["page_info"])) {
# code...
$page_info = $mblog["page_info"];
$media_info = $mblog["page_info"]["media_info"];
$video_url = Arr::get($media_info, "mp4_720p_mp4", "");
if ($video_url == "") {
$video_url = Arr::get($media_info, "mp4_hd_url", "");
}
if ($video_url == "") {
$video_url = Arr::get($media_info, "mp4_sd_url", "");
}
if ($video_url != "") {
self::process_video($video_url, $video_dir, $page_info["content2"]);
}
}
}
// die('save to ' . $fname . ' url = ' . $_REQUEST['url'] );
} else {
die('empty');
}
} catch (\Exception $e) {
Log::error($e);
Log::error($e->getTraceAsString());
// Log::info($content);
}
return true;
}
function microtime_float() function microtime_float()
{ {


+ 32
- 5
app/Services/XiurenjiService.php View File

@ -13,7 +13,8 @@ class XiurenjiService
{ {
public $domainUrl = "https://www.xiurenji.com"; public $domainUrl = "https://www.xiurenji.com";
public $xiurenRootUrl = "https://www.xiurenji.com/XiuRen/"; public $xiurenRootUrl = "https://www.xiurenji.com/XiuRen/";
public $rootDir = "/Users/shixuesen/Documents/tmp/xiuren/";
// public $rootDir = "/Users/shixuesen/Documents/tmp/xiuren/";
public $rootDir = "/Volumes/Backup/images/xiuren/";
public $queryInstance; public $queryInstance;
public function __construct() public function __construct()
{ {
@ -26,7 +27,7 @@ class XiurenjiService
$pageCount = $this->getEncodeHtmlContent("https://www.xiurenji.com/XiuRen/index.html")->find(".page span")->htmls()->get(0); $pageCount = $this->getEncodeHtmlContent("https://www.xiurenji.com/XiuRen/index.html")->find(".page span")->htmls()->get(0);
print_r($pageCount); print_r($pageCount);
if ((int)$pageCount > 0) { if ((int)$pageCount > 0) {
for ($i = 0; $i < $pageCount / $pageSize; $i++) {
for ($i = 0; $i <= ceil($pageCount / $pageSize); $i++) {
$urlSuffix = ""; $urlSuffix = "";
if ($i == 0) { if ($i == 0) {
$urlSuffix = "index.html"; $urlSuffix = "index.html";
@ -73,7 +74,13 @@ class XiurenjiService
$albumCode = substr($url, $slashPos, $dotPos - $slashPos); $albumCode = substr($url, $slashPos, $dotPos - $slashPos);
// $albumName0 = substr($item, strpos($item, "["), strrpos($item, "]") - strpos($item, "[") + 1); // $albumName0 = substr($item, strpos($item, "["), strrpos($item, "]") - strpos($item, "[") + 1);
$albumName = ltrim(substr($item, 6, strrpos($item, "]") - 5)); $albumName = ltrim(substr($item, 6, strrpos($item, "]") - 5));
// dump("album compare ", $albumName0, $albumName);exit;
if (mb_strlen($albumName) <= 12 || mb_strlen($albumName) >= 50 || !str_contains($albumName, "No")) {
dump("old Album: " . $albumName);
$albumName = $pageContent->find(".ina p b:nth-child(2)")->texts();
// $albumName = ltrim(substr($item, 6, strrpos(substr($item, 0, strrpos($item, "@")), " ") - 5));
dump("new Album: " . urldecode($albumName[0]));
$albumName = urldecode($albumName[0]);
}
$this->parseContent($this->rootDir. $albumName, $pageContent); $this->parseContent($this->rootDir. $albumName, $pageContent);
dump("albumName: ". $albumName); dump("albumName: ". $albumName);
// dump("item: ". $item); // dump("item: ". $item);
@ -91,7 +98,12 @@ class XiurenjiService
public function parseContent($dir, $pageContent) public function parseContent($dir, $pageContent)
{ {
if (!is_dir($dir)) { if (!is_dir($dir)) {
mkdir($dir);
try {
mkdir($dir);
} catch (Exception $e) {
Log::error($e->getTraceAsString());
return;
}
} }
$images = $pageContent->find(".img p img")->getElements(); $images = $pageContent->find(".img p img")->getElements();
// dump($images);exit; // dump($images);exit;
@ -99,6 +111,7 @@ class XiurenjiService
usleep(random_int(10, 100) * 100); usleep(random_int(10, 100) * 100);
$imageUrl = $image->getAttribute("src"); $imageUrl = $image->getAttribute("src");
$trueImageUrl = "https://x1.plmn5.com/U". substr($imageUrl, 2); $trueImageUrl = "https://x1.plmn5.com/U". substr($imageUrl, 2);
$trueImageUrl = "https://www.xiurenji.com" . $imageUrl;
$fileInfo = pathinfo($trueImageUrl); $fileInfo = pathinfo($trueImageUrl);
if (file_exists($dir . "/" .$fileInfo["basename"])) { if (file_exists($dir . "/" .$fileInfo["basename"])) {
continue; continue;
@ -108,7 +121,21 @@ class XiurenjiService
$content = ""; $content = "";
do { do {
try { try {
$content = file_get_contents($trueImageUrl);
$curl_handle=curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $trueImageUrl);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2000);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, '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');
curl_setopt($curl_handle, CURLOPT_REFERER, $this->xiurenRootUrl);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true);
$content = curl_exec($curl_handle);
if ($content === false) {
$le = new Exception("get image has error: " . curl_error($curl_handle));
curl_close($curl_handle);
throw $le;
}
curl_close($curl_handle);
// $content = file_get_contents($trueImageUrl);
} catch (ErrorException | Exception $e) { } catch (ErrorException | Exception $e) {
echo $e->getTraceAsString() . "\n"; echo $e->getTraceAsString() . "\n";
$sleepTime = 10000 * random_int(100, 1000); $sleepTime = 10000 * random_int(100, 1000);


+ 35
- 0
app/Utils/FileUtils.php View File

@ -0,0 +1,35 @@
<?php
namespace App\Utils;
class FileUtils {
public static function scanBaseDir($baseDir): array
{
if (!is_dir($baseDir)) {
return [];
}
$dirs = scandir($baseDir);
$baseMap = [];
foreach ($dirs as $dir) {
if ($dir == "." || $dir == ".." || $dir == ".DS_Store") {
continue;
}
$baseMap[substr($dir, 0, strpos($dir, "-"))] = $baseDir . "/" . $dir;
}
return $baseMap;
}
public static function scanDuplicateDir($baseDir): array {
if (!is_dir($baseDir)) {
return [];
}
$dirs = scandir($baseDir);
$baseMap = [];
foreach ($dirs as $dir) {
if ($dir == "." || $dir == ".." || $dir == ".DS_Store") {
continue;
}
$baseMap[substr($dir, 0, strpos($dir, "-"))][] = $baseDir . "/" . $dir;
}
return $baseMap;
}
}

+ 1
- 0
composer.json View File

@ -31,6 +31,7 @@
"protoqol/prequel": "^1.22", "protoqol/prequel": "^1.22",
"qcloud/cos-sdk-v5": ">=1.0", "qcloud/cos-sdk-v5": ">=1.0",
"raiym/instagram-php-scraper": "^0.8.31", "raiym/instagram-php-scraper": "^0.8.31",
"symfony/finder": "^4.4",
"tinify/tinify": "^1.5" "tinify/tinify": "^1.5"
}, },
"require-dev": { "require-dev": {


+ 2841
- 1008
composer.lock
File diff suppressed because it is too large
View File


+ 9764
- 0
composer.lock.1
File diff suppressed because it is too large
View File


+ 18
- 0
fail.log View File

@ -916,3 +916,21 @@
/Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/81886004_481335096141006_2618849757660007430_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=106&_nc_ohc=GTYCRqQRpaIAX_GkImA&se=7&tp=1&oh=6a5fb2fb66bbaf9e2835bb5cefde5ee8&oe=5FF28934&ig_cache_key=MjIzMDA3Nzc5MDU4MTc2NDU0Ng%3D%3D.2 /Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/81886004_481335096141006_2618849757660007430_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=106&_nc_ohc=GTYCRqQRpaIAX_GkImA&se=7&tp=1&oh=6a5fb2fb66bbaf9e2835bb5cefde5ee8&oe=5FF28934&ig_cache_key=MjIzMDA3Nzc5MDU4MTc2NDU0Ng%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/129703067_102825968299721_2940433148915422822_n.jpg?_nc_ht=scontent-hkg4-1.cdninstagram.com&_nc_cat=105&_nc_ohc=AA31xqhXyB8AX-2CGe8&se=8&tp=1&oh=e4ffcdc95529fb344fa633a8507622d9&oe=5FF6A1FB&ig_cache_key=MjQ1NjYzMTg3NTI5MDgyMTQzMQ%3D%3D.2 /Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/129703067_102825968299721_2940433148915422822_n.jpg?_nc_ht=scontent-hkg4-1.cdninstagram.com&_nc_cat=105&_nc_ohc=AA31xqhXyB8AX-2CGe8&se=8&tp=1&oh=e4ffcdc95529fb344fa633a8507622d9&oe=5FF6A1FB&ig_cache_key=MjQ1NjYzMTg3NTI5MDgyMTQzMQ%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/129213145_757110144894537_1220047829396226723_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=109&_nc_ohc=KluUb9tebPQAX-nWw33&se=7&tp=1&oh=3af707a162087409cf563a58893afd34&oe=5FF3FA1D&ig_cache_key=MjQ1NjYzMTg3NTQwODMzNzcwOA%3D%3D.2 /Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/129213145_757110144894537_1220047829396226723_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=109&_nc_ohc=KluUb9tebPQAX-nWw33&se=7&tp=1&oh=3af707a162087409cf563a58893afd34&oe=5FF3FA1D&ig_cache_key=MjQ1NjYzMTg3NTQwODMzNzcwOA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/pantyhosedladies/ http://www.ins246.com/v/t51.2885-15/e35/64525255_2286551141463429_6758874142052669756_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=109&_nc_ohc=r9AACJ7D9XQAX8d6KJu&se=7&tp=1&oh=491a19b179776abcf709790a4c042098&oe=5FF7FD5D&ig_cache_key=MjA5NDE3ODQwOTkyOTUzNTAyNg%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/xuer_1230/ http://www.ins246.com/v/t51.2885-15/e35/129720274_432087184483596_5751796651809543463_n.jpg?_nc_ht=scontent-hkt1-1.cdninstagram.com&_nc_cat=100&_nc_ohc=ORu9kQB85Z8AX-Dr4k-&se=7&tp=1&oh=159b7fea2c1ba116a918714569b03a24&oe=5FFAF9AB&ig_cache_key=MjQ1NzU2MDEyODQ1OTY5MzU0NA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ http://www.ins246.com/v/t51.2885-15/e35/129736864_235885341214506_3220736945800611772_n.jpg?_nc_ht=scontent-hkt1-1.cdninstagram.com&_nc_cat=106&_nc_ohc=pl-HfwTDJ1kAX-LBOz5&se=7&tp=1&oh=887f4036eaaad60fce9fc82060c631fd&oe=5FF9D959&ig_cache_key=MjQ1ODg4ODc1NzMwOTMwNDU3OA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/mobeee19920223/ http://www.ins246.com/v/t51.2885-15/e35/125032589_286068372723812_8529565437835074020_n.jpg?_nc_ht=scontent-hkg4-1.cdninstagram.com&_nc_cat=108&_nc_ohc=vo6W9ih4C9gAX-_2s-q&se=7&tp=1&oh=4c034de7a0ea43bdd4191b9bdad5fd97&oe=5FFAFC6C&ig_cache_key=MjQ0MjI5NzA1MzIyNzYxMzQ3Mg%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/mobeee19920223/ http://www.ins246.com/v/t51.2885-15/e35/121282122_211964593686076_1637289007538673157_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=104&_nc_ohc=lrrbtCKBUSwAX90E5IC&se=8&tp=1&oh=cf022f2058a7bdcf32200b9a5039c14e&oe=5FFD2D27&ig_cache_key=MjQxODY1MzI0MzA2Mjk5MTA2NA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/ayreen/ http://www.ins246.com/v/t51.2885-15/e35/130805271_824226101487574_6637286998577513100_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=110&_nc_ohc=1DDlH-ABYXcAX-Rits7&se=7&tp=1&oh=5d70017457481639053b777cf5519248&oe=5FFEC922&ig_cache_key=MjQ2MTU5MzEzOTkzMTQ1NjE1OA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/bedich520/ http://www.ins246.com/v/t51.2885-15/e35/130818282_103626341560168_116744761059957734_n.jpg?_nc_ht=scontent-hkg4-2.cdninstagram.com&_nc_cat=104&_nc_ohc=9Xhd5v_0F9UAX8CvQcu&se=7&tp=1&oh=7f101912a90665e43ff9e02ab5e523d1&oe=6000662C&ig_cache_key=MjQ2MjQyMzE1MzM3NTQ4NTY5Mw%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/Likes/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/131573035_249136743219750_2625270659826990830_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5mZWVkLmRlZmF1bHQifQ&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=106&_nc_ohc=kuYoxnqPgn4AX-IWFM_&vs=17878930730047424_1853079093&_nc_vs=HBkcFQAYJEdDdWwxd2NtZ2hTcmx1SUFBTzRfUG43QjFXNGtia1lMQUFBRhUAAsgBACgAGAAbAYgHdXNlX29pbAEwFQAAJoD%2BkaDdssI%2FFQIoAkMzLBdALHdLxqfvnhgSZGFzaF9iYXNlbGluZV8yX3YxEQB16gcA&_nc_rid=051ce5a590&oe=5FEDE60D&oh=f62b3626397d78cdef26d275d2652842
/Users/shixuesen/OneDrive/Pictures/instagram/changchinlan/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/75262787_109251147660989_6667444903360537792_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=lwjCeF56oysAX9q_-sJ&vs=17986515628320733_2467944160&_nc_vs=HBkcFQAYJEdFTnJmQVM5LXRnRFhXTUFBTUFrUzJEUWhZZGNidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJrrY%2Bub%2BqPM%2FFQIoAkMzLBdAI3dLxqfvnhgSZGFzaF9iYXNlbGluZV8yX3YxEQB16AcA&_nc_rid=6db95edb4c&oe=5FEFE3A7&oh=df5d939c28667df8e471759e99e2a151
/Users/shixuesen/OneDrive/Pictures/instagram/changchinlan/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/98547437_883093502450609_7794260140257935573_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=ATw440WXsqcAX8sHiPM&vs=17882871772977321_197933691&_nc_vs=HBkcFQAYJEdPMjIzd1d4VzRRNkt5TURBTldBRDBOTnhpcHNidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJtLZub6QmMQ%2FFQIoAkMzLBdAIzMzMzMzMxgSZGFzaF9iYXNlbGluZV8xX3YxEQB16AcA&_nc_rid=6db9543118&oe=5FEFC5F4&oh=685cc6d30cfd21a7a745d5c6d4393da8
/Users/shixuesen/OneDrive/Pictures/instagram/changchinlan/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/88529011_199748728488080_7408382982578071018_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=108&_nc_ohc=leZisEyPHo0AX9LtZeJ&vs=17853968750439855_777288529&_nc_vs=HBksFQAYJEdIUFlSZ1dRZ0FHZ3E3VUFBT3BsblVRUzNjOW1idXFIQUFBQRUAAsgBABUAGCRHUHVMQndqVGt6TXlSVUFEQUJKVlNrUi1QeEkxYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbewd%2BM4IW3PxUCKAJDMywXQCO7ZFocrAgYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=6db95e4826&oe=5FEF7241&oh=464a4e69e522da81a8404b21d2a612e1
/Users/shixuesen/OneDrive/Pictures/instagram/changchinlan/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/55047507_810466092849516_197127065771927064_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=100&_nc_ohc=3ITT5TSuYS4AX-xW50O&vs=18152336725111666_105359142&_nc_vs=HBksFQAYJEdGUDFSd05zR1pGWEhlRUNBQmhtODVvRlZyd0NidXFIQUFBQRUAAsgBABUAGCRHT0p4OWdkcWY5d0lUOWtBQUVVYTcyRXJaY05RYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbknK6Bh92%2BQBUCKAJDMywXQBt2yLQ5WBAYEmRhc2hfYmFzZWxpbmVfMl92MREAdegHAA%3D%3D&_nc_rid=6db95d1c34&oe=5FEFCE21&oh=3696758f1eeea8c0616f6eceb8bed393
/Users/shixuesen/OneDrive/Pictures/instagram/changchinlan/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/73753697_328700331559311_1114562879664762750_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=103&_nc_ohc=JtQFRUmRtSMAX_-zd2T&vs=17946967879407755_368290081&_nc_vs=HBkcFQAYJEdHRmtaUVNQQ1lDQzh5b0JBSDR2UWFvSXVYY1BidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJpbNhamCq%2BE%2FFQIoAkMzLBdAGAAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16AcA&_nc_rid=6db95a949e&oe=5FEFDE35&oh=923bef1b74ce2dc154bef135c01a08ba
/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/135735011_2863799217283277_8332193970760446616_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=105&_nc_ohc=8Jp6mRuQW9UAX8SsVwI&se=7&tp=1&oh=08e677df7a7aeae63922bbb1ea5e4c65&oe=60286D43&ig_cache_key=MjQ4MjAxMjY5ODgyNzM2Mzg0Ng%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/s480x480/135872363_1073770903139932_1119313925337510543_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=UVnxhiT9kb8AX-TZei9&tp=1&oh=5d9d098c2fc9a82959bba8dce5248f16&oe=60262344&ig_cache_key=MjQ4MjAxMjM2OTgwMDk4MDQzNA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/jeonjisu92/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/136423432_1613515078827698_470283759236175545_n.jpg?_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=qC8gLgfbxsQAX9YQqIi&se=7&tp=1&oh=d0aac96e33991114302b526c9c7480ec&oe=6028C011&ig_cache_key=MjQ4MjAxMjY5ODc5MzgzNTMxNA%3D%3D.2
/Users/shixuesen/OneDrive/Pictures/instagram/bivi_0420/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/75199470_1335438713487052_4443306569644757309_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=104&_nc_ohc=Pfk7Ks337usAX9CHA80&vs=17865513176274293_2229106847&_nc_vs=HBkcFQAYJEdPNXpld1RNLWlJT2s3NEVBRDNSMVktSXk2azlidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJurUorPdpbw%2FFQIoAkMzLBdAFqn752yLRBgSZGFzaF9iYXNlbGluZV8yX3YxEQB16AcA&_nc_rid=bd4ca03fb8&oe=6002B9F9&oh=3b83efdeb3bfdb6e4a3d143d049a9fd9
/Users/shixuesen/OneDrive/Pictures/instagram/janie.lin/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/73401427_752847975347389_1185833149754134277_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=101&_nc_ohc=BL7DhcPq1U8AX_EZWna&vs=17907857668618875_836936642&_nc_vs=HBkcFQAYJEdGTUVZQVM5OUNNVXRxd0NBQVZQX29YMzdIUVFidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJvasstzAxs8%2FFQIoAkMzLBdAFAAAAAAAABgSZGFzaF9iYXNlbGluZV8xX3YxEQB16AcA&_nc_rid=0165dd4ea4&oe=6003AE0A&oh=edb0217f8c9f734f33794fe1c1fbe72e

Loading…
Cancel
Save