Exemple #1
0
    def scrape_trackers(self):
        """
        Manually scrape tracker by requesting to tracker manager
        """

        for infohash in list(self.torrents):
            # torrent handle
            lt_torrent = self.session.lm.ltmgr.get_session().find_torrent(
                lt.big_number(infohash))

            peer_list = []
            for i in lt_torrent.get_peer_info():
                peer = LibtorrentDownloadImpl.create_peerlist_data(i)
                peer_list.append(peer)

            num_seed, num_leech = utilities.translate_peers_into_health(
                peer_list)

            # calculate number of seeder and leecher by looking at the peers
            if self.torrents[infohash]['num_seeders'] == 0:
                self.torrents[infohash]['num_seeders'] = num_seed
            if self.torrents[infohash]['num_leechers'] == 0:
                self.torrents[infohash]['num_leechers'] = num_leech

            self._logger.debug(
                "Seeder/leecher data translated from peers : seeder %s, leecher %s",
                num_seed, num_leech)

            # check health(seeder/leecher)
            self.session.lm.torrent_checker.add_gui_request(infohash, True)
Exemple #2
0
    def test_translate_peer_info(self):
        """
        test - predict number of seeder and leecher only based on peer discovered and
        their activities
        """
        peerlist_dict = []
        for peer in self.peer:
            peerlist_dict.append(
                LibtorrentDownloadImpl.create_peerlist_data(peer))

        num_seed, num_leech = utilities.translate_peers_into_health(
            peerlist_dict)
        self.assertEqual(num_seed, 4, "Seeder number don't match")
        self.assertEqual(num_leech, 3, "Leecher number don't match")