def test_can_decode_utf8_strings_with_french_content(self, mock): mock.return_value = 'UTF-8' result = locale_decode( '[Errno 98] Adresse d\xc3\xa9j\xc3\xa0 utilis\xc3\xa9e') self.assertEquals(u'[Errno 98] Adresse d\xe9j\xe0 utilis\xe9e', result)
def test_can_decode_an_ioerror_with_french_content(self, mock): mock.return_value = 'UTF-8' error = IOError(98, 'Adresse d\xc3\xa9j\xc3\xa0 utilis\xc3\xa9e') result = locale_decode(error) self.assertEquals(u'[Errno 98] Adresse d\xe9j\xe0 utilis\xe9e', result)
def try_ipv6_socket(): """Determine if system really supports IPv6""" if not socket.has_ipv6: return False try: socket.socket(socket.AF_INET6).close() return True except IOError as error: logger.debug(u'Platform supports IPv6, but socket ' 'creation failed, disabling: %s', locale_decode(error)) return False
def try_ipv6_socket(): """Determine if system really supports IPv6""" if not socket.has_ipv6: return False try: socket.socket(socket.AF_INET6).close() return True except IOError as error: logger.debug( u'Platform supports IPv6, but socket ' 'creation failed, disabling: %s', locale_decode(error)) return False
def __init__(self): super(MpdFrontend, self).__init__() hostname = network.format_hostname(settings.MPD_SERVER_HOSTNAME) port = settings.MPD_SERVER_PORT try: network.Server(hostname, port, protocol=MpdSession, max_connections=settings.MPD_SERVER_MAX_CONNECTIONS) except IOError as error: logger.error(u'MPD server startup failed: %s', locale_decode(error)) sys.exit(1) logger.info(u'MPD server running at [%s]:%s', hostname, port)
def parse_m3u(file_path): """ Convert M3U file list of uris Example M3U data:: # This is a comment Alternative\Band - Song.mp3 Classical\Other Band - New Song.mp3 Stuff.mp3 D:\More Music\Foo.mp3 http://www.example.com:8000/Listen.pls http://www.example.com/~user/Mine.mp3 - Relative paths of songs should be with respect to location of M3U. - Paths are normaly platform specific. - Lines starting with # should be ignored. - m3u files are latin-1. - This function does not bother with Extended M3U directives. """ uris = [] folder = os.path.dirname(file_path) try: with open(file_path) as m3u: contents = m3u.readlines() except IOError as error: logger.error('Couldn\'t open m3u: %s', locale_decode(error)) return uris for line in contents: line = line.strip().decode('latin1') if line.startswith('#'): continue # FIXME what about other URI types? if line.startswith('file://'): uris.append(line) else: path = path_to_uri(folder, line) uris.append(path) return uris
def parse_m3u(file_path, music_folder): """ Convert M3U file list of uris Example M3U data:: # This is a comment Alternative\Band - Song.mp3 Classical\Other Band - New Song.mp3 Stuff.mp3 D:\More Music\Foo.mp3 http://www.example.com:8000/Listen.pls http://www.example.com/~user/Mine.mp3 - Relative paths of songs should be with respect to location of M3U. - Paths are normaly platform specific. - Lines starting with # should be ignored. - m3u files are latin-1. - This function does not bother with Extended M3U directives. """ uris = [] try: with open(file_path) as m3u: contents = m3u.readlines() except IOError as error: logger.error('Couldn\'t open m3u: %s', locale_decode(error)) return uris for line in contents: line = line.strip().decode('latin1') if line.startswith('#'): continue # FIXME what about other URI types? if line.startswith('file://'): uris.append(line) else: path = path_to_uri(music_folder, line) uris.append(path) return uris
def parse_mpd_tag_cache(tag_cache, music_dir=''): """ Converts a MPD tag_cache into a lists of tracks, artists and albums. """ tracks = set() try: with open(tag_cache) as library: contents = library.read() except IOError as error: logger.error('Could not open tag cache: %s', locale_decode(error)) return tracks current = {} state = None for line in contents.split('\n'): if line == 'songList begin': state = 'songs' continue elif line == 'songList end': state = None continue elif not state: continue key, value = line.split(': ', 1) if key == 'key': _convert_mpd_data(current, tracks, music_dir) current.clear() current[key.lower()] = value.decode('utf-8') _convert_mpd_data(current, tracks, music_dir) return tracks
def test_does_not_use_locale_to_decode_ascii_bytestrings(self, mock): mock.return_value = 'UTF-8' locale_decode('abc') self.assertFalse(mock.called)