def makeunicode(self, metadata): """ Insures unicode support """ # Change torrent name to unicode if 'name.utf-8' in metadata['info']: namekey = 'name.utf-8' else: namekey = 'name' if 'encoding' in metadata: encoding = metadata['encoding'] try: metadata['info'][namekey] = metadata['info'][namekey].decode(encoding) except: metadata['info'][namekey] = forceunicode(metadata['info'][namekey]) else: metadata['info'][namekey] = forceunicode(metadata['info'][namekey]) if namekey != 'name': metadata['info']['name'] = metadata['info'][namekey] # Change all files to unicode if 'files' in self.info: numfiles = len(self.info['files']) if 'path.utf-8' in self.info['files'][0]: pathkey = 'path.utf-8' else: pathkey = 'path' for i in range(numfiles): for j in range(len(self.info['files'][i]['path'])): self.info['files'][i]['path'][j] = forceunicode(self.info['files'][i][pathkey][j]) return metadata
def uniconvert(s, e): if not isinstance(s, unicode): try: s = forceunicode(s) except UnicodeError: raise UnicodeError('bad filename: '+s) return s.encode(e)
def setString(self, treeid, rank, text, force=False): if type(text) is str: text = forceunicode(text) if not force: # Only update if the text has changed try: oldtext = self.GetItemText(treeid, rank) if text != oldtext: force = True except: force = True if force: self.SetItemText(treeid, text, rank)
def changeMessage(self, message = "", msg_type = "clear"): # Clear the error message if msg_type == "clear": self.message = "" self.updateColumns([COL_MESSAGE]) return if not message: return message = forceunicode(message) now = time() if msg_type == "error" or msg_type == "status": self.message = strftime('%H:%M', localtime(now)) + " - " + message self.updateColumns([COL_MESSAGE]) if msg_type == "error": wx.LogError(self.getTitle() + " - " + message) else: wx.LogMessage(self.getTitle() + " - " + message)
def __init__(self, magnetURI): self['info'] = {} try: magnetURI = str(magnetURI) except UnicodeEncodeError: pass tracker = getArgument(magnetURI, 'tr') if tracker: self['announce'] = forceunicode(unquote(tracker)) name = getArgument(magnetURI, 'dn') if name: self['info']['name'] = unquote(name) + ".torrent" else: self['info']['name'] = getHash(magnetURI, asHex = True) + ".torrent" self['info']['length'] = 1 self['info']['piece length'] = 1024 self['info']['pieces'] = " "*20