diff --git a/.idea/php.xml b/.idea/php.xml
index 9303ec8..3e60f53 100644
--- a/.idea/php.xml
+++ b/.idea/php.xml
@@ -166,6 +166,9 @@
+
+
+
diff --git a/app/Console/Commands/BiliVideoCode.php b/app/Console/Commands/BiliVideoCode.php
index 16ed9ed..eeecaa7 100644
--- a/app/Console/Commands/BiliVideoCode.php
+++ b/app/Console/Commands/BiliVideoCode.php
@@ -54,10 +54,10 @@ class BiliVideoCode extends Command
// $bilibili->queryDBCollectionList();
// exit;
- $bilibili->queryForVideoParts();
- $bilibili->compareAndDownloadUpVideos();
+// $bilibili->queryForVideoParts();
+ $bilibili->compareAndDownloadUpVideos(true);
// exit;
- $bilibili->compareAndDownloadCollectionVideos();
+ $bilibili->compareAndDownloadCollectionVideos(true);
// $bilibili->queryCollectionList();
// $bilibili->compareAndDownloadNewVideos();
// $bilibili->queryLocalUpVideoList();
diff --git a/app/Console/Commands/HandBrakeCommand.php b/app/Console/Commands/HandBrakeCommand.php
index 41ecfff..186f1a2 100644
--- a/app/Console/Commands/HandBrakeCommand.php
+++ b/app/Console/Commands/HandBrakeCommand.php
@@ -41,9 +41,9 @@ class HandBrakeCommand extends Command
{
//
$path = $this->argument("path");
- echo $path;
// $service = new HandBrakeService();
$service = new ReplaceCompressedVideoService();
+// $service->checkFileInfo("!⚠前方危险⚠!迷人的反派角色出没!【aespa】【black mamba】 P1 【横屏】.mp4");exit;
$service->processDir(trim($path));
// $service->processUnCompleteDir();
}
diff --git a/app/Console/Commands/MediaReplaceAndCompress.php b/app/Console/Commands/MediaReplaceAndCompress.php
new file mode 100644
index 0000000..e50d402
--- /dev/null
+++ b/app/Console/Commands/MediaReplaceAndCompress.php
@@ -0,0 +1,46 @@
+argument("path");
+ $service = new ReplaceCompressedMediaService();
+ $service->processDir(trim($path));
+ //
+ }
+}
diff --git a/app/Console/Commands/RenameTest.php b/app/Console/Commands/RenameTest.php
index c4c5371..db356dd 100644
--- a/app/Console/Commands/RenameTest.php
+++ b/app/Console/Commands/RenameTest.php
@@ -12,7 +12,7 @@ class RenameTest extends Command
*
* @var string
*/
- protected $signature = 'rename:test';
+ protected $signature = 'rename:test {path} {prefix}';
/**
* The console command description.
@@ -39,8 +39,12 @@ class RenameTest extends Command
public function handle()
{
//
+ $path = $this->argument("path");
+ $prefix = $this->argument("prefix");
$rename = new RenameService();
// $rename->rename("/Volumes/WD/tmp/写真图/猫九", "猫九-");
+ $rename->rename($path, $prefix);
+ return;
$rename->rename("/Volumes/Backup/images/写真/pcBack/3/", "");
// $rename->rename();
// $rename->mvFiles("/Users/shixuesen/Documents/tmp/秀人旗下《MFStar模范学院》套图及视频写真-TLoB/视频/");
diff --git a/app/Console/Commands/ReplaceBlog.php b/app/Console/Commands/ReplaceBlog.php
new file mode 100644
index 0000000..a55242f
--- /dev/null
+++ b/app/Console/Commands/ReplaceBlog.php
@@ -0,0 +1,45 @@
+replaceFrontMatter("/Users/shixuesen/workspace/dev/src/myHugoBlog/content/posts");
+ }
+}
diff --git a/app/Services/BilibiliServiceV2.php b/app/Services/BilibiliServiceV2.php
index bc64ab3..3820609 100644
--- a/app/Services/BilibiliServiceV2.php
+++ b/app/Services/BilibiliServiceV2.php
@@ -947,4 +947,10 @@ done ' );
usleep(10);
}
}
+
+ public function searchVideoFiles($filename)
+ {
+ $list = BilibiliVideos::where("title", "like", "%". trim($filename) ."%" )->get();
+ dump($list);
+ }
}
diff --git a/app/Services/ReplaceBlogService.php b/app/Services/ReplaceBlogService.php
new file mode 100644
index 0000000..1c2a499
--- /dev/null
+++ b/app/Services/ReplaceBlogService.php
@@ -0,0 +1,37 @@
+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;
+ }
+ }
+
+
+ }
+}
diff --git a/app/Services/ReplaceCompressedMediaService.php b/app/Services/ReplaceCompressedMediaService.php
new file mode 100644
index 0000000..912057a
--- /dev/null
+++ b/app/Services/ReplaceCompressedMediaService.php
@@ -0,0 +1,120 @@
+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];
+ }
+
+}
diff --git a/app/Services/ReplaceCompressedVideoService.php b/app/Services/ReplaceCompressedVideoService.php
index 986eb43..e8eb9e2 100644
--- a/app/Services/ReplaceCompressedVideoService.php
+++ b/app/Services/ReplaceCompressedVideoService.php
@@ -9,6 +9,12 @@ use Mhor\MediaInfo\MediaInfo;
class ReplaceCompressedVideoService
{
+ private $bili;
+ public function __construct()
+ {
+ $this->bili = new BilibiliServiceV2();
+ }
+
public function handleVideos($dir = "/Users/shixuesen/Documents/tmp/柚木/2017/泡泡条纹袜/")
{
$files = scandir($dir);
@@ -58,15 +64,19 @@ class ReplaceCompressedVideoService
public function processDir($baseDir = "/Volumes/WD/tmp/bilibili/aoa")
{
$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") {
continue;
}
$subDir = implode("/", [$baseDir, $file]);
$isDir = is_dir($subDir);
if ($isDir) {
- $this->processDir($subDir);
+// $this->processDir($subDir);
} else {
+ dump("[all count] is $count, [current index] is $index");
$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]);
+ }
+
+
}
diff --git a/composer.json b/composer.json
index 780b1fd..13a4d00 100644
--- a/composer.json
+++ b/composer.json
@@ -25,6 +25,7 @@
"mgp25/instagram-php": "dev-master",
"mhor/php-mediainfo": "^4.1",
"microsoft/microsoft-graph": "^1.6",
+ "mnapoli/front-yaml": "^1.8",
"monolog/monolog": "^1.24",
"netresearch/jsonmapper": "^1.6",
"norkunas/youtube-dl-php": "^1.4",
@@ -32,6 +33,7 @@
"ps/image-optimizer": "^2.0",
"qcloud/cos-sdk-v5": ">=1.0",
"raiym/instagram-php-scraper": "^0.8.31",
+ "spatie/yaml-front-matter": "^2.0",
"symfony/finder": "^4.4",
"tinify/tinify": "^1.5"
},
diff --git a/composer.lock b/composer.lock
index 9c506b7..d325dcb 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": "c1e5ebef565e5b9357e36df1deab2b66",
+ "content-hash": "7dcd4159bc96ec62d11f8ee396e25a1b",
"packages": [
{
"name": "barryvdh/laravel-ide-helper",
@@ -4009,6 +4009,51 @@
},
"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",
"version": "1.26.0",
@@ -6583,6 +6628,65 @@
},
"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",
"version": "v6.2.4",
@@ -6905,6 +7009,79 @@
],
"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",
"version": "v4.4.18",
@@ -9003,6 +9180,87 @@
],
"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",
"version": "v8.0.4",
diff --git a/fail.log b/fail.log
index a456fc7..df41a0d 100644
--- a/fail.log
+++ b/fail.log
@@ -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/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/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