Fix displaying torrents with non-utf8 encodings in add torrent dialog

This commit is contained in:
Andrew Resch 2009-04-05 18:31:43 +00:00
parent 322dffa105
commit 3c4b511e6b
2 changed files with 31 additions and 20 deletions

View File

@ -134,16 +134,22 @@ class DelugeRPCProtocol(Protocol):
continue
# Format the RPCRequest message for debug printing
s = call[1] + "("
if call[2]:
s += ", ".join([str(x) for x in call[2]])
if call[3]:
try:
s = call[1] + "("
if call[2]:
s += ", "
s += ", ".join([key + "=" + str(value) for key, value in call[3].items()])
s += ")"
s += ", ".join([str(x) for x in call[2]])
if call[3]:
if call[2]:
s += ", "
s += ", ".join([key + "=" + str(value) for key, value in call[3].items()])
s += ")"
except UnicodeEncodeError:
pass
#log.debug("RPCRequest had some non-ascii text..")
else:
pass
#log.debug("RPCRequest: %s", s)
#log.debug("RPCRequest: %s", s)
reactor.callLater(0, self._dispatch, *call)
def sendData(self, data):

View File

@ -48,15 +48,20 @@ class TorrentInfo(object):
self.__m_info_hash = sha(bencode.bencode(self.__m_metadata["info"])).hexdigest()
# Get encoding from torrent file if available
self.encoding = "UTF-8"
if "encoding" in self.__m_metadata:
self.encoding = self.__m_metadata["encoding"]
# Get list of files from torrent info
paths = {}
if self.__m_metadata["info"].has_key("files"):
prefix = ""
if len(self.__m_metadata["info"]["files"]) > 1:
prefix = self.__m_metadata["info"]["name"]
prefix = self.__m_metadata["info"]["name"].decode(self.encoding).encode("utf8")
for index, f in enumerate(self.__m_metadata["info"]["files"]):
path = os.path.join(prefix, *f["path"])
path = os.path.join(prefix, *f["path"]).decode(self.encoding).encode("utf8")
f["index"] = index
paths[path] = f
@ -70,24 +75,24 @@ class TorrentInfo(object):
self.__m_files_tree = file_tree.get_tree()
else:
self.__m_files_tree = {
self.__m_metadata["info"]["name"]: (self.__m_metadata["info"]["length"], True)
self.__m_metadata["info"]["name"].decode(self.encoding).encode("utf8"): (self.__m_metadata["info"]["length"], True)
}
self.__m_files = []
if self.__m_metadata["info"].has_key("files"):
prefix = ""
if len(self.__m_metadata["info"]["files"]) > 1:
prefix = self.__m_metadata["info"]["name"]
prefix = self.__m_metadata["info"]["name"].decode(self.encoding).encode("utf8")
for f in self.__m_metadata["info"]["files"]:
self.__m_files.append({
'path': os.path.join(prefix, *f["path"]),
'path': os.path.join(prefix, *f["path"]).decode(self.encoding).encode("utf8"),
'size': f["length"],
'download': True
})
else:
self.__m_files.append({
"path": self.__m_metadata["info"]["name"],
"path": self.__m_metadata["info"]["name"].decode(self.encoding).encode("utf8"),
"size": self.__m_metadata["info"]["length"],
"download": True
})
@ -103,7 +108,7 @@ class TorrentInfo(object):
@property
def name(self):
return self.__m_metadata["info"]["name"]
return self.__m_metadata["info"]["name"].decode(self.encoding).encode("utf8")
@property
def info_hash(self):