kopia lustrzana https://github.com/dgtlmoon/changedetection.io
Favicon type detection - support for autodetecting mimetype for better reliability (#3308)
rodzic
af5d0b6963
commit
daee4c5c17
|
@ -18,6 +18,7 @@ RUN \
|
||||||
libxslt-dev \
|
libxslt-dev \
|
||||||
openssl-dev \
|
openssl-dev \
|
||||||
python3-dev \
|
python3-dev \
|
||||||
|
file \
|
||||||
zip \
|
zip \
|
||||||
zlib-dev && \
|
zlib-dev && \
|
||||||
apk add --update --no-cache \
|
apk add --update --no-cache \
|
||||||
|
|
|
@ -54,6 +54,8 @@ RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||||
locales \
|
locales \
|
||||||
# For pdftohtml
|
# For pdftohtml
|
||||||
poppler-utils \
|
poppler-utils \
|
||||||
|
# favicon type detection and other uses
|
||||||
|
file \
|
||||||
zlib1g \
|
zlib1g \
|
||||||
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
&& apt-get clean && rm -rf /var/lib/apt/lists/*
|
||||||
|
|
||||||
|
|
|
@ -214,8 +214,17 @@ class WatchFavicon(Resource):
|
||||||
|
|
||||||
favicon_filename = watch.get_favicon_filename()
|
favicon_filename = watch.get_favicon_filename()
|
||||||
if favicon_filename:
|
if favicon_filename:
|
||||||
import mimetypes
|
try:
|
||||||
mime, encoding = mimetypes.guess_type(favicon_filename)
|
import magic
|
||||||
|
mime = magic.from_file(
|
||||||
|
os.path.join(watch.watch_data_dir, favicon_filename),
|
||||||
|
mime=True
|
||||||
|
)
|
||||||
|
except ImportError:
|
||||||
|
# Fallback, no python-magic
|
||||||
|
import mimetypes
|
||||||
|
mime, encoding = mimetypes.guess_type(favicon_filename)
|
||||||
|
|
||||||
response = make_response(send_from_directory(watch.watch_data_dir, favicon_filename))
|
response = make_response(send_from_directory(watch.watch_data_dir, favicon_filename))
|
||||||
response.headers['Content-type'] = mime
|
response.headers['Content-type'] = mime
|
||||||
response.headers['Cache-Control'] = 'max-age=300, must-revalidate' # Cache for 5 minutes, then revalidate
|
response.headers['Cache-Control'] = 'max-age=300, must-revalidate' # Cache for 5 minutes, then revalidate
|
||||||
|
|
|
@ -438,8 +438,17 @@ def changedetection_app(config=None, datastore_o=None):
|
||||||
|
|
||||||
favicon_filename = watch.get_favicon_filename()
|
favicon_filename = watch.get_favicon_filename()
|
||||||
if favicon_filename:
|
if favicon_filename:
|
||||||
import mimetypes
|
try:
|
||||||
mime, encoding = mimetypes.guess_type(favicon_filename)
|
import magic
|
||||||
|
mime = magic.from_file(
|
||||||
|
os.path.join(watch.watch_data_dir, favicon_filename),
|
||||||
|
mime=True
|
||||||
|
)
|
||||||
|
except ImportError:
|
||||||
|
# Fallback, no python-magic
|
||||||
|
import mimetypes
|
||||||
|
mime, encoding = mimetypes.guess_type(favicon_filename)
|
||||||
|
|
||||||
response = make_response(send_from_directory(watch.watch_data_dir, favicon_filename))
|
response = make_response(send_from_directory(watch.watch_data_dir, favicon_filename))
|
||||||
response.headers['Content-type'] = mime
|
response.headers['Content-type'] = mime
|
||||||
response.headers['Cache-Control'] = 'max-age=300, must-revalidate' # Cache for 5 minutes, then revalidate
|
response.headers['Cache-Control'] = 'max-age=300, must-revalidate' # Cache for 5 minutes, then revalidate
|
||||||
|
|
|
@ -117,6 +117,9 @@ price-parser
|
||||||
|
|
||||||
# flask_socket_io - incorrect package name, already have flask-socketio above
|
# flask_socket_io - incorrect package name, already have flask-socketio above
|
||||||
|
|
||||||
|
# So far for detecting correct favicon type, but for other things in the future
|
||||||
|
python-magic
|
||||||
|
|
||||||
# Scheduler - Windows seemed to miss a lot of default timezone info (even "UTC" !)
|
# Scheduler - Windows seemed to miss a lot of default timezone info (even "UTC" !)
|
||||||
tzdata
|
tzdata
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue