import tempfile
import random
import config
+import logger
def create_torrent(source):
"""
self.session = Session(sscfg)
- def start_download(self, torrent, output_dir='.'):
+ def start_torrent(self, torrent, output_dir='.'):
"""
Download (leech or seed) a file via BitTorrent.
+
The code is adapted from Next-Share's 'BaseLib/Tools/cmdlinedl.py'.
@param torrent .torrent file or URL
# setup and start download
dscfg = DownloadStartupConfig()
- dscfg.set_dest_dir(output_dir);
+ dscfg.set_dest_dir(output_dir)
if torrent.startswith("http") or torrent.startswith(P2PURL_SCHEME):
tdef = TorrentDef.load_from_url(torrent)
tdef = TorrentDef.load(torrent)
if tdef.get_live():
raise ValueError("CIS does not support live torrents")
-
- d = self.session.start_download(tdef, dscfg)
+
+ new_download = True
+ try:
+ d = self.session.start_download(tdef, dscfg)
+ except DuplicateDownloadException:
+ new_download = False
#d.set_state_callback(state_callback, getpeerlist=False)
+
+ if new_download:
+ logger.log_msg('download of torrent "%s" started' % torrent)
+ #else:
+ #logger.log_msg('download of torrent "%s" already started' \
+ #% torrent, logger.LOG_LEVEL_DEBUG)
+
+ def stop_torrent(self, torrent, remove_content=False):
+ """
+ Stop leeching or seeding a file via BitTorrent.
+
+ !!! Only tested with torrents started with .tstream files. Not tested
+ for torrents started with URLs.
+
+ @param torrent .torrent file or URL
+ @param remove_content removes downloaded file
+ """
+
+ downloads = self.session.get_downloads()
+
+ for dl in downloads:
+ tdef = dl.get_def()
+ if torrent.find(tdef.get_name()) == 0:
+ self.session.remove_download(dl, remove_content)
+ logger.log_msg('torrent "%s" stopped' % torrent)
+ break
+
+ def get_torrent_list(self):
+ """
+ Returns a list of all torrents started.
+ """
+
+ downloads = self.session.get_downloads()
+ torrent_list = []
+
+ for dl in downloads:
+ tdef = dl.get_def()
+ torrent_list.append(tdef.get_name() + '.tstream')
+
+ return torrent_list