39 lines
1.3 KiB
Diff
39 lines
1.3 KiB
Diff
adapted from https://github.com/jarun/buku/pull/605
|
|
--- a/buku
|
|
+++ b/buku
|
|
@@ -19,10 +19,10 @@
|
|
|
|
import argparse
|
|
import calendar
|
|
-import cgi
|
|
import codecs
|
|
import collections
|
|
import contextlib
|
|
+import email.message
|
|
import json
|
|
import locale
|
|
import logging
|
|
@@ -3811,15 +3811,17 @@
|
|
if soup.meta and soup.meta.get('charset') is not None:
|
|
charset = soup.meta.get('charset')
|
|
elif 'content-type' in resp.headers:
|
|
- _, params = cgi.parse_header(resp.headers['content-type'])
|
|
- if params.get('charset') is not None:
|
|
- charset = params.get('charset')
|
|
+ m = email.message.Message()
|
|
+ m['content-type'] = resp.headers['content-type']
|
|
+ if m.get_param('charset') is not None:
|
|
+ charset = m.get_param('charset')
|
|
|
|
if not charset and soup:
|
|
meta_tag = soup.find('meta', attrs={'http-equiv': 'Content-Type'})
|
|
if meta_tag:
|
|
- _, params = cgi.parse_header(meta_tag.attrs['content'])
|
|
- charset = params.get('charset', charset)
|
|
+ m = email.message.Message()
|
|
+ m['content'] = meta_tag.attrs['content']
|
|
+ charset = m.get_param('charset', charset)
|
|
|
|
if charset:
|
|
LOGDBG('charset: %s', charset)
|