diff --git a/Web/Models/Entities/Audio.php b/Web/Models/Entities/Audio.php index cdcc73e3..4c11f0a7 100644 --- a/Web/Models/Entities/Audio.php +++ b/Web/Models/Entities/Audio.php @@ -14,7 +14,6 @@ class Audio extends Media { protected $tableName = "audios"; protected $fileExtension = "mpd"; - // protected $fileExtension = "mp3"; # Taken from winamp :D const genres = [ @@ -63,7 +62,10 @@ class Audio extends Media throw new \DomainException("$filename does not contain any audio streams"); $vstreams = Shell::ffprobe("-i", $filename, "-show_streams", "-select_streams v", "-loglevel error")->execute($error); - if(!empty($vstreams) && !ctype_space($vstreams)) + + # check if audio has cover (attached_pic) + preg_match("%attached_pic=([0-1])%", $vstreams, $hasCover); + if(!empty($vstreams) && !ctype_space($vstreams) && ((int)($hasCover[1]) !== 1)) throw new \DomainException("$filename is a video"); $durations = []; diff --git a/Web/Models/shell/processAudio.ps1 b/Web/Models/shell/processAudio.ps1 index dd1db9ad..5404857a 100644 --- a/Web/Models/shell/processAudio.ps1 +++ b/Web/Models/shell/processAudio.ps1 @@ -23,7 +23,7 @@ Set-Location -Path $temp Move-Item $filename $audioFile ffmpeg -i $audioFile -f dash -encryption_scheme cenc-aes-ctr -encryption_key $key ` - -encryption_kid $keyID -map 0 -c:a aac -ar 44100 -seg_duration $seg ` + -encryption_kid $keyID -map 0:a -c:a aac -ar 44100 -seg_duration $seg ` -use_timeline 1 -use_template 1 -init_seg_name ($fileHash + '_fragments/0_0.$ext$') ` -media_seg_name ($fileHash + '_fragments/chunk$Number%06d$_$RepresentationID$.$ext$') -adaptation_sets 'id=0,streams=a' ` "$fileHash.mpd" diff --git a/Web/Presenters/AudioPresenter.php b/Web/Presenters/AudioPresenter.php index 454b0605..0811ecd2 100644 --- a/Web/Presenters/AudioPresenter.php +++ b/Web/Presenters/AudioPresenter.php @@ -236,10 +236,9 @@ final class AudioPresenter extends OpenVKPresenter $audio = $this->audios->get($id); if ($audio && !$audio->isDeleted() && !$audio->isWithdrawn()) { - $audio->listen($this->user->identity); + $listen = $audio->listen($this->user->identity); + $this->returnJson(["success" => $listen]); } - - $this->returnJson(["response" => true]); } } @@ -458,8 +457,6 @@ final class AudioPresenter extends OpenVKPresenter function renderApiGetContext() { - $this->assertUserLoggedIn(); - if ($_SERVER["REQUEST_METHOD"] !== "POST") { header("HTTP/1.1 405 Method Not Allowed"); exit(""); diff --git a/Web/Presenters/templates/Audio/Upload.xml b/Web/Presenters/templates/Audio/Upload.xml index d1628d55..51dee7c0 100644 --- a/Web/Presenters/templates/Audio/Upload.xml +++ b/Web/Presenters/templates/Audio/Upload.xml @@ -149,5 +149,26 @@ document.querySelector("#audio_upload > form").submit(); }) + + $(document).on("dragover drop", (e) => { + e.preventDefault() + + return false; + }) + + $(".container_gray").on("drop", (e) => { + e.originalEvent.dataTransfer.dropEffect = 'move'; + e.preventDefault() + + let file = e.originalEvent.dataTransfer.files[0] + + if(!file.type.startsWith('audio/')) { + MessageBox(tr("error"), tr("only_audios_accepted", escapeHtml(file.name)), [tr("ok")], [() => Function.noop]) + return; + } + + document.getElementById("audio_input").files = e.originalEvent.dataTransfer.files + u("#audio_input").trigger("change") + }) {/block} diff --git a/Web/Presenters/templates/Audio/bigplayer.xml b/Web/Presenters/templates/Audio/bigplayer.xml index 3a22a841..a18132b3 100644 --- a/Web/Presenters/templates/Audio/bigplayer.xml +++ b/Web/Presenters/templates/Audio/bigplayer.xml @@ -17,7 +17,8 @@
00:00 - -00:00 + / + -00:00
diff --git a/Web/Presenters/templates/Audio/player.xml b/Web/Presenters/templates/Audio/player.xml index 558a1aea..da226dab 100644 --- a/Web/Presenters/templates/Audio/player.xml +++ b/Web/Presenters/templates/Audio/player.xml @@ -3,8 +3,8 @@ {php $id = $audio->getId() . rand(0, 1000)} {php $isWithdrawn = $audio->isWithdrawn()} -{php $editable = $audio->canBeModifiedBy($thisUser)} -
+{php $editable = isset($thisUser) && $audio->canBeModifiedBy($thisUser)} +