Beispiel #1
0
    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
Beispiel #2
0
def uniconvert(s, e):
    if not isinstance(s, unicode):
        try:
            s = forceunicode(s)
        except UnicodeError:
            raise UnicodeError('bad filename: '+s)
    return s.encode(e)
Beispiel #3
0
    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)
Beispiel #4
0
    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)
Beispiel #5
0
    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