Browse Source

add blog code

feature/new_bilibili_and_instagram_sxs20191126
shixuesen 4 years ago
parent
commit
8cae822d9d
13 changed files with 552 additions and 8 deletions
  1. +3
    -0
      .idea/php.xml
  2. +3
    -3
      app/Console/Commands/BiliVideoCode.php
  3. +1
    -1
      app/Console/Commands/HandBrakeCommand.php
  4. +46
    -0
      app/Console/Commands/MediaReplaceAndCompress.php
  5. +5
    -1
      app/Console/Commands/RenameTest.php
  6. +45
    -0
      app/Console/Commands/ReplaceBlog.php
  7. +6
    -0
      app/Services/BilibiliServiceV2.php
  8. +37
    -0
      app/Services/ReplaceBlogService.php
  9. +120
    -0
      app/Services/ReplaceCompressedMediaService.php
  10. +24
    -2
      app/Services/ReplaceCompressedVideoService.php
  11. +2
    -0
      composer.json
  12. +259
    -1
      composer.lock
  13. +1
    -0
      fail.log

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

@ -166,6 +166,9 @@
<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" /> <path value="$PROJECT_DIR$/vendor/symfony/http-client-contracts" />
<path value="$PROJECT_DIR$/vendor/ps/image-optimizer" /> <path value="$PROJECT_DIR$/vendor/ps/image-optimizer" />
<path value="$PROJECT_DIR$/vendor/mnapoli/front-yaml" />
<path value="$PROJECT_DIR$/vendor/symfony/yaml" />
<path value="$PROJECT_DIR$/vendor/spatie/yaml-front-matter" />
</include_path> </include_path>
</component> </component>
<component name="PhpProjectSharedConfiguration" php_language_level="7.1" /> <component name="PhpProjectSharedConfiguration" php_language_level="7.1" />


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

@ -54,10 +54,10 @@ class BiliVideoCode extends Command
// $bilibili->queryDBCollectionList(); // $bilibili->queryDBCollectionList();
// exit; // exit;
$bilibili->queryForVideoParts();
$bilibili->compareAndDownloadUpVideos();
// $bilibili->queryForVideoParts();
$bilibili->compareAndDownloadUpVideos(true);
// exit; // exit;
$bilibili->compareAndDownloadCollectionVideos();
$bilibili->compareAndDownloadCollectionVideos(true);
// $bilibili->queryCollectionList(); // $bilibili->queryCollectionList();
// $bilibili->compareAndDownloadNewVideos(); // $bilibili->compareAndDownloadNewVideos();
// $bilibili->queryLocalUpVideoList(); // $bilibili->queryLocalUpVideoList();


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

@ -41,9 +41,9 @@ class HandBrakeCommand extends Command
{ {
// //
$path = $this->argument("path"); $path = $this->argument("path");
echo $path;
// $service = new HandBrakeService(); // $service = new HandBrakeService();
$service = new ReplaceCompressedVideoService(); $service = new ReplaceCompressedVideoService();
// $service->checkFileInfo("!⚠前方危险⚠!迷人的反派角色出没!【aespa】【black mamba】 P1 【横屏】.mp4");exit;
$service->processDir(trim($path)); $service->processDir(trim($path));
// $service->processUnCompleteDir(); // $service->processUnCompleteDir();
} }


+ 46
- 0
app/Console/Commands/MediaReplaceAndCompress.php View File

@ -0,0 +1,46 @@
<?php
namespace App\Console\Commands;
use App\Services\ReplaceCompressedMediaService;
use Illuminate\Console\Command;
class MediaReplaceAndCompress extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'media:compress {path}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
$path = $this->argument("path");
$service = new ReplaceCompressedMediaService();
$service->processDir(trim($path));
//
}
}

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

@ -12,7 +12,7 @@ class RenameTest extends Command
* *
* @var string * @var string
*/ */
protected $signature = 'rename:test';
protected $signature = 'rename:test {path} {prefix}';
/** /**
* The console command description. * The console command description.
@ -39,8 +39,12 @@ class RenameTest extends Command
public function handle() public function handle()
{ {
// //
$path = $this->argument("path");
$prefix = $this->argument("prefix");
$rename = new RenameService(); $rename = new RenameService();
// $rename->rename("/Volumes/WD/tmp/写真图/猫九", "猫九-"); // $rename->rename("/Volumes/WD/tmp/写真图/猫九", "猫九-");
$rename->rename($path, $prefix);
return;
$rename->rename("/Volumes/Backup/images/写真/pcBack/3/", ""); $rename->rename("/Volumes/Backup/images/写真/pcBack/3/", "");
// $rename->rename(); // $rename->rename();
// $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/"); // $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/");


+ 45
- 0
app/Console/Commands/ReplaceBlog.php View File

@ -0,0 +1,45 @@
<?php
namespace App\Console\Commands;
use App\Services\ReplaceBlogService;
use Illuminate\Console\Command;
class ReplaceBlog extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'replace:blog';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Command description';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function handle()
{
//
$service = new ReplaceBlogService();
$service->replaceFrontMatter("/Users/shixuesen/workspace/dev/src/myHugoBlog/content/posts");
}
}

+ 6
- 0
app/Services/BilibiliServiceV2.php View File

@ -947,4 +947,10 @@ done ' );
usleep(10); usleep(10);
} }
} }
public function searchVideoFiles($filename)
{
$list = BilibiliVideos::where("title", "like", "%". trim($filename) ."%" )->get();
dump($list);
}
} }

+ 37
- 0
app/Services/ReplaceBlogService.php View File

@ -0,0 +1,37 @@
<?php
namespace App\Services;
use Mni\FrontYAML\Parser;
use Spatie\YamlFrontMatter\YamlFrontMatter;
class ReplaceBlogService {
public function replaceFrontMatter($path = "")
{
$parser = new Parser();
if (is_dir($path)) {
$files = scandir($path);
foreach ($files as $file) {
if ($file == "." || $file == ".." | $file == ".DS_Store") {
continue;
}
$object = YamlFrontMatter::parse(file_get_contents($path . "/" . $file));
dump($object->matter());
dump($object->matter('title')); // => 'Example';
// dump($object->body()); // => 'Lorem ipsum.'
dump($object->title); // => 'Example';
// $document = $parser->parse($path . "/" . $file);
// $yaml = $document->getYAML();
// dump($yaml);
// $html = $document->getContent();
// dump($html);
exit;
}
}
}
}

+ 120
- 0
app/Services/ReplaceCompressedMediaService.php View File

@ -0,0 +1,120 @@
<?php
namespace App\Services;
use ImageOptimizer\OptimizerFactory;
use Mhor\MediaInfo\MediaInfo;
use Illuminate\Support\Facades\Redis;
class ReplaceCompressedMediaService {
private $factory;
private $optimizer;
public function __construct()
{
$this->factory = new OptimizerFactory([
"output_filepath_pattern" => "%basename%/%filename%-new%ext%",
"ignore_errors" => false,
"jpegoptim_options" => array('-m85', '-S20%', '--strip-all', '--all-progressive'),
// "jpegtran_options" => array('-m85', '-S30', '-optimize', '-progressive')
]);
$this->optimizer = $this->factory->get("jpegoptim");
}
public function processDir($baseDir = "/Volumes/WD/tmp/bilibili/aoa")
{
$files = scandir($baseDir);
foreach ($files as $file) {
if ($file == "." || $file == ".." || $file == ".DS_Store") {
continue;
}
$subDir = implode("/", [$baseDir, $file]);
$isDir = is_dir($subDir);
if ($isDir) {
$this->processDir($subDir);
} else {
$this->processFiles($subDir);
}
}
}
public function processFiles($pathFile)
{
$mime = mime_content_type($pathFile);
// dump("file type", [$mime, $pathFile]);exit;
// continue;
if (strstr($mime, "video/")) {
$this->processVideo($pathFile);
} elseif (strstr($mime, "image/")) {
$this->processImage($pathFile);
}
}
public function processVideo($pathFile) {
if (is_file($pathFile)) {
$mediaInfo = new MediaInfo();
$mediaInfo->setConfig('use_oldxml_mediainfo_output_format', true);
$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);
}
}
}
}
public function processImage($pathFile) {
$this->optimizer->optimize($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];
}
}

+ 24
- 2
app/Services/ReplaceCompressedVideoService.php View File

@ -9,6 +9,12 @@ use Mhor\MediaInfo\MediaInfo;
class ReplaceCompressedVideoService class ReplaceCompressedVideoService
{ {
private $bili;
public function __construct()
{
$this->bili = new BilibiliServiceV2();
}
public function handleVideos($dir = "/Users/shixuesen/Documents/tmp/柚木/2017/泡泡条纹袜/") public function handleVideos($dir = "/Users/shixuesen/Documents/tmp/柚木/2017/泡泡条纹袜/")
{ {
$files = scandir($dir); $files = scandir($dir);
@ -58,15 +64,19 @@ class ReplaceCompressedVideoService
public function processDir($baseDir = "/Volumes/WD/tmp/bilibili/aoa") public function processDir($baseDir = "/Volumes/WD/tmp/bilibili/aoa")
{ {
$files = scandir($baseDir); $files = scandir($baseDir);
foreach ($files as $file) {
$files = array_slice($files, 3035);
$count = count($files);
dump("all count is $count");
foreach ($files as $index => $file) {
if ($file == "." || $file == ".." || $file == ".DS_Store") { if ($file == "." || $file == ".." || $file == ".DS_Store") {
continue; continue;
} }
$subDir = implode("/", [$baseDir, $file]); $subDir = implode("/", [$baseDir, $file]);
$isDir = is_dir($subDir); $isDir = is_dir($subDir);
if ($isDir) { if ($isDir) {
$this->processDir($subDir);
// $this->processDir($subDir);
} else { } else {
dump("[all count] is $count, [current index] is $index");
$this->processVideo($subDir); $this->processVideo($subDir);
} }
} }
@ -201,4 +211,16 @@ class ReplaceCompressedVideoService
} }
} }
public function checkFileInfo($pathFile)
{
preg_match_all("#([\S|\s]+)P\d+#", $pathFile, $match);
if (count($match) > 1 && count($match[1]) > 0) {
$this->bili->searchVideoFiles($match[1][0]);
}
// dump($match[1][0]);
}
} }

+ 2
- 0
composer.json View File

@ -25,6 +25,7 @@
"mgp25/instagram-php": "dev-master", "mgp25/instagram-php": "dev-master",
"mhor/php-mediainfo": "^4.1", "mhor/php-mediainfo": "^4.1",
"microsoft/microsoft-graph": "^1.6", "microsoft/microsoft-graph": "^1.6",
"mnapoli/front-yaml": "^1.8",
"monolog/monolog": "^1.24", "monolog/monolog": "^1.24",
"netresearch/jsonmapper": "^1.6", "netresearch/jsonmapper": "^1.6",
"norkunas/youtube-dl-php": "^1.4", "norkunas/youtube-dl-php": "^1.4",
@ -32,6 +33,7 @@
"ps/image-optimizer": "^2.0", "ps/image-optimizer": "^2.0",
"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",
"spatie/yaml-front-matter": "^2.0",
"symfony/finder": "^4.4", "symfony/finder": "^4.4",
"tinify/tinify": "^1.5" "tinify/tinify": "^1.5"
}, },


+ 259
- 1
composer.lock View File

@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "c1e5ebef565e5b9357e36df1deab2b66",
"content-hash": "7dcd4159bc96ec62d11f8ee396e25a1b",
"packages": [ "packages": [
{ {
"name": "barryvdh/laravel-ide-helper", "name": "barryvdh/laravel-ide-helper",
@ -4009,6 +4009,51 @@
}, },
"time": "2020-12-08T23:43:32+00:00" "time": "2020-12-08T23:43:32+00:00"
}, },
{
"name": "mnapoli/front-yaml",
"version": "1.8.0",
"source": {
"type": "git",
"url": "https://github.com/mnapoli/FrontYAML.git",
"reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/mnapoli/FrontYAML/zipball/76baa8ca538e111bfe53ac49c6a512ec5ea2bf54",
"reference": "76baa8ca538e111bfe53ac49c6a512ec5ea2bf54",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"erusev/parsedown": "~1.0",
"php": ">=7.3",
"symfony/yaml": "~2.1|^3.0|^4.0|^5.0"
},
"require-dev": {
"league/commonmark": "~1.4",
"phpunit/phpunit": "^9.4"
},
"type": "library",
"autoload": {
"psr-4": {
"Mni\\FrontYAML\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"support": {
"issues": "https://github.com/mnapoli/FrontYAML/issues",
"source": "https://github.com/mnapoli/FrontYAML/tree/1.8.0"
},
"time": "2020-12-04T10:52:19+00:00"
},
{ {
"name": "monolog/monolog", "name": "monolog/monolog",
"version": "1.26.0", "version": "1.26.0",
@ -6583,6 +6628,65 @@
}, },
"time": "2020-07-07T18:42:57+00:00" "time": "2020-07-07T18:42:57+00:00"
}, },
{
"name": "spatie/yaml-front-matter",
"version": "2.0.5",
"source": {
"type": "git",
"url": "https://github.com/spatie/yaml-front-matter.git",
"reference": "efb5170a92216b8d2f40874301db8eb51b8e73cc"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/spatie/yaml-front-matter/zipball/efb5170a92216b8d2f40874301db8eb51b8e73cc",
"reference": "efb5170a92216b8d2f40874301db8eb51b8e73cc",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=7.0",
"symfony/yaml": "^3.0|^4.0|^5.0"
},
"require-dev": {
"phpunit/phpunit": "^6.5"
},
"type": "library",
"autoload": {
"psr-4": {
"Spatie\\YamlFrontMatter\\": "src"
}
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Sebastian De Deyne",
"email": "sebastian@spatie.be",
"homepage": "https://spatie.be",
"role": "Developer"
}
],
"description": "A to the point yaml front matter parser",
"homepage": "https://github.com/sebastiandedeyne/yaml-front-matter",
"keywords": [
"front matter",
"jekyll",
"spatie",
"yaml"
],
"support": {
"issues": "https://github.com/spatie/yaml-front-matter/issues",
"source": "https://github.com/spatie/yaml-front-matter/tree/master"
},
"time": "2019-12-02T20:50:50+00:00"
},
{ {
"name": "swiftmailer/swiftmailer", "name": "swiftmailer/swiftmailer",
"version": "v6.2.4", "version": "v6.2.4",
@ -6905,6 +7009,79 @@
], ],
"time": "2020-12-10T16:34:26+00:00" "time": "2020-12-10T16:34:26+00:00"
}, },
{
"name": "symfony/deprecation-contracts",
"version": "v2.4.0",
"source": {
"type": "git",
"url": "https://github.com/symfony/deprecation-contracts.git",
"reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/deprecation-contracts/zipball/5f38c8804a9e97d23e0c8d63341088cd8a22d627",
"reference": "5f38c8804a9e97d23e0c8d63341088cd8a22d627",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=7.1"
},
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.4-dev"
},
"thanks": {
"name": "symfony/contracts",
"url": "https://github.com/symfony/contracts"
}
},
"autoload": {
"files": [
"function.php"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Nicolas Grekas",
"email": "p@tchwork.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "A generic function and convention to trigger deprecation notices",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/deprecation-contracts/tree/v2.4.0"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-03-23T23:28:01+00:00"
},
{ {
"name": "symfony/dom-crawler", "name": "symfony/dom-crawler",
"version": "v4.4.18", "version": "v4.4.18",
@ -9003,6 +9180,87 @@
], ],
"time": "2020-12-08T16:59:59+00:00" "time": "2020-12-08T16:59:59+00:00"
}, },
{
"name": "symfony/yaml",
"version": "v5.2.5",
"source": {
"type": "git",
"url": "https://github.com/symfony/yaml.git",
"reference": "298a08ddda623485208506fcee08817807a251dd"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/yaml/zipball/298a08ddda623485208506fcee08817807a251dd",
"reference": "298a08ddda623485208506fcee08817807a251dd",
"shasum": "",
"mirrors": [
{
"url": "https://mirrors.aliyun.com/composer/dists/%package%/%reference%.%type%",
"preferred": true
}
]
},
"require": {
"php": ">=7.2.5",
"symfony/deprecation-contracts": "^2.1",
"symfony/polyfill-ctype": "~1.8"
},
"conflict": {
"symfony/console": "<4.4"
},
"require-dev": {
"symfony/console": "^4.4|^5.0"
},
"suggest": {
"symfony/console": "For validating YAML files using the lint command"
},
"bin": [
"Resources/bin/yaml-lint"
],
"type": "library",
"autoload": {
"psr-4": {
"Symfony\\Component\\Yaml\\": ""
},
"exclude-from-classmap": [
"/Tests/"
]
},
"notification-url": "https://packagist.org/downloads/",
"license": [
"MIT"
],
"authors": [
{
"name": "Fabien Potencier",
"email": "fabien@symfony.com"
},
{
"name": "Symfony Community",
"homepage": "https://symfony.com/contributors"
}
],
"description": "Loads and dumps YAML files",
"homepage": "https://symfony.com",
"support": {
"source": "https://github.com/symfony/yaml/tree/v5.2.5"
},
"funding": [
{
"url": "https://symfony.com/sponsor",
"type": "custom"
},
{
"url": "https://github.com/fabpot",
"type": "github"
},
{
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
"type": "tidelift"
}
],
"time": "2021-03-06T07:59:01+00:00"
},
{ {
"name": "tightenco/collect", "name": "tightenco/collect",
"version": "v8.0.4", "version": "v8.0.4",


+ 1
- 0
fail.log View File

@ -1020,3 +1020,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/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/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 /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
/Users/shixuesen/OneDrive/Pictures/instagram/bivi_0420/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/74963866_2803615776546370_4938313936994023105_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=Joh1OfK2nVQAX9xVW53&edm=AOVtZ6oBAAAA&vs=17893525949035078_1378283097&_nc_vs=HBkcFQAYJEdKcmJkd1JDbm5LcTMtVUpBTUcyNDROY2FvaEVidXFIQUFBQRUAAsgBACgAGAAbAYgHdXNlX29pbAExFQAAJoyMwoulhMk%2FFQIoAkMzLBdAFbtkWhysCBgSZGFzaF9iYXNlbGluZV8xX3YxEQB16AcA&_nc_rid=a086d64b7d&ccb=7-4&oe=608B28BB&oh=b8298b616f2d5ccfb99724c1ee61ee8a&_nc_sid=bab638

Loading…
Cancel
Save