def test_addTorrentsToQueue_torrentExists_deleteTorrent(self): self.removeDatabase() testTorrent = Torrents.TV( torrentTitle='some.show.s01e01.720p.junk.here', url='http://testurl.com/test') testTorrent2 = Torrents.TV( torrentTitle='some.show.s01e02.720p.junk.here', url='http://testurl.com/test2') torrentQueue = Queue() torrentQueue.append(testTorrent) dbObject = Databases( dbType="SQLITE3", databaseSettings={'databaseLocation': self.testDatabaseFile}) dbObject.addTorrentsToQueue(torrentQueue) self.assertTrue(dbObject.torrentExists(testTorrent)) dbObject.updateHashString({'hashString': 'abc123'}, {'url': 'http://testurl.com/test'}) self.assertTrue( len( dbObject.getTorrentInfo(hashString='abc123', selectors=['torrentTitle', 'url'])) == 1) torrentQueue = Queue() torrentQueue.append(testTorrent2) dbObject.addTorrentsToQueue(torrentQueue) self.assertTrue(dbObject.getQueuedTorrentsCount() == 2) self.assertTrue(len(dbObject.getQueuedTorrents()) == 2) dbObject.deleteTorrent(url='http://testurl.com/test') self.assertFalse(dbObject.torrentExists(testTorrent)) self.assertTrue(dbObject.getQueuedTorrentsCount() == 1) dbObject.deleteTorrent(url='http://testurl.com/test2') self.assertFalse(dbObject.torrentExists(testTorrent)) self.assertTrue(dbObject.getQueuedTorrentsCount() == 0) self.removeDatabase()
class Queue(): ''' Used to Track a list of torrents and interact with the torrent database ''' # Setup the database object database = None defaultDatabaseType = settings['database']['defaultDatabaseEngine'] def __init__(self, *args): self.elements = list(*args) self.database = Databases(dbType=self.defaultDatabaseType) def __getitem__(self, idx): # Ensure the index is in the correct range if idx < 0 or idx >= len(self.elements): raise IndexError('Index out of range') return self.elements[idx] def __setitem__(self, idx, torrent): self.elements[idx] = torrent # Ensure the value was taken if self.elements[idx] == torrent: return 0 else: return -1 def __len__(self): return len(self.elements) def __iter__(self): return iter(self.elements) def __contains__(self, element): return element in self.elements def databaseTorrentExists(self, torrent): return self.database.torrentExists(torrent=torrent) #return False def databaseTorrentBlacklisted(self, torrent): return self.database.torrentBlacklisted(torrent.get('url', '')) #return False def append(self, torrent): # Check and see if the value already exists in elements if torrent in self.elements: return -1 # Check and see if the value already exists in DB elif self.databaseTorrentExists(torrent): return -1 # Ensure it is not Blacklisted elif self.databaseTorrentBlacklisted(torrent): return -1 # Append the value to elements else: self.elements.append(torrent) # Ensure the value was taken if torrent in self.elements: return 0 else: return -1 def writeToDB(self): self.database.addTorrentsToQueue(self.elements) def __str__(self): out = '' for element in self.elements: out += u'{0}\n'.format(element) return out