From 093f7ffb9d89a661c199f28e3a8449fb6c7fb0de Mon Sep 17 00:00:00 2001 From: Peter Deltchev <peter@deltchev.com> Date: Mon, 15 Feb 2016 12:16:04 -0800 Subject: [PATCH] Added ALAC upload support and improved the upload page. --- app/Commands/GenerateTrackFilesCommand.php | 1 + app/Commands/UploadTrackCommand.php | 18 ++++++------------ app/Library/PfmValidator.php | 4 ++++ public/templates/uploader/index.html | 6 ++++-- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/app/Commands/GenerateTrackFilesCommand.php b/app/Commands/GenerateTrackFilesCommand.php index d345f002..8663cfe2 100644 --- a/app/Commands/GenerateTrackFilesCommand.php +++ b/app/Commands/GenerateTrackFilesCommand.php @@ -51,6 +51,7 @@ class GenerateTrackFilesCommand extends CommandBase 'flac', 'pcm', 'adpcm', + 'alac' ]; public function __construct(Track $track, SplFileInfo $sourceFile, bool $autoPublish = false) diff --git a/app/Commands/UploadTrackCommand.php b/app/Commands/UploadTrackCommand.php index b50f0302..4e42c86a 100644 --- a/app/Commands/UploadTrackCommand.php +++ b/app/Commands/UploadTrackCommand.php @@ -112,8 +112,8 @@ class UploadTrackCommand extends CommandBase 'track' => 'required|' . ($this->_allowLossy - ? 'audio_format:flac,pcm,adpcm,aac,mp3,vorbis|' - : 'audio_format:flac,pcm,adpcm|') + ? 'audio_format:flac,alac,pcm,adpcm,aac,mp3,vorbis|' + : 'audio_format:flac,alac,pcm,adpcm|') . ($this->_allowShortTrack ? '' : 'min_duration:30|') . 'audio_channels:1,2', @@ -250,22 +250,16 @@ class UploadTrackCommand extends CommandBase // all tags read by getID3, including the cover art $allTags = $getId3->analyze($file->getPathname()); - // tags specific to a file format (ID3 or Atom), pre-normalization but with cover art removed - $rawTags = []; - - // normalized tags used by Pony.fm - $parsedTags = []; + // $rawTags => tags specific to a file format (ID3 or Atom), pre-normalization but with cover art removed + // $parsedTags => normalized tags used by Pony.fm if ($audioCodec === 'mp3') { list($parsedTags, $rawTags) = $this->getId3Tags($allTags); - } elseif (Str::startsWith($audioCodec, 'aac')) { + } elseif (Str::startsWith($audioCodec, ['aac', 'alac'])) { list($parsedTags, $rawTags) = $this->getAtomTags($allTags); - } elseif ($audioCodec === 'vorbis') { - list($parsedTags, $rawTags) = $this->getVorbisTags($allTags); - - } elseif ($audioCodec === 'flac') { + } elseif (in_array($audioCodec, ['vorbis', 'flac'])) { list($parsedTags, $rawTags) = $this->getVorbisTags($allTags); } elseif (Str::startsWith($audioCodec, ['pcm', 'adpcm'])) { diff --git a/app/Library/PfmValidator.php b/app/Library/PfmValidator.php index ecbc5fdc..9b4ce6db 100644 --- a/app/Library/PfmValidator.php +++ b/app/Library/PfmValidator.php @@ -64,6 +64,10 @@ class PfmValidator extends Illuminate\Validation\Validator return true; } + if (in_array('alac', $parameters) && Str::startsWith($codecString, 'alac')) { + return true; + } + return in_array($file->getAudioCodec(), $parameters); } diff --git a/public/templates/uploader/index.html b/public/templates/uploader/index.html index b965c87b..65fc7159 100644 --- a/public/templates/uploader/index.html +++ b/public/templates/uploader/index.html @@ -3,11 +3,13 @@ <p>Drop files here to begin your upload!</p> </div> - <p>FLAC, WAV, and AIFF files will be accepted. Each file can be up to 200 MB in size.</p> + <p>Our preferred formats are FLAC, WAV, AIFF, and ALAC (because lossless audio is awesome) but we accept a few others, too. Each file can be up to 200 MB in size.</p> <p>Tracks must be a <strong>minimum</strong> of 30 seconds long.</p> - <p>Please note that you need to publish your tracks after uploading them before they will become available to the public.</p> + <p>Note that you'll need to publish your tracks after uploading them before they'll become available to the public.</p> + + <p>Contact <a href="mailto:feld0@pony.fm">feld0@pony.fm</a> if you run into any issues!</p> <ul class="uploads"> <li ng-repeat="upload in data.queue track by $index" ng-class="{'uploading': upload.isUploading, 'has-error': upload.error != null, 'is-processing': upload.isProcessing || upload.progress >= 100}" ng-animate="'upload-queue'">