Meet ted! Your new way of downloading tv shows from the web!
Add your favourite tv shows to ted and ted will automatically download torrents of new episodes!
Add your favourite tv shows to ted and ted will automatically download torrents of new episodes!
FS#313 - Get a new torrent sniffer
|
Details
To retrieve seeder/leecher count of a torrent, we use torrentsniffer. A really old and dead java torrent libary.
It has some issues: - It does not do DHT, so it does not count seeders that are not listed on trackers - It only checks one tracker, although the torrent can have more In practice, this means that ted mostly cannot determine the seeder/leecher count of a torrent and thus blocks it from downloading. We should get a new torrent library (or implement our own?) that can do all the things mentioned above so ted can better judge the quality of torrents. I found some open source libraries and although developement on them was stopped, they might be useful for us to try out. I contacted one of the developers of such a libary to see if he is interested of helping us integrate his code into ted. He responded positive. See his project page: http://sourceforge.net/projects/yaircc/ |
This task depends upon
here is some light reading if ur interested:
http://wiki.theory.org/BitTorrentSpecification
http://bittorrent.org/beps/bep_0003.html
http://bittorrent.org/beps/bep_0012.html
I have quickly modified/cutdown a version of the torrent class from vuze, which does implement "announce-list" so we can use that to implement multiple trackers, its kind of complicated but it would make saving/storing torrents easier than it currently is.
DHT, thats complicated, and if i read the docs correctly (which i probably didn't) DHT is proposed to work 2 ways, only one way would really work for us the other not so much.
1:) when a tracker returns a peer, it also returns a peers DHT port, which will allow for getting peers from DHT. this wouldnt really work for us because A.) we would need to implement trackers within ted and it would be slow(gotta wait for peers from trackers). Vuze uses this method, because its a torrent client and it uses trackers and keeps a DHT table based off those peers.
2:) torrent file contains a small list of DHT nodes and we can quicky work out peers using them, but alot of torrents dont implement this, vuze doesnt use this method at the moment, at least as far as i can tell.
I would be interested to see the modified torrent class, as soon as you have it working somewhat :)
Another thing we should do is persuade torrent sites to include the seeder/leecher count in their RSS feeds, as some of them already do. That eliminates the need for ted to communicate with trackers/peers altogether.
as for the persuading torrent sites to include the seeder/leechers in RSS it comes back to this
https://ted.nu/forum/viewtopic.php?t=2086&sid=44359ed7abd910f206826f23a140a2ae
It doesn't seem to have moved since last year tho...
I have attached a patch file for the changes i have made to torrent-sniffer to support multiple trackers
I will upload the vuze torrent when i actually get it to work properly, a little harder to get it to scrape than i originally thought.
also added the functionality for bootstrapping nodes, for use with DHT.
I think we can add a form of DHT scraping, its wont be proper DHT, just a quick check to see how many seeders we can reach in X seconds, but this would require a change to the way we parse torrents.
Also need to look into adding scraping for UDP trackers, there seems to be more and more trackers out there which are implementing this.
Error - Feb 23, 2010 @ 8:58 PM: java.io.IOException: Server returned HTTP response code: 403 for URL: http://www.vertor.com/index.php?mod=download&id=1780585
Exception
But it seems that this torrents is blocked on the server so it is a valid exception.
Josh: do you have any ideas how we could test your implementation?
the only thing that needs to be tested is scraping, as i just extended the base torrent class.
So i guess so long as we get 1 good scrape its working properly.