Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
Philipp Wolfer
funkwhale
Commits
85bc8d93
Unverified
Commit
85bc8d93
authored
May 04, 2020
by
Agate
💬
Browse files
Fix #1093: mimetype detection issue that broke transcoding on certain tracks
parent
c1e2f16d
Changes
4
Hide whitespace changes
Inline
Side-by-side
api/funkwhale_api/music/management/commands/fix_uploads.py
View file @
85bc8d93
...
...
@@ -16,20 +16,44 @@ class Command(BaseCommand):
default
=
False
,
help
=
"Do not execute anything"
,
)
parser
.
add_argument
(
"--mimetypes"
,
action
=
"store_true"
,
dest
=
"mimetypes"
,
default
=
True
,
help
=
"Check and fix mimetypes"
,
)
parser
.
add_argument
(
"--audio-data"
,
action
=
"store_true"
,
dest
=
"data"
,
default
=
False
,
help
=
"Check and fix bitrate and duration, can be really slow because it needs to access files"
,
)
parser
.
add_argument
(
"--size"
,
action
=
"store_true"
,
dest
=
"size"
,
default
=
False
,
help
=
"Check and fix file size, can be really slow because it needs to access files"
,
)
def
handle
(
self
,
*
args
,
**
options
):
if
options
[
"dry_run"
]:
self
.
stdout
.
write
(
"Dry-run on, will not commit anything"
)
self
.
fix_mimetypes
(
**
options
)
self
.
fix_file_data
(
**
options
)
self
.
fix_file_size
(
**
options
)
if
options
[
"mimetypes"
]:
self
.
fix_mimetypes
(
**
options
)
if
options
[
"data"
]:
self
.
fix_file_data
(
**
options
)
if
options
[
"size"
]:
self
.
fix_file_size
(
**
options
)
@
transaction
.
atomic
def
fix_mimetypes
(
self
,
dry_run
,
**
kwargs
):
self
.
stdout
.
write
(
"Fixing missing mimetypes..."
)
matching
=
models
.
Upload
.
objects
.
filter
(
source__startswith
=
"file://"
).
exclude
(
mimetyp
e__startswith
=
"
audio
/"
)
matching
=
models
.
Upload
.
objects
.
filter
(
Q
(
source__startswith
=
"file://"
)
|
Q
(
sourc
e__startswith
=
"
upload:/
/"
)
)
.
exclude
(
mimetype__startswith
=
"audio/"
)
self
.
stdout
.
write
(
"[mimetypes] {} entries found with bad or no mimetype"
.
format
(
matching
.
count
()
...
...
api/funkwhale_api/music/utils.py
View file @
85bc8d93
...
...
@@ -22,6 +22,8 @@ def guess_mimetype(f):
mt
,
_
=
mimetypes
.
guess_type
(
f
.
name
)
if
mt
:
t
=
mt
else
:
t
=
EXTENSION_TO_MIMETYPE
.
get
(
f
.
name
.
split
(
"."
)[
-
1
])
return
t
...
...
api/tests/music/test_views.py
View file @
85bc8d93
...
...
@@ -824,6 +824,7 @@ def test_user_can_create_draft_upload(
assert
upload
.
source
==
"upload://test"
assert
upload
.
import_reference
==
"test"
assert
upload
.
import_status
==
"draft"
assert
upload
.
mimetype
==
"audio/ogg"
assert
upload
.
track
is
None
m
.
assert_not_called
()
...
...
changes/changelog.d/1093.bugfix
0 → 100644
View file @
85bc8d93
Fixed mimetype detection issue that broke transcoding on some tracks (#1093). Run ``python manage.py fix_uploads --mimetypes`` to set proper mimetypes on existing uploads.
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment