Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Telegram notification fails with non-ASCII characters #4645

Closed
sharkykh opened this issue Jul 10, 2018 · 2 comments
Closed

Telegram notification fails with non-ASCII characters #4645

sharkykh opened this issue Jul 10, 2018 · 2 comments

Comments

@sharkykh
Copy link
Contributor

Describe the bug
During post processing it was attempting to send a Telegram "downloaded" notification for:
Westworld - 2x03 - Virtù e Fortuna.
Failed to encode the non-ASCII characters, and stopped the post-processing operation mid-way.

Medusa:

  • OS: Windows 7 x64
  • Branch: develop
  • Commit: 774143d

Logs:
The post-processing was triggered from API v1.

2018-07-11 00:55:37 DEBUG    TORNADO :: [7e4da69] 296762: Formatting pattern: %SN - %Sx03 - %EN - %QN -> Westworld - 2x03 - Virtù e Fortuna - 1080p WEB-DL
2018-07-11 00:55:37 DEBUG    TORNADO :: [7e4da69] Notification for NMJ scan update not enabled, skipping this notification
2018-07-11 00:55:37 DEBUG    TORNADO :: [7e4da69] Sending a Telegram message for Westworld - 2x03 - Virtù e Fortuna - 1080p WEB-DL
2018-07-11 00:55:37 DEBUG    TORNADO :: [7e4da69] Telegram in use with API KEY: **********
2018-07-11 00:55:37 ERROR    TORNADO :: [7e4da69] API :: ''
Traceback (most recent call last):
  File "C:\Medusa\medusa\server\api\v1\core.py", line 141, in get
    out_dict = _call_dispatcher(args, kwargs)
  File "C:\Medusa\medusa\server\api\v1\core.py", line 211, in call_dispatcher
    cur_out_dict = func(cur_args, cur_kwargs).run()  # call function and get response
  File "C:\Medusa\medusa\server\api\v1\core.py", line 1309, in run
    failed=self.failed, proc_type=self.type
  File "C:\Medusa\medusa\process_tv.py", line 145, in process
    ignore_subs=ignore_subs)
  File "C:\Medusa\medusa\process_tv.py", line 333, in process_files
    self.process_media(path, self.video_files, force, is_priority, ignore_subs)
  File "C:\Medusa\medusa\process_tv.py", line 554, in process_media
    self.result = processor.process()
  File "C:\Medusa\medusa\post_processor.py", line 1279, in process
    notifiers.notify_download(ep_obj._format_pattern('%SN - %Sx%0E - %EN - %QN'))
  File "C:\Medusa\medusa\notifiers\__init__.py", line 92, in notify_download
    n.notify_download(ep_name)
  File "C:\Medusa\medusa\notifiers\telegram.py", line 111, in notify_download
    self._notify_telegram(title, ep_name)
  File "C:\Medusa\medusa\notifiers\telegram.py", line 165, in _notify_telegram
    return self._send_telegram_msg(title, message, user_id, api_key)
  File "C:\Medusa\medusa\notifiers\telegram.py", line 62, in _send_telegram_msg
    message = '%s : %s' % (title.encode(), msg.encode())
  File "C:\Python27\lib\encodings\cp1255.py", line 12, in encode
    return codecs.charmap_encode(input,errors,encoding_table)
UnicodeEncodeError: 'charmap' codec can't encode character u'\xf9' in position 23: character maps to <undefined>
@sharkykh sharkykh changed the title Telegram notifications fails with non-ASCII characters Telegram notification fails with non-ASCII characters Jul 10, 2018
@medariox
Copy link
Contributor

This is caused by .encode() which should never be set without explicit encoding, as it will most likely use the wrong encoding (in this case it defaults to sys.getdefaultencoding() which for Python 2.7 results in ascii). Changing it to .encode('utf-8') should make it work on all systems.

@sharkykh
Copy link
Contributor Author

Fixed with #4657.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants