mirror of
https://github.com/beetbox/beets.git
synced 2025-12-30 12:32:33 +01:00
Merge pull request #2827 from waweic/web-unicode
Fix unicode bug in web plugin
This commit is contained in:
commit
9f945a7c55
2 changed files with 20 additions and 1 deletions
|
|
@ -24,6 +24,7 @@ import flask
|
|||
from flask import g
|
||||
from werkzeug.routing import BaseConverter, PathConverter
|
||||
import os
|
||||
from unidecode import unidecode
|
||||
import json
|
||||
import base64
|
||||
|
||||
|
|
@ -225,10 +226,24 @@ def item_file(item_id):
|
|||
else:
|
||||
item_path = util.py3_path(item.path)
|
||||
|
||||
try:
|
||||
unicode_item_path = util.text_string(item.path)
|
||||
except (UnicodeDecodeError, UnicodeEncodeError):
|
||||
unicode_item_path = util.displayable_path(item.path)
|
||||
|
||||
base_filename = os.path.basename(unicode_item_path)
|
||||
try:
|
||||
# Imitate http.server behaviour
|
||||
base_filename.encode("latin-1", "strict")
|
||||
except UnicodeEncodeError:
|
||||
safe_filename = unidecode(base_filename)
|
||||
else:
|
||||
safe_filename = base_filename
|
||||
|
||||
response = flask.send_file(
|
||||
item_path,
|
||||
as_attachment=True,
|
||||
attachment_filename=os.path.basename(util.py3_path(item.path)),
|
||||
attachment_filename=safe_filename
|
||||
)
|
||||
response.headers['Content-Length'] = os.path.getsize(item_path)
|
||||
return response
|
||||
|
|
|
|||
|
|
@ -75,6 +75,10 @@ Fixes:
|
|||
album art would not work and throw an exception. It now works as expected.
|
||||
Additionally, the server will now return a 404 response when the album id
|
||||
is unknown, instead of a 500 response and a thrown exception. :bug:`2823`
|
||||
* :doc:`/plugins/web`: In a python 3 enviroment, the server would throw an
|
||||
exception if non latin-1 characters where in the File name.
|
||||
It now checks if non latin-1 characters are in the filename and changes
|
||||
them to ascii-characters in that case :bug:`2815`
|
||||
|
||||
For developers:
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue