get(); foreach ($meme_medias as $key => $meme_media) { dump('Processing '.$key + 1 .'/'.$meme_medias->count().': '.$meme_media->name); $meme_keywords_response = OpenAI::getMemeKeywords($meme_media->name, $meme_media->description); $meme_keywords_output = json_decode(OpenAI::getOpenAIOutput($meme_keywords_response)); $meme_media->description = $meme_keywords_output->description; $meme_media->action_keywords = $meme_keywords_output->action_keywords; $meme_media->emotion_keywords = $meme_keywords_output->emotion_keywords; $meme_media->misc_keywords = $meme_keywords_output->misc_keywords; $meme_media->save(); } } public static function addMemeKeywordsToTags() { $meme_medias = MemeMedia::all(); foreach ($meme_medias as $key => $meme_media) { $meme_media->attachTags($meme_media->action_keywords, 'meme_media_action'); $meme_media->attachTags($meme_media->emotion_keywords, 'meme_media_emotion'); $meme_media->attachTags($meme_media->misc_keywords, 'meme_media_misc'); } } public static function populateDurations() { $meme_medias_with_no_duration = self::getMemeMediasWithNoDuration(); $total = $meme_medias_with_no_duration->count(); foreach ($meme_medias_with_no_duration as $key => $meme_media) { $current = $key + 1; dump("Processing {$current}/{$total}: {$meme_media->webm_url}"); $meme_media->duration = self::getDurationUsingFfmpeg($meme_media); $meme_media->save(); } } public static function getDurationUsingFfmpeg($meme_media) { $duration_milliseconds = FFMpeg::openUrl($meme_media->webm_url)->getDurationInMiliseconds(); $duration_seconds = ($duration_milliseconds / 1000); return $duration_seconds; } private static function getMemeMediasWithNoDuration() { return MemeMedia::whereNull('duration')->get(); } }