use Cubist\Backpack\Magic\PageData;
use Cubist\Util\Files\Files;
use FFMpeg\FFProbe;
+use Illuminate\Support\Facades\Cache;
use SplFileInfo;
class FrontController extends Controller
'audio' => 'Podcast',
];
- $media=[];
+ $media = [];
$ffprobe = FFProbe::create();
foreach ($res['medialibrary']['assets'] as $a) {
/** @var $a \Cubist\Backpack\Magic\PageData */
- $file=$a->getMediaPathsByCollection($a->get('file_upload'))[0]??null;
- if(null===$file){
+ $file = $a->getMediaPathsByCollection($a->get('file_upload'))[0] ?? null;
+ if (null === $file) {
continue;
}
- $spf=new SplFileInfo($file);
- $ext=mb_strtolower($spf->getExtension());
- if(in_array($ext,['pdf','jpg','jpeg','gif','png'])){
+ $spf = new SplFileInfo($file);
+ $ext = mb_strtolower($spf->getExtension());
+ if (in_array($ext, ['pdf', 'jpg', 'jpeg', 'gif', 'png'])) {
continue;
}
- $map=['mp3'=>'audio','mp4'=>'video'];
- $type=$map[$ext]??$a->get('type');
-
- $media[$a['id']]=[
- 'id'=>$a->get('id'),
- 'type'=>$type,
- 'theme'=>$a->get('theme'),
- 'code'=>$a->get('code'),
- 'title'=>$a->get('title'),
- 'file'=>$a->getImageURLbyCollection($a->get('file_upload')),
- 'image'=>$a->getImageURLbyCollection($a->get('file_thumb'))??$a->getImageURLbyCollection($a->get('file_upload'),'poster'),
- 'duration'=>$ffprobe->format($file)->get('duration')
+ $map = ['mp3' => 'audio', 'mp4' => 'video'];
+ $type = $map[$ext] ?? $a->get('type');
+
+ $media[$a['id']] = [
+ 'id' => $a->get('id'),
+ 'type' => $type,
+ 'theme' => $a->get('theme'),
+ 'code' => $a->get('code'),
+ 'title' => $a->get('title'),
+ 'file' => $a->getImageURLbyCollection($a->get('file_upload')),
+ 'image' => $a->getImageURLbyCollection($a->get('file_thumb')) ?? $a->getImageURLbyCollection($a->get('file_upload'), 'poster'),
+ 'duration' => Cache::get('media_duration_' . Files::hashFileAttributes($file), function () use ($ffprobe, $file) {
+ return $ffprobe->format($file)->get('duration');
+ })
];
}
- $res['media']=$media;
+ $res['media'] = $media;
return $res;
}