option('file'); if (!file_exists($file)) { $this->error("File $file doesn't exist. Check the filename provided, and try again."); exit(1); } $scraper = new TikTokScraper(); try { $videos = json_decode(file_get_contents($file)); } catch (\Exception $e) { $this->error("There was an error parsing video information: {$e->getMessage()}"); exit(1); } foreach($videos as $video) { $scraper->get("https://www.tiktok.com/@{$video->user}/video/{$video->video}"); try { $videoData = $scraper->extractVideoData(); $videoTikTok = TikTokVideo::where(['video_id' => $video->video])->first(); if (empty($videoTikTok)) { $videoTikTok = new TikTokVideo; } $videoTikTok->video_id = $video->video; $videoTikTok->username = $video->user ?? null; $videoTikTok->url = @array_shift($videoData->itemInfos->video->urls) ?? null; $videoTikTok->duration = $videoData->itemInfos->video->videoMeta->duration ?? 0; $videoTikTok->uploaded = Carbon::createFromTimestamp($videoData->itemInfos->createTime) ->toDateTimeString() ?? null; $videoTikTok->description = $videoData->itemInfos->text ?? null; $videoTikTok->plays = $videoData->itemInfos->playCount ?? 0; $videoTikTok->shares = $videoData->itemInfos->shareCount ?? 0; $videoTikTok->likes = $videoData->itemInfos->diggCount ?? 0; $videoTikTok->comments = $videoData->itemInfos->commentCount ?? 0; $videoTikTok->save(); } catch (\Exception $e) { Log::error("Error extracting video data: {$e->getMessage()}"); } } } }