Skip to content

Commit 5afe8da

Browse files
authored
Merge branch 'master' into remove-array-subset-test
2 parents e53f2e4 + 370c87a commit 5afe8da

File tree

2 files changed

+18
-7
lines changed

2 files changed

+18
-7
lines changed

app/Models/BeatmapsetArchive.php

Lines changed: 16 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -68,16 +68,27 @@ public static function fetch(Beatmapset $beatmapset): ?static
6868
}
6969
}
7070

71-
private static function convertAudioForPreview(string $audioFile, int $previewTime): ?string
71+
private static function convertAudioForPreview(string $audioFile, ?int $previewTime): ?string
7272
{
7373
$srcFile = tmpfile();
7474
fwrite($srcFile, $audioFile);
7575
$srcFilename = get_stream_filename($srcFile);
76+
$srcFilenameEscaped = escapeshellarg($srcFilename);
7677
$dstFile = tmpfile();
7778
$dstFilename = get_stream_filename($dstFile);
7879

7980
$duration = 10000;
80-
$previewTime = max($previewTime, 0);
81+
if ($previewTime === null || $previewTime < 0) {
82+
$srcDuration = (float) exec(implode(' ', [
83+
'timeout 10s',
84+
'ffprobe',
85+
'-loglevel quiet',
86+
"-i {$srcFilenameEscaped}",
87+
'-show_entries format=duration',
88+
'-of csv=p=0',
89+
]));
90+
$previewTime = 0.4 * $srcDuration * 100;
91+
}
8192

8293
$fadeInExtension = min($previewTime, 100);
8394
$fadeIn = $fadeInExtension + 100;
@@ -108,7 +119,7 @@ private static function convertAudioForPreview(string $audioFile, int $previewTi
108119
'-nostdin',
109120
"-ss {$previewTime}ms",
110121
"-t {$duration}ms",
111-
'-i '.escapeshellarg($srcFilename),
122+
"-i {$srcFilenameEscaped}",
112123
"-af {$filter}",
113124
'-map 0:a', // strip out non-audio streams
114125
'-map_metadata -1', // strip out metadata
@@ -176,10 +187,10 @@ public function generateAudioPreview(): ?string
176187
$previewTime = $parsedFile->previewTime;
177188
$audioFilename = $parsedFile->audioFilename;
178189

179-
if (isset($audioFilename, $previewTime)) {
190+
if (isset($audioFilename)) {
180191
$audioFile = $this->readFile($audioFilename);
181192

182-
if ($audioFile !== null) {
193+
if ($audioFile !== false) {
183194
return static::convertAudioForPreview($audioFile, $previewTime);
184195
}
185196
}

resources/js/core/user/user-preferences.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,8 @@ export default class UserPreferences {
5454
setUser(user?: CurrentUserJson) {
5555
this.user = user;
5656

57-
if (!this.updatingOptions) {
58-
this.current = user?.user_preferences ?? defaultUserPreferencesJson();
57+
if (user != null && !this.updatingOptions) {
58+
this.current = user.user_preferences ?? defaultUserPreferencesJson();
5959
this.updateStorage();
6060
}
6161
}

0 commit comments

Comments
 (0)