← Back to team overview

mythbuntu-bugs team mailing list archive

[Bug 1183466] [NEW] libmyth-python: Issue with national characters in filename

 

Public bug reported:

In MythTV/dataheap.py national characters in filename
causes an UnicodeEncodeError to be thrown in Video.open(), 
in the statement:

        return ftopen('myth://Videos@{0.host}/{0.filename}'.format(self),
                    mode, False, nooverwrite, self._db)

For me the problem can be fixed by ensuring that 
the filename format string is unicode:

        return ftopen(u'myth://Videos@{0.host}/{0.filename}'.format(self),
                    mode, False, nooverwrite, self._db)

The problem was actually experienced in mythvidexport.py, 
from https://github.com/wagnerrp/mythtv-scripts, 
as modified in commit 0c6ebb4b78dd398a9d9d329b7aeafa314f40c545 of 
the fork https://github.com/spmorton/mythtv-scripts.
The system had MythTV/dataheap.py installed from the 
Ubuntu repositories from the package
libmyth-python 2:0.26.0+fixes.2012

mythtv@media02:/var/log/mythtv$ /usr/share/mythtv/mythvidexport.py --chanid=1101 --starttime=1328386500
2013-05-22 17:50:59.805274 I [16429] mythvidexport.py Using recording -- Wallander: Lækken - Svensk krimi fra 2009.Brændende biler og afspærrede motorveje. Ystad rammes af en række spektakulære røverier mod pengetransport
2013-05-22 17:50:59.824353 I [16429] mythvidexport.py Attempting TV export.
2013-05-22 17:51:00.014421 I [16429] mythvidexport.py Falling back to generic export.
2013-05-22 17:51:00.026309 I [16429] mythvidexport.py Import complete
2013-05-22 17:51:00.028494 I [16429] mythvidexport.py Copying myth://Default@media02/1101_20120204211500.mpg to myth://Videos@media02/Videos/Wallander: Lækken.mpg
2013-05-22 17:51:00.051557 I [16429] mythvidexport.py Checking for duplication of  -- Wallander: Lækken - Svensk krimi fra 2009.Brændende biler og afspærrede motorveje. Ystad rammes af en række spektakulære røverier mod pengetransport
Traceback (most recent call last):
Traceback (most recent call last):
  File "/usr/share/mythtv/mythvidexport.py", line 447, in <module>
    main()
  File "/usr/share/mythtv/mythvidexport.py", line 419, in main
    export = VIDEO(opts)
  File "/usr/share/mythtv/mythvidexport.py", line 75, in __init__
    self.copy()
  File "/usr/share/mythtv/mythvidexport.py", line 246, in copy
    dstfp = self.vid.open('w')
  File "/usr/lib/python2.7/dist-packages/MythTV/dataheap.py", line 931, in open
    return ftopen('myth://Videos@{0.host}/{0.filename}'.format(self),
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe6' in position 19: ordinal not in range(128)
mythtv@media02:/var/log/mythtv$ printenv LANG
en_DK.UTF-8

Starting off in:
  "Software should only work with Unicode strings internally, 
   converting to a particular encoding on output."

And noting that: "When it comes to unicode filenames in python,
on Unix systems, there will only be a filesystem encoding 
if you’ve set the LANG or LC_CTYPE environment variables; 
if you haven’t, the default encoding is ASCII.
When opening a file for reading or writing, 
you can usually just provide the Unicode string as 
the filename, and it will be automatically converted 
to the right encoding for you."

I ended up believing that using an unicode format string
might be the right solution.

** Affects: mythtv (Ubuntu)
     Importance: Undecided
         Status: New

-- 
You received this bug notification because you are a member of Mythbuntu
Bug Team, which is subscribed to mythtv in Ubuntu.
https://bugs.launchpad.net/bugs/1183466

Title:
  libmyth-python: Issue with national characters in filename

Status in “mythtv” package in Ubuntu:
  New

Bug description:
  In MythTV/dataheap.py national characters in filename
  causes an UnicodeEncodeError to be thrown in Video.open(), 
  in the statement:

          return ftopen('myth://Videos@{0.host}/{0.filename}'.format(self),
                      mode, False, nooverwrite, self._db)

  For me the problem can be fixed by ensuring that 
  the filename format string is unicode:

          return ftopen(u'myth://Videos@{0.host}/{0.filename}'.format(self),
                      mode, False, nooverwrite, self._db)

  The problem was actually experienced in mythvidexport.py, 
  from https://github.com/wagnerrp/mythtv-scripts, 
  as modified in commit 0c6ebb4b78dd398a9d9d329b7aeafa314f40c545 of 
  the fork https://github.com/spmorton/mythtv-scripts.
  The system had MythTV/dataheap.py installed from the 
  Ubuntu repositories from the package
  libmyth-python 2:0.26.0+fixes.2012

  mythtv@media02:/var/log/mythtv$ /usr/share/mythtv/mythvidexport.py --chanid=1101 --starttime=1328386500
  2013-05-22 17:50:59.805274 I [16429] mythvidexport.py Using recording -- Wallander: Lækken - Svensk krimi fra 2009.Brændende biler og afspærrede motorveje. Ystad rammes af en række spektakulære røverier mod pengetransport
  2013-05-22 17:50:59.824353 I [16429] mythvidexport.py Attempting TV export.
  2013-05-22 17:51:00.014421 I [16429] mythvidexport.py Falling back to generic export.
  2013-05-22 17:51:00.026309 I [16429] mythvidexport.py Import complete
  2013-05-22 17:51:00.028494 I [16429] mythvidexport.py Copying myth://Default@media02/1101_20120204211500.mpg to myth://Videos@media02/Videos/Wallander: Lækken.mpg
  2013-05-22 17:51:00.051557 I [16429] mythvidexport.py Checking for duplication of  -- Wallander: Lækken - Svensk krimi fra 2009.Brændende biler og afspærrede motorveje. Ystad rammes af en række spektakulære røverier mod pengetransport
  Traceback (most recent call last):
  Traceback (most recent call last):
    File "/usr/share/mythtv/mythvidexport.py", line 447, in <module>
      main()
    File "/usr/share/mythtv/mythvidexport.py", line 419, in main
      export = VIDEO(opts)
    File "/usr/share/mythtv/mythvidexport.py", line 75, in __init__
      self.copy()
    File "/usr/share/mythtv/mythvidexport.py", line 246, in copy
      dstfp = self.vid.open('w')
    File "/usr/lib/python2.7/dist-packages/MythTV/dataheap.py", line 931, in open
      return ftopen('myth://Videos@{0.host}/{0.filename}'.format(self),
  UnicodeEncodeError: 'ascii' codec can't encode character u'\xe6' in position 19: ordinal not in range(128)
  mythtv@media02:/var/log/mythtv$ printenv LANG
  en_DK.UTF-8

  Starting off in:
    "Software should only work with Unicode strings internally, 
     converting to a particular encoding on output."

  And noting that: "When it comes to unicode filenames in python,
  on Unix systems, there will only be a filesystem encoding 
  if you’ve set the LANG or LC_CTYPE environment variables; 
  if you haven’t, the default encoding is ASCII.
  When opening a file for reading or writing, 
  you can usually just provide the Unicode string as 
  the filename, and it will be automatically converted 
  to the right encoding for you."

  I ended up believing that using an unicode format string
  might be the right solution.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/mythtv/+bug/1183466/+subscriptions


Follow ups

References