Merge pull request #150 from jfmcbrayer/mime-magic

Use python-magic to determine mime types from contents
This commit is contained in:
Lorenz Diener 2018-11-26 11:24:35 +01:00 cometido por GitHub
commit ae9640e95d
No se encontró ninguna clave conocida en la base de datos para esta firma
ID de clave GPG: 4AEE18F83AFDEB23
S'han modificat 3 arxius amb 21 adicions i 5 eliminacions

4
.gitignore vendido
Veure arxiu

@ -91,4 +91,6 @@ ENV/
# Secret files (for credentials used in testing)
*.secret
pytooter_clientcred.txt
pytooter_usercred.txt
pytooter_usercred.txtPipfile
Pipfile.lock
Pipfile

Veure arxiu

@ -31,6 +31,11 @@ try:
except ImportError:
from urlparse import urlparse
try:
import magic
except ImportError:
magic = None
###
# Version check functions, including decorator and parser
###
@ -1491,7 +1496,7 @@ class Mastodon:
# Load avatar, if specified
if not avatar is None:
if avatar_mime_type is None and os.path.isfile(avatar):
avatar_mime_type = mimetypes.guess_type(avatar)[0]
avatar_mime_type = guess_type(avatar)
avatar = open(avatar, 'rb')
if avatar_mime_type is None:
@ -1500,7 +1505,7 @@ class Mastodon:
# Load header, if specified
if not header is None:
if header_mime_type is None and os.path.isfile(header):
header_mime_type = mimetypes.guess_type(header)[0]
header_mime_type = guess_type(header)
header = open(header, 'rb')
if header_mime_type is None:
@ -1720,7 +1725,7 @@ class Mastodon:
status_post to attach the media file to a toot.
"""
if mime_type is None and os.path.isfile(media_file):
mime_type = mimetypes.guess_type(media_file)[0]
mime_type = guess_type(media_file)
media_file = open(media_file, 'rb')
elif mime_type and os.path.isfile(media_file):
media_file = open(media_file, 'rb')
@ -2531,3 +2536,11 @@ class MastodonRatelimitError(MastodonError):
class MastodonMalformedEventError(MastodonError):
"""Raised when the server-sent event stream is malformed"""
pass
def guess_type(media_file):
mime_type = None
if magic:
mime_type = magic.from_file(media_file, mime=True)
else:
mime_type = mimetypes.guess_type(media_file)[0]
return mime_type

Veure arxiu

@ -14,6 +14,7 @@ setup(name='Mastodon.py',
'python-dateutil',
'six',
'pytz',
'python-magic',
'decorator>=4.0.0',
'http_ece>=1.0.5',
'cryptography>=1.6.0'