Example #1
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     $requestedSong = $this->GetUploadSongData($request->get('song_title'), $request->get('band_name'));
     $returnMsg = "";
     if ($requestedSong != null && $requestedSong->is_accepted == 1) {
         $returnMsg = "Congratulation, you've picked a song that has been approved already by Organic Radio";
         return redirect()->route('suggest')->with('success', $returnMsg);
     } else {
         if ($requestedSong != null && $requestedSong->is_accepted == 0) {
             $returnMsg = "Song already suggested but got rejected";
             return redirect()->route('suggest')->with('error', $returnMsg);
         } else {
             if ($requestedSong != null && $requestedSong->is_accepted == null) {
                 $returnMsg = "Song already suggested but is pending acceptance";
                 return redirect()->route('suggest')->with('error', $returnMsg);
             }
         }
     }
     if ($request->file('song_file') != null) {
         $file = $request->file('song_file');
     }
     $music_style = new MusicStyle();
     $musicPath = "";
     if (isset($file) && $file->isValid()) {
         if ($file->getClientOriginalExtension() != "mp3") {
             return redirect()->route('suggest')->with('error', "Bad file extension!");
         }
         if (file_exists("medias/" . $file->getClientOriginalName())) {
             return redirect()->route('suggest')->with('error', "File already exist.");
         }
         $musicPath = $file->getClientOriginalName();
         $file->move("medias/", $file->getClientOriginalName());
     }
     $music = new Music();
     $music->title = $request->get('song_title');
     $music->band = $request->get('band_name');
     $music->style_id = $request->get('music_style') != "" ? $request->get('music_style') : null;
     $music->user_id = Auth::id();
     $music->path = $musicPath;
     $music->save();
     return redirect()->route('suggest')->with('success', "success");
 }
Example #2
0
 public static function UploadMusic($oriFilePath, $fileName, User $user, $diskName = null)
 {
     $fs = Storage::disk($diskName);
     $fileContent = $fs->get($oriFilePath);
     $mimeType = $fs->mimeType($oriFilePath);
     if (!str_is('audio/*', $mimeType) && !str_is('video/*', $mimeType)) {
         $fs->delete($oriFilePath);
         throw new RequestValidationException(RequestValidationException::FileIsNotMusic);
     }
     $fileModel = self::saveFileByFileContent($fileContent, $fileName, $mimeType, $user, $diskName);
     $fs->delete($oriFilePath);
     $getId3Result = self::analyzeFileByGetId3($fileModel);
     // 标签数据
     if ($getId3Result && isset($getId3Result['tags'])) {
         $types = ['quicktime', 'ape', 'id3v2', 'id3v1'];
         foreach ($types as $type) {
             if (!isset($getId3Result['tags'][$type])) {
                 continue;
             }
             $tag = $getId3Result['tags'][$type];
             $tag_title = implode(';', isset($tag['title']) ? $tag['title'] : []);
             $tag_artist = implode(';', isset($tag['artist']) ? $tag['artist'] : []);
             $tag_album = implode(';', isset($tag['album']) ? $tag['album'] : []);
             $tag_year = implode(';', isset($tag['creation_date']) ? $tag['creation_date'] : (isset($tag['year']) ? $tag['year'] : []));
             $tag_track = implode(';', isset($tag['track_number']) ? $tag['track_number'] : (isset($tag['track']) ? $tag['track'] : []));
             $tag_genre = implode(';', isset($tag['genre']) ? $tag['genre'] : []);
             //                $tag_comment      = implode(';', isset($tag['comment']) ? $tag['comment'] : []);
             $tag_album_artist = implode(';', isset($tag['album_artist']) ? $tag['album_artist'] : []);
             $tag_composer = implode(';', isset($tag['composer']) ? $tag['composer'] : []);
             //                $tag_disc_number  = implode(';', isset($tag['disc_number']) ? $tag['disc_number'] : []);
             break;
         }
     }
     // 封面图
     if ($getId3Result && isset($getId3Result['comments']) && isset($getId3Result['comments']['picture']) && isset($getId3Result['comments']['picture']['0']) && isset($getId3Result['comments']['picture']['0']['data'])) {
         $coverData = $getId3Result['comments']['picture']['0']['data'];
         $coverTempFile = FileManager::saveTempFileByFileContent($coverData, $user);
         //            $coverFileGetId3Result = self::analyzeFileByGetId3($coverTempFile);
         $coverFileName = sprintf('%s-cover-file', isset($tag_title) && $tag_title ? $tag_title : $fileName);
         $coverImage = self::UploadImage($coverTempFile->baseFile->path, $coverFileName, $user);
     }
     $music = new Music();
     $music->title = isset($tag_title) && $tag_title ? $tag_title : $fileModel->name;
     if (isset($tag_artist) && $tag_artist) {
         $music->artist = $tag_artist;
     } else {
         if (isset($tag_composer) && $tag_composer) {
             $music->artist = $tag_composer;
         } else {
             if (isset($tag_album_artist) && $tag_album_artist) {
                 $music->artist = $tag_album_artist;
             } else {
                 $music->artist = null;
             }
         }
     }
     $music->year = isset($tag_year) && $tag_year ? $tag_year : null;
     if (isset($tag_track) && $tag_track) {
         $tmp = explode('/', $tag_track);
         $trackNum = is_array($tmp) && sizeof($tmp) > 0 ? $tmp[0] : $tag_track;
         $music->track = $trackNum;
     }
     $music->genre = isset($tag_genre) && $tag_genre ? $tag_genre : null;
     $music->playtime = isset($getId3Result['playtime_seconds']) ? $getId3Result['playtime_seconds'] : null;
     $music->bitrate = isset($getId3Result['bitrate']) ? $getId3Result['bitrate'] : null;
     $music->album_title = isset($tag_album) && $tag_album ? $tag_album : null;
     $music->album_artist = isset($tag_album_artist) && $tag_album_artist ? $tag_album_artist : null;
     $music->tags = $getId3Result && isset($getId3Result['tags']) ? json_encode($getId3Result['tags']) : null;
     $music->file()->associate($fileModel);
     if (isset($coverImage) && $coverImage) {
         $music->coverImage()->associate($coverImage);
     }
     $music->save();
     return $music;
 }
Example #3
0
 protected function music_import_csv(Request $request)
 {
     $path = $request->path;
     $filename = $request->filename;
     $file = $path . '/' . $filename;
     $fp = fopen($file, 'r');
     $i = 0;
     // 定义空数组,方便下面使用
     $isUsed_arr = [];
     // 判断文件名是否有重复
     while ($arr = fgetcsv($fp)) {
         $isFree = self::isNoUsedFileName(mb_convert_encoding($arr[7], 'UTF-8', 'GB2312'));
         // 将重复的文件名放入一个数组中
         if (!$isFree) {
             $isUsed_arr[] = mb_convert_encoding($arr[7], 'UTF-8', 'GB2312');
         }
     }
     // 如果存在重复的文件名,则返回
     if (count($isUsed_arr) > 0) {
         $data['status'] = false;
         $data['errMsg'] = $isUsed_arr;
         return $data;
     }
     // 重置文件指针
     rewind($fp);
     while ($arr = fgetcsv($fp)) {
         $i++;
         if ($i == 1) {
             continue;
         }
         // 方便后面判断读取了几行
         $music = new Music();
         $music->name = mb_convert_encoding($arr[0], 'UTF-8', 'GB2312');
         // 查询乐曲id
         $instrument = mb_convert_encoding($arr[1], 'UTF-8', 'GB2312');
         $instrument_in_db = Instrument::where('name', '=', $instrument)->first();
         // 如果这个乐器不存在,则先创建
         if (empty($instrument_in_db)) {
             $new_instrument = new Instrument();
             $new_instrument->name = $instrument;
             $new_instrument->save();
             $music->instrument_id = $new_instrument->id;
         } else {
             $music->instrument_id = $instrument_in_db->id;
         }
         // 作曲人
         $music->composer = mb_convert_encoding($arr[2], 'UTF-8', 'GB2312');
         // 版本
         $music->version = mb_convert_encoding($arr[3], 'UTF-8', 'GB2312');
         // 出版社
         $press = mb_convert_encoding($arr[4], 'UTF-8', 'GB2312');
         $press_in_db = Press::where('name', $press)->first();
         // 如果这个出版社不存在,则先创建
         if (empty($press_in_db)) {
             $new_press = new Press();
             $new_press->name = $press;
             $new_press->save();
             $music->press_id = $new_press->id;
         } else {
             $music->press_id = $press_in_db->id;
         }
         // 主办单位
         $organizer = mb_convert_encoding($arr[5], 'UTF-8', 'GB2312');
         $organizer_in_db = Organizer::where('name', $organizer)->first();
         // 如果这个主办机构不存在,则先创建
         if (empty($organizer_in_db)) {
             $new_organizer = new Organizer();
             $new_organizer->name = $organizer;
             $new_organizer->save();
             $music->organizer_id = $new_organizer->id;
         } else {
             $music->organizer_id = $organizer_in_db->id;
         }
         // 操作人
         $music->operator = $request->user()->id;
         // 评论内容
         $note_content = mb_convert_encoding($arr[6], 'UTF-8', 'GB2312');
         if (!empty($note_content)) {
             $music->note_content = $note_content;
             $music->note_operator = $request->user()->id;
         }
         $music->filename = mb_convert_encoding($arr[7], 'UTF-8', 'GB2312');
         $result[] = $music->save();
     }
     if ($i == 0 || $i == 1 || in_array(false, $result)) {
         $data['status'] = false;
         $data['errMsg'] = '表格中没有有效数据';
     } else {
         $data['status'] = true;
     }
     return $data;
 }