本文整理汇总了Python中Tribler.Core.CacheDB.SqliteCacheDBHandler.TorrentDBHandler.hasTorrent方法的典型用法代码示例。如果您正苦于以下问题:Python TorrentDBHandler.hasTorrent方法的具体用法?Python TorrentDBHandler.hasTorrent怎么用?Python TorrentDBHandler.hasTorrent使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Tribler.Core.CacheDB.SqliteCacheDBHandler.TorrentDBHandler
的用法示例。
在下文中一共展示了TorrentDBHandler.hasTorrent方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: reimport_torrents
# 需要导入模块: from Tribler.Core.CacheDB.SqliteCacheDBHandler import TorrentDBHandler [as 别名]
# 或者: from Tribler.Core.CacheDB.SqliteCacheDBHandler.TorrentDBHandler import hasTorrent [as 别名]
def reimport_torrents(self):
"""Import all torrent files in the collected torrent dir, all the files already in the database will be ignored.
"""
self.status_update_func("Opening TorrentDBHandler...")
# TODO(emilon): That's a freakishly ugly hack.
torrent_db_handler = TorrentDBHandler(self.session)
torrent_db_handler.category = Category()
# TODO(emilon): It would be nice to drop the corrupted torrent data from the store as a bonus.
self.status_update_func("Registering recovered torrents...")
try:
for infoshash_str, torrent_data in self.torrent_store.iteritems():
self.status_update_func("> %s" % infoshash_str)
torrentdef = TorrentDef.load_from_memory(torrent_data)
if torrentdef.is_finalized():
infohash = torrentdef.get_infohash()
if not torrent_db_handler.hasTorrent(infohash):
self.status_update_func(u"Registering recovered torrent: %s" % hexlify(infohash))
torrent_db_handler._addTorrentToDB(torrentdef, extra_info={"filename": infoshash_str})
finally:
torrent_db_handler.close()
self.db.commit_now()
return self.torrent_store.flush()
示例2: TestTorrentDBHandler
# 需要导入模块: from Tribler.Core.CacheDB.SqliteCacheDBHandler import TorrentDBHandler [as 别名]
# 或者: from Tribler.Core.CacheDB.SqliteCacheDBHandler.TorrentDBHandler import hasTorrent [as 别名]
#.........这里部分代码省略.........
self.assertEqual(seeder, 123)
leecher = self.tdb.getOne('num_leechers', torrent_id=multiple_torrent_id)
self.assertEqual(leecher, 321)
last_tracker_check = self.tdb.getOne('last_tracker_check', torrent_id=multiple_torrent_id)
self.assertEqual(last_tracker_check, 1234567)
def setUpPreSession(self):
super(TestTorrentDBHandler, self).setUpPreSession()
self.config.set_megacache_enabled(True)
self.config.set_torrent_store_enabled(True)
@inlineCallbacks
def setUp(self):
yield super(TestTorrentDBHandler, self).setUp()
from Tribler.Core.APIImplementation.LaunchManyCore import TriblerLaunchMany
from Tribler.Core.Modules.tracker_manager import TrackerManager
self.session.lm = TriblerLaunchMany()
self.session.lm.tracker_manager = TrackerManager(self.session)
self.tdb = TorrentDBHandler(self.session)
self.tdb.torrent_dir = TESTS_DATA_DIR
self.tdb.category = Category()
self.tdb.mypref_db = MyPreferenceDBHandler(self.session)
@inlineCallbacks
def tearDown(self):
self.tdb.mypref_db.close()
self.tdb.mypref_db = None
self.tdb.close()
self.tdb = None
yield super(TestTorrentDBHandler, self).tearDown()
def test_hasTorrent(self):
infohash_str = 'AA8cTG7ZuPsyblbRE7CyxsrKUCg='
infohash = str2bin(infohash_str)
self.assertTrue(self.tdb.hasTorrent(infohash))
self.assertTrue(self.tdb.hasTorrent(infohash)) # cache will trigger
fake_infohash = 'fake_infohash_100000'
self.assertFalse(self.tdb.hasTorrent(fake_infohash))
def test_get_infohash(self):
self.assertTrue(self.tdb.getInfohash(1))
self.assertFalse(self.tdb.getInfohash(1234567))
def test_add_update_torrent(self):
self.addTorrent()
self.updateTorrent()
def test_update_torrent_from_metainfo(self):
# Add torrent first
infohash = unhexlify('ed81da94d21ad1b305133f2726cdaec5a57fed98')
# Only infohash is added to the database
self.tdb.addOrGetTorrentID(infohash)
# Then update the torrent with metainfo
metainfo = {'info': {'files': [{'path': ['Something.something.pdf'], 'length': 123456789},
{'path': ['Another-thing.jpg'], 'length': 100000000}],
'piece length': 2097152,
'name': '\xc3Something awesome (2015)',
'pieces': ''},
'seeders': 0, 'initial peers': [],
'leechers': 36, 'download_exists': False, 'nodes': []}
self.tdb.update_torrent_with_metainfo(infohash, metainfo)
# Check updates are correct
示例3: TestTorrentDBHandler
# 需要导入模块: from Tribler.Core.CacheDB.SqliteCacheDBHandler import TorrentDBHandler [as 别名]
# 或者: from Tribler.Core.CacheDB.SqliteCacheDBHandler.TorrentDBHandler import hasTorrent [as 别名]
class TestTorrentDBHandler(AbstractDB):
def setUp(self):
super(TestTorrentDBHandler, self).setUp()
from Tribler.Core.APIImplementation.LaunchManyCore import TriblerLaunchMany
from Tribler.Core.Modules.tracker_manager import TrackerManager
self.session.lm = TriblerLaunchMany()
self.session.lm.tracker_manager = TrackerManager(self.session)
self.session.lm.tracker_manager.initialize()
self.tdb = TorrentDBHandler(self.session)
self.tdb.torrent_dir = TESTS_DATA_DIR
self.tdb.category = Category.getInstance(self.session)
self.tdb.mypref_db = MyPreferenceDBHandler(self.session)
@blocking_call_on_reactor_thread
def tearDown(self):
self.tdb.mypref_db.close()
self.tdb.mypref_db = None
self.tdb.close()
self.tdb = None
super(TestTorrentDBHandler, self).tearDown()
@blocking_call_on_reactor_thread
def test_hasTorrent(self):
infohash_str = 'AA8cTG7ZuPsyblbRE7CyxsrKUCg='
infohash = str2bin(infohash_str)
assert self.tdb.hasTorrent(infohash)
fake_infoahsh = 'fake_infohash_100000'
assert self.tdb.hasTorrent(fake_infoahsh) == False
@blocking_call_on_reactor_thread
def test_add_update_Torrent(self):
self.addTorrent()
self.updateTorrent()
@blocking_call_on_reactor_thread
def addTorrent(self):
old_size = self.tdb.size()
old_tracker_size = self.tdb._db.size('TrackerInfo')
s_infohash = unhexlify('44865489ac16e2f34ea0cd3043cfd970cc24ec09')
m_infohash = unhexlify('ed81da94d21ad1b305133f2726cdaec5a57fed98')
sid = self.tdb.getTorrentID(s_infohash)
mid = self.tdb.getTorrentID(m_infohash)
single_torrent_file_path = os.path.join(self.getStateDir(), 'single.torrent')
multiple_torrent_file_path = os.path.join(self.getStateDir(), 'multiple.torrent')
copyFile(S_TORRENT_PATH_BACKUP, single_torrent_file_path)
copyFile(M_TORRENT_PATH_BACKUP, multiple_torrent_file_path)
single_tdef = TorrentDef.load(single_torrent_file_path)
assert s_infohash == single_tdef.get_infohash()
multiple_tdef = TorrentDef.load(multiple_torrent_file_path)
assert m_infohash == multiple_tdef.get_infohash()
self.tdb.addExternalTorrent(single_tdef)
self.tdb.addExternalTorrent(multiple_tdef)
single_torrent_id = self.tdb.getTorrentID(s_infohash)
multiple_torrent_id = self.tdb.getTorrentID(m_infohash)
assert self.tdb.getInfohash(single_torrent_id) == s_infohash
single_name = 'Tribler_4.1.7_src.zip'
multiple_name = 'Tribler_4.1.7_src'
assert self.tdb.size() == old_size + 2, old_size - self.tdb.size()
new_tracker_table_size = self.tdb._db.size('TrackerInfo')
assert old_tracker_size < new_tracker_table_size, new_tracker_table_size - old_tracker_size
sname = self.tdb.getOne('name', torrent_id=single_torrent_id)
assert sname == single_name, (sname, single_name)
mname = self.tdb.getOne('name', torrent_id=multiple_torrent_id)
assert mname == multiple_name, (mname, multiple_name)
s_size = self.tdb.getOne('length', torrent_id=single_torrent_id)
assert s_size == 1583233, s_size
m_size = self.tdb.getOne('length', torrent_id=multiple_torrent_id)
assert m_size == 5358560, m_size
cat = self.tdb.getOne('category', torrent_id=multiple_torrent_id)
assert cat == u'xxx', cat
s_status = self.tdb.getOne('status', torrent_id=single_torrent_id)
assert s_status == u'unknown', s_status
m_comment = self.tdb.getOne('comment', torrent_id=multiple_torrent_id)
comments = 'www.tribler.org'
assert m_comment.find(comments) > -1
comments = 'something not inside'
assert m_comment.find(comments) == -1
m_trackers = self.tdb.getTrackerListByInfohash(m_infohash)
assert len(m_trackers) == 8
assert 'http://tpb.tracker.thepiratebay.org/announce' in m_trackers, m_trackers
#.........这里部分代码省略.........