| Server IP : 182.53.201.61 / Your IP : 216.73.217.175 Web Server : Apache/2.2.15 (Fedora) System : Linux km10.dyndns.org 2.6.31.5-127.fc12.i686.PAE #1 SMP Sat Nov 7 21:25:57 EST 2009 i686 User : apache ( 48) PHP Version : 5.3.3 Disable Function : NONE MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /proc/11490/root/usr/lib/python2.6/site-packages/BitTorrent/ |
Upload File : |
# The contents of this file are subject to the BitTorrent Open Source License
# Version 1.1 (the License). You may not copy or use this file, in either
# source code or executable form, except in compliance with the License. You
# may obtain a copy of the License at http://www.bittorrent.com/license/.
#
# Software distributed under the License is distributed on an AS IS basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
# GetTorrent -- abstraction which can get a .torrent file from multiple
# sources: local file, url, etc.
# written by Matt Chisholm
import os
import re
import zurllib
from bencode import bdecode
from BitTorrent.platform import get_cache_dir
urlpat = re.compile('^\w+://')
urlpat_torrent = re.compile('^torrent://')
urlpat_bittorrent = re.compile('^bittorrent://')
def get_quietly(arg):
(data, errors) = get(arg)
# If there's an error opening a file from the IE cache,
# act like we simply didn't get a file (because we didn't)
if errors:
cache = get_cache_dir()
if (cache is not None) and (cache in arg):
errors = []
return data, errors
def get(arg):
data = None
errors = []
if os.access(arg, os.F_OK):
data, errors = get_file(arg)
elif urlpat.match(arg):
data, errors = get_url(arg)
else:
errors.append(_("Could not read %s") % arg)
return data, errors
def get_url(url):
data = None
errors = []
err_str = _("Could not download or open \n%s\n"
"Try using a web browser to download the torrent file.") % url
u = None
# pending protocol changes, convert:
# torrent://http://path.to/file
# and:
# bittorrent://http://path.to/file
# to:
# http://path.to/file
url = urlpat_torrent.sub('', url)
url = urlpat_bittorrent.sub('', url)
try:
u = zurllib.urlopen(url)
data = u.read()
u.close()
b = bdecode(data)
except Exception, e:
if u is not None:
u.close()
errors.append(err_str + "\n(%s)" % e)
data = None
else:
if u is not None:
u.close()
return data, errors
def get_file(filename):
data = None
errors = []
f = None
try:
f = file(filename, 'rb')
data = f.read()
f.close()
except Exception, e:
if f is not None:
f.close()
errors.append((_("Could not read %s") % filename) + (': %s' % str(e)))
return data, errors