From 3b332db7ddc84a42458fa0e248373a9a74ef908f Mon Sep 17 00:00:00 2001 From: shixuesen Date: Wed, 18 Aug 2021 13:16:44 +0800 Subject: [PATCH] add try --- app/BodyStat.php | 38 ++++++++ app/Http/Controllers/BodyStatController.php | 85 +++++++++++++++++ app/Services/FfmpegService.php | 23 +++-- app/Services/XiaomiDataService.php | 92 ++++++++++++------- database/factories/BodyStatFactory.php | 9 ++ .../2021_02_21_203243_add_mid_and_bv_id.php | 6 +- ...21_08_12_194844_create_body_stat_table.php | 48 ++++++++++ fail.log | 6 ++ 8 files changed, 262 insertions(+), 45 deletions(-) create mode 100644 app/BodyStat.php create mode 100644 app/Http/Controllers/BodyStatController.php create mode 100644 database/factories/BodyStatFactory.php create mode 100644 database/migrations/2021_08_12_194844_create_body_stat_table.php diff --git a/app/BodyStat.php b/app/BodyStat.php new file mode 100644 index 0000000..c904665 --- /dev/null +++ b/app/BodyStat.php @@ -0,0 +1,38 @@ +relations)) { + return parent::getAttribute($key); + } else { + return parent::getAttribute(Str::snake($key)); + } + } + + /** + * Set a given attribute on the model. + * + * @param string $key + * @param mixed $value + * @return mixed + */ + public function setAttribute($key, $value) + { + return parent::setAttribute(Str::snake($key), $value); + } +} diff --git a/app/Http/Controllers/BodyStatController.php b/app/Http/Controllers/BodyStatController.php new file mode 100644 index 0000000..63b7508 --- /dev/null +++ b/app/Http/Controllers/BodyStatController.php @@ -0,0 +1,85 @@ +setConfig('use_oldxml_mediainfo_output_format', true); if (strstr($mime, "video/") || strstr($mime, "application/octet-stream")) { if (is_file($pathFile)) { + if (Redis::get("stopFlag") != null) { + Log::info("stopFlag is set"); + dump("stopFlag is set"); + exit; + } if (!$this->checkFileSize($pathFile)) { return; } @@ -123,9 +128,6 @@ class FfmpegService if (Redis::sismember("unneed", $fileInfo["filename"])) { return; } - if (Redis::get("stopFlag") != null) { - return; - } $targetFile = $fileInfo["dirname"] . '/' .$fileInfo["filename"] . '-x265'. '.' . $fileInfo["extension"]; if (is_file($targetFile)) { unlink($pathFile); @@ -250,11 +252,16 @@ class FfmpegService public function checkFileEncodeType($file): bool { - $codecName = $this->ffprobe - ->streams($file) // extracts streams informations - ->videos() // filters video streams - ->first() // returns the first video stream - ->get('codec_name'); + try { + $codecName = $this->ffprobe + ->streams($file) // extracts streams informations + ->videos() // filters video streams + ->first() // returns the first video stream + ->get('codec_name'); + } catch (\Exception $e) { + Log::error("ffprobe has error just return false for test, exception: ". $e->getMessage()); + return false; + } return trim($codecName) == "hevc"; } diff --git a/app/Services/XiaomiDataService.php b/app/Services/XiaomiDataService.php index 97a67d9..7c0c173 100644 --- a/app/Services/XiaomiDataService.php +++ b/app/Services/XiaomiDataService.php @@ -3,46 +3,70 @@ namespace App\Services; +use App\BodyStat; +use Illuminate\Database\Eloquent\Model; + class XiaomiDataService { public function fetchData() { # code... - $curl = curl_init(); + while (true) { + curl_setopt_array($curl, array( + CURLOPT_URL => 'https://api-mifit-cn2.huami.com/users/1003389185/members/-1/weightRecords?r=AAF4B906-DC99-4026-A146-978ACE0CABE0&t=1628760878387&limit=1000&toTime=1578441809', + CURLOPT_RETURNTRANSFER => true, + CURLOPT_ENCODING => '', + CURLOPT_MAXREDIRS => 10, + CURLOPT_TIMEOUT => 0, + CURLOPT_FOLLOWLOCATION => true, + CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, + CURLOPT_CUSTOMREQUEST => 'GET', + CURLOPT_HTTPHEADER => array( + 'Host: api-mifit-cn2.huami.com', + 'country: CN', + 'v: 2.0', + 'hm-privacy-ceip: true', + 'accept: */*', + 'appname: com.xiaomi.hm.health', + 'channel: appstore', + 'apptoken: NQVBQFJyQktGHlp6QkpbRl5LRl5qek4uXAQABAAAAAFfuN66ifbzCboB2ZH0DQx220t-vmAesadpY516w6jCvmgtevcO3dRgzBCrdXgE5Q3Ts6krWtaQd9uiZuTWa_sfFvwxQcubyHmZCUZns10TLymRIL1nIfLfplagK_YyTU0Io4j9SSBZPx5-kn8MntQhiq7MnOW0AZuvg7GKs94qd', + 'accept-language: zh-Hans-CN;q=1, en-CN;q=0.9', + 'x-request-id: 49EACAE1-63FB-4035-BF1E-CCED0579FD14', + 'cv: 159_5.2.0', + 'lang: zh_CN', + 'timezone: Asia/Shanghai', + 'appplatform: ios_phone', + 'hm-privacy-diagnostics: false', + 'user-agent: MiFit/5.2.0 (iPhone; iOS 14.7; Scale/3.00)' + ), + )); + + $response = curl_exec($curl); + + curl_close($curl); + $result = json_decode($response, true); + $items = $result["items"]; +// dump($response); + foreach ($items as $item) { + # code... + $entity = $item["summary"]; + $entity["generatedTime"] = date("Y-m-d H:i:s", $item["generatedTime"]); + dump($entity); + $body = new BodyStat(); + foreach ($entity as $key => $value) { + $body->setAttribute($key, $value); + } + $body->save(); + } + // dump($items); + $next = $result["next"]; + dump($next); + exit; + } + + + - curl_setopt_array($curl, array( - CURLOPT_URL => 'https://api-mifit-cn2.huami.com/users/1003389185/members/-1/weightRecords?r=AAF4B906-DC99-4026-A146-978ACE0CABE0&t=1627438226827&limit=100&toTime=1627438226', - CURLOPT_RETURNTRANSFER => true, - CURLOPT_ENCODING => '', - CURLOPT_MAXREDIRS => 10, - CURLOPT_TIMEOUT => 0, - CURLOPT_FOLLOWLOCATION => true, - CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, - CURLOPT_CUSTOMREQUEST => 'GET', - CURLOPT_HTTPHEADER => array( - 'Host: api-mifit-cn2.huami.com', - 'country: CN', - 'v: 2.0', - 'hm-privacy-ceip: true', - 'accept: */*', - 'appname: com.xiaomi.hm.health', - 'channel: appstore', - 'apptoken: NQVBQFJyQktGHlp6QkpbRl5LRl5qek4uXAQABAAAAAFfuN66ifbzCboB2ZH0DQx220t-vmAesadpY516w6jCvmgtevcO3dRgzBCrdXgE5Q3Ts6krWtaQd9uiZuTWa_sfFvwxQcubyHmZCUZns10TLymRIL1nIfLfplagK_YyTU0Io4j9SSBZPx5-kn8MntQhiq7MnOW0AZuvg7GKs94qd', - 'accept-language: zh-Hans-CN;q=1, en-CN;q=0.9', - 'x-request-id: 49EACAE1-63FB-4035-BF1E-CCED0579FD14', - 'cv: 159_5.2.0', - 'lang: zh_CN', - 'timezone: Asia/Shanghai', - 'appplatform: ios_phone', - 'hm-privacy-diagnostics: false', - 'user-agent: MiFit/5.2.0 (iPhone; iOS 14.7; Scale/3.00)' - ), - )); - - $response = curl_exec($curl); - - curl_close($curl); - echo $response; } } diff --git a/database/factories/BodyStatFactory.php b/database/factories/BodyStatFactory.php new file mode 100644 index 0000000..14ce7f9 --- /dev/null +++ b/database/factories/BodyStatFactory.php @@ -0,0 +1,9 @@ +define(App\BodyStat::class, function (Faker $faker) { + return [ + // + ]; +}); diff --git a/database/migrations/2021_02_21_203243_add_mid_and_bv_id.php b/database/migrations/2021_02_21_203243_add_mid_and_bv_id.php index 531b0e5..e181c83 100644 --- a/database/migrations/2021_02_21_203243_add_mid_and_bv_id.php +++ b/database/migrations/2021_02_21_203243_add_mid_and_bv_id.php @@ -15,9 +15,9 @@ class AddMidAndBvId extends Migration { Schema::table('bilibili_videos', function (Blueprint $table) { // - $table->bigInteger("bv_id")->comment("B站 video 的 bv id")->after("aid"); - $table->bigInteger("up_mid")->comment("up的唯一识别 id")->after("from_up_name"); - $table->bigInteger("collection_mid")->comment("收藏夹的唯一识别 id")->after("up_mid"); +// $table->bigInteger("bv_id")->comment("B站 video 的 bv id")->after("aid"); +// $table->bigInteger("up_mid")->comment("up的唯一识别 id")->after("from_up_name"); +// $table->bigInteger("collection_mid")->comment("收藏夹的唯一识别 id")->after("up_mid"); }); } diff --git a/database/migrations/2021_08_12_194844_create_body_stat_table.php b/database/migrations/2021_08_12_194844_create_body_stat_table.php new file mode 100644 index 0000000..4d7d62b --- /dev/null +++ b/database/migrations/2021_08_12_194844_create_body_stat_table.php @@ -0,0 +1,48 @@ +increments('id'); + $table->decimal("weight", 8, 2)->comment("体重"); + $table->integer("height")->comment("身高"); + $table->decimal("bmi", 10, 6)->comment("bmi 指数"); + $table->decimal("fat_rate", 8, 2)->comment("体脂率"); + $table->decimal("body_water_rate", 8, 2)->comment("水分"); + $table->decimal("bone_mass", 8, 2)->comment("骨量"); + $table->decimal("metabolism", 8, 2)->comment("基础代谢"); + $table->decimal("muscle_rate", 8, 2)->comment("肌肉量公斤"); + $table->decimal("muscle_age", 8, 2)->comment("身体年龄"); + $table->decimal("protein_ratio", 8, 2)->comment("蛋白质百分比"); + $table->decimal("stand_body_weight", 8, 2)->comment("标准体重"); + $table->decimal("visceral_fat", 8, 2)->comment("内脏脂肪"); + $table->decimal("impedance", 8, 2)->comment("阻抗"); + $table->integer("body_score")->comment("身体得分"); + $table->integer("body_style")->comment("身体类型"); + $table->decimal("one_foot_measure_time", 8, 2)->comment("单脚测量"); + $table->date("generated_time")->comment("生成时间"); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::dropIfExists('body_stats'); + } +} diff --git a/fail.log b/fail.log index a076ba8..613eba6 100644 --- a/fail.log +++ b/fail.log @@ -2346,3 +2346,9 @@ /Users/shixuesen/OneDrive/Pictures/instagram/boram__jj/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/219995571_858755778366933_7550269812270085291_n.jpg?se=8&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=109&_nc_ohc=Q05NqUjpUswAX_v-nNJ&edm=ABmJApABAAAA&ccb=7-4&oh=7ba4a7a2fb4d88064dcbe388b842268d&oe=60FD65BB&_nc_sid=6136e7&ig_cache_key=MjYyMTYzMTEwNDAzNjEyMDIyNA%3D%3D.2-ccb7-4 /Users/shixuesen/OneDrive/Pictures/instagram/cherry_quahst/ https://scontent-lax3-1.cdninstagram.com/v/t50.2886-16/102164338_3691909180909102_7071632899479615322_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5zdG9yeS5kZWZhdWx0In0&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=110&_nc_ohc=N-KlidUdk9sAX-4mwKv&edm=AOVtZ6oBAAAA&vs=17850720977615741_505480917&_nc_vs=HBksFQAYJEdITG5GZ1l1WmtXWHhSME5BRnEzY3F1bmZDTmlidXFIQUFBQRUAAsgBABUAGCRHRWxmRlEzZzJnMmxiOFVEQVB2MFF1SVE4ZVJtYnBrd0FBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMRUAACbc3JK1nIzVPxUCKAJDMywXQBqp%2B%2Bdsi0QYEmRhc2hfYmFzZWxpbmVfMV92MREAdegHAA%3D%3D&_nc_rid=3c64f455f7&ccb=7-4&oe=60F9C9AA&oh=144a0e7d6c672d1cf781eaf7413e8783&_nc_sid=bab638 /Users/shixuesen/OneDrive/Pictures/instagram/amandacerny/ https://scontent-yyz1-1.cdninstagram.com/v/t50.2886-16/10000000_381969723494260_5874728704091838583_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5iYXNlbGluZSJ9&_nc_ht=scontent-yyz1-1.cdninstagram.com&_nc_cat=104&_nc_ohc=d28rfaOrDA4AX8ciMTr&edm=ABmJApABAAAA&vs=1004224630417123_1632355961&_nc_vs=HBksFQAYJEdJQ1dtQUIwRDY5Qlpsc0JBSGRZTDNlaE9vZFJicV9FQUFBRhUAAsgBABUAGCRHTjhpelExLW9kd3VRa3NFQUE2Y20yczlXTjhlYnFfRUFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACaO7Jz6o578PxUCKAJDMywXQEH3bItDlYEYEmRhc2hfYmFzZWxpbmVfMl92MREAdf4HAA%3D%3D&_nc_rid=9d297e3f3a&ccb=7-4&oe=61148D24&oh=d4cd94214132bb851ba6614ee74cb99a&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/ayreen/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/10000000_533745771210255_8860073035508637594_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5iYXNlbGluZSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=103&_nc_ohc=n49W-dcvz_YAX9vjgkm&edm=ABmJApABAAAA&vs=3031179077167575_1269050111&_nc_vs=HBksFQAYJEdJQ1dtQUFQNWhkZmNPVUJBSnBmZ3ExN1RmVjZicV9FQUFBRhUAAsgBABUAGCRHSGpEQ0E3RkVfeFZmTXdBQU9jSVRwaW9sNlZlYnFfRUFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACa0%2FLjgn4PqQBUCKAJDMywXQE4EOVgQYk4YEmRhc2hfYmFzZWxpbmVfMV92MREAdf4HAA%3D%3D&_nc_rid=babe8a0afb&ccb=7-4&oe=6118754E&oh=a083eda307a5ebfb0e0f3c2c5413eed7&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/ayreen/ https://scontent-lax3-2.cdninstagram.com/v/t50.2886-16/232824930_303233414893585_8726561731302020654_n.mp4?efg=eyJ2ZW5jb2RlX3RhZyI6InZ0c192b2RfdXJsZ2VuLjcyMC5jbGlwcy5iYXNlbGluZSJ9&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=lJHfMl9eTN8AX-OFOGI&edm=ABmJApABAAAA&vs=518215056152747_1862383523&_nc_vs=HBksFQAYJEdHS2c0QTBSa1BvSHloTUJBQzVXeHNpb19ScDVicV9FQUFBRhUAAsgBABUAGCRHQWk4MFExdXpwbEgwSFlEQUdRR0FpUnI1XzFDYnFfRUFBQUYVAgLIAQAoABgAGwGIB3VzZV9vaWwBMBUAACa%2B6s%2F3rMjKPxUCKAJDMywXQEtmZmZmZmYYEmRhc2hfYmFzZWxpbmVfMV92MREAdf4HAA%3D%3D&_nc_rid=d04c9b89df&ccb=7-4&oe=61183877&oh=3c5fb3eee9e1629ffb816ee78423096f&_nc_sid=6136e7 +/Users/shixuesen/OneDrive/Pictures/instagram/eom_sangmi/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/p480x480/235253348_174001348134204_5211307610421402890_n.jpg?_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=100&_nc_ohc=DsfTDyjO4PsAX-v2c2N&edm=ABmJApABAAAA&ccb=7-4&oh=a7a633d0f8f18a4033d0047a2302e803&oe=611D5989&_nc_sid=6136e7&ig_cache_key=MjYzNjQ4NzE3ODQ4Nzk5MzQ5OA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/limerencem_/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/233733125_844481339777785_8458315680149863276_n.jpg?se=8&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=101&_nc_ohc=qux3Nb2xqYAAX_czzbM&edm=ABmJApABAAAA&ccb=7-4&oh=b547d9083f9f4924ab5969bfe9dd2fbc&oe=611CCC15&_nc_sid=6136e7&ig_cache_key=MjYzNDEyNDg4NjYzOTcyMDQ3MQ%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/irishuo_/ https://scontent-lax3-2.cdninstagram.com/v/t51.2885-15/e35/234915016_348172043632740_6452054389988192918_n.jpg?se=7&_nc_ht=scontent-lax3-2.cdninstagram.com&_nc_cat=100&_nc_ohc=xJdWmQe6bGEAX-ZhbU3&edm=ABmJApABAAAA&ccb=7-4&oh=818e62814cbb057d503d644e9f8601f9&oe=611DB548&_nc_sid=6136e7&ig_cache_key=MjYzNzg4MTQxMjEyMTc2OTU1NA%3D%3D.2-ccb7-4 +/Users/shixuesen/OneDrive/Pictures/instagram/irishuo_/ https://scontent-lax3-1.cdninstagram.com/v/t51.2885-15/e35/234803390_274836711112214_787656283753125631_n.jpg?se=7&_nc_ht=scontent-lax3-1.cdninstagram.com&_nc_cat=102&_nc_ohc=N6xdmUPSAaUAX_u2_Rs&edm=ABmJApABAAAA&ccb=7-4&oh=b4d625fb3ba6213f58c63780fdb5140d&oe=611C806D&_nc_sid=6136e7&ig_cache_key=MjYzNzE0NDAwMzE4ODY0NTE5Mw%3D%3D.2-ccb7-4