the_pirate_bay 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -22,16 +22,16 @@ require "the_pirate_bay"
22
22
  api = ThePirateBay.new
23
23
 
24
24
  # You can search for a torrent by keyword
25
- api.series.search("Fringe")
26
- => [#<ThePirateBay::Torrent::Collection id: "7810640", name: "Fringe S05E06 Season 5 Episode 6 HDTV x264 [GlowGaz...", seeders: "408", leechers: "116", magnet_uri: "magnet:?xt=urn:btih:0f4e3c1a4618b6d9658427e7778c602...", size: "303.89 MB", type: "Video > TV shows", uploaded_at: "Today 04:11, Size 303.89 MiB", comments_count: "2", uploader: "GlowGaze">]
25
+ api.torrents.search("Fringe")
26
+ => [#<ThePirateBay::Torrent::Collection id: "7810640", name: "Fringe S05E06 Season 5 Episode 6 HDTV x264 [GlowGaz...", seeders: "408", leechers: "116", magnet_uri: "magnet:?xt=urn:btih:0f4e3c1a4618b6d9658427e7778c602...", size: "303.89 MB", type: "Video > TV shows", uploaded_at: "Today 04:11", comments_count: "2", uploader: "GlowGaze">]
27
27
 
28
- # Once you have a torrent id, you can use it to find more information
28
+ # If you have a torrent id, you can use it to find more information
29
29
  torrent = api.torrents.find("7810640")
30
+ => #<ThePirateBay::Torrent id: "7723168", name: "Fringe S05E03 HDTV x264-LOL [eztv]", description: "#EZTV @ EFNet -&gt; To avoid fakes, ALWAYS check th...", seeders: "2461", leechers: "118", quality: "+4 / -0 (+4)", size: "288.87 MiB (302897843 Bytes)", type: "Video > TV shows", hash: "84C153E4064D1AC1CC151A09070C8740C318D271", uploaded_at: "2012-10-13 12:33:16 GMT", uploaded_by: "eztv", comments_count: "6", files_count: "1", spoken_language: nil, written_language: nil, tags: nil, imdb_id: nil>
30
31
  ```
31
32
 
32
33
  ## Work in Progress
33
34
 
34
- * Find torrents by id
35
35
  * Handle users
36
36
  * Sort results by relevance, seeders, leechers, size, date, user and type
37
37
  * Get results from other pages
@@ -0,0 +1,5 @@
1
+ class String
2
+ def sanitize!
3
+ gsub!(/\A[[:space:]]*(.*?)[[:space:]]*\z/) { $1 } rescue ""
4
+ end
5
+ end
@@ -1,23 +1,6 @@
1
1
  module ThePirateBay
2
2
  module Model
3
3
 
4
- attr_accessor :klass
5
-
6
- def initialize(params=nil)
7
- @klass = self.class
8
- self.attributes = params
9
- end
10
-
11
- def attributes=(params=nil)
12
- params.each do |attr, value|
13
- begin
14
- self.public_send("#{attr}=", value)
15
- rescue NoMethodError
16
- raise UnknownAttributeError, "unknown attribute: #{attr}"
17
- end
18
- end if params
19
- end
20
-
21
4
  def attributes
22
5
  attrs = {}
23
6
  class_attributes.each do |name|
@@ -49,9 +32,5 @@ module ThePirateBay
49
32
  end
50
33
  end
51
34
 
52
- def class_attributes
53
- klass::ATTRS
54
- end
55
-
56
35
  end # Model
57
36
  end # ThePirateBay
@@ -3,61 +3,69 @@ module ThePirateBay
3
3
  include Model
4
4
 
5
5
  ATTRS = [:id, :name, :seeders, :leechers, :magnet_uri,
6
- :size, :type, :uploaded_at, :comments_count, :uploader].freeze
6
+ :size, :type, :uploaded_at, :uploaded_by, :comments_count].freeze
7
7
 
8
- attr_accessor *ATTRS, :torrent
8
+ attr_accessor *ATTRS, :html
9
+
10
+ def initialize(html)
11
+ @html = html # Save html to get instance attributes
12
+ set_attributes
13
+
14
+ return self
15
+ end
9
16
 
10
- def initialize(torrent)
11
- @torrent = torrent
17
+ def set_attributes
12
18
  class_attributes.collect do |attr|
13
19
  self.public_send("#{attr}=", send(attr))
14
20
  end
15
21
  end
16
-
17
- def class_attributes
18
- ATTRS
19
- end
20
22
 
21
23
  def id
22
- torrent.css('td[2] div.detName').inner_html.match(/\/torrent\/(\d+)\//)[1]
24
+ @id ||= html.css('td[2] div.detName').inner_html.match(/\/torrent\/(\d+)\//)[1]
23
25
  end
24
26
 
25
27
  def name
26
- torrent.css('td[2] div.detName a').text
28
+ @name ||= html.css('td[2] div.detName a').text
27
29
  end
28
30
 
29
31
  def type
30
- torrent.css('td[1] a').map(&:text).join(" > ")
32
+ @type ||= html.css('td[1] a').map(&:text).join(" > ")
31
33
  end
32
34
 
33
35
  def size
34
- torrent.css('td[2] font.detDesc').text.match(/Size (.*),/)[1].gsub('i', '')
36
+ @size ||= html.css('td[2] font.detDesc').text.match(/Size (.*),/)[1].gsub('i', '')
35
37
  end
36
38
 
37
39
  def seeders
38
- torrent.css('td[3]').text
40
+ @seeders ||= html.css('td[3]').text
39
41
  end
40
42
 
41
43
  def leechers
42
- torrent.css('td[4]').text
44
+ @leechers ||= html.css('td[4]').text
43
45
  end
44
46
 
45
- def uploader
46
- torrent.css('td[2] font.detDesc a').text
47
+ def magnet_uri
48
+ @magnet_uri ||= html.css('td[2] div.detName + a').attribute("href").value
47
49
  end
48
50
 
49
- def magnet_uri
50
- torrent.css('td[2] div.detName + a').attribute("href").value
51
+ def uploaded_at
52
+ @uploaded_at ||= html.css('td[2] font.detDesc').text.match(/Uploaded (.*), S/)[1]
53
+ end
54
+
55
+ def uploaded_by
56
+ @uploaded_by ||= html.css('td[2] font.detDesc a').text
51
57
  end
52
58
 
53
59
  def comments_count
54
- unless (comments = torrent.css('td[2] img[@src*="comment.gif"]')).empty?
60
+ @comments_count ||= unless (comments = html.css('td[2] img[@src*="comment.gif"]')).empty?
55
61
  comments.attribute("alt").value.match(/\d+/)[0]
56
62
  end
57
63
  end
58
64
 
59
- def uploaded_at
60
- torrent.css('td[2] font.detDesc').text.match(/Uploaded (.*),/)[1]
65
+ private
66
+
67
+ def class_attributes
68
+ ATTRS
61
69
  end
62
70
 
63
71
  end # Torrent::Collection
@@ -2,28 +2,134 @@ module ThePirateBay
2
2
  class Torrent < API
3
3
  include Model
4
4
 
5
- ATTRS = [:id, :name, :description, :seeders, :leechers, :hash, :magnet_uri, :quality, :size, :type,
6
- :uploaded_at, :comments_count, :files_count, :spoken_language, :written_language, :imdb_id].freeze
5
+ ATTRS_MAP = {
6
+ :name => "Title",
7
+ :description => "Description",
8
+ :seeders => "Seeders",
9
+ :leechers => "Leechers",
10
+ :quality => "Quality",
11
+ :size => "Size",
12
+ :type => "Type",
13
+ :hash => "Info Hash",
14
+ :uploaded_at => "Uploaded",
15
+ :uploaded_by => "By",
16
+ :comments_count => "Comments",
17
+ :files_count => "Files",
18
+ :spoken_language => "Spoken language(s)",
19
+ :written_language => "Texted language(s)",
20
+ :tags => "Tag(s)",
21
+ :imdb_id => "Info"
22
+ }.freeze
7
23
 
8
- attr_accessor *ATTRS, :comments, :uploader, :tags
24
+ ATTRS = [:id, *ATTRS_MAP.keys].freeze
25
+ SKIP_ATTRS = [:hash, :tags, :imdb_id].freeze
26
+
27
+ # Torrent attributes:
28
+ # id, name, description, seeders, leechers, hash, magnet_uri, quality, size, type,
29
+ # uploaded_at, uploaded_by, comments_count, files_count, spoken_language, written_language, imdb_id
30
+
31
+ attr_accessor *ATTRS, :comments, :uploader, :html
9
32
 
10
33
  class << self
34
+
35
+ # Public: Search for a torrent.
36
+ #
37
+ # Send your query as the only parameter,
38
+ # just like you would in ThePirateBay.se
39
+ #
40
+ # query - A string of keywords to search for.
41
+ #
42
+ # Examples
43
+ #
44
+ # search("Fringe")
45
+ # search("Fringe s05e07")
46
+ #
47
+ # Returns an array of ThePirateBay::Torrent::Collection objects.
11
48
  def search(query)
12
- # Returns search html
13
- doc = request("search/#{query}/0/99/0")
49
+ html = request("search/#{query}/0/99/0") # Returns search html
14
50
 
15
- # Get torrents table rows
51
+ # Get torrents table rows from html
16
52
  # and return as ruby objects
17
- doc.xpath("//table[@id='searchResult']/tr").collect do |torrent|
18
- Torrent::Collection.new(torrent)
53
+ html.xpath("//table[@id='searchResult']/tr").collect do |torrent_html|
54
+ Torrent::Collection.new(torrent_html)
19
55
  end
20
56
  end
21
57
 
58
+ # Public: Find a torrent by ID.
59
+ #
60
+ # Retrieve torrent information from ThePirateBay.se/torrent/:id
61
+ #
62
+ # id - The ID of the torrent.
63
+ #
64
+ # Examples
65
+ #
66
+ # find("7723168")
67
+ # find(7723709)
68
+ #
69
+ # Returns an instance of ThePirateBay::Torrent
22
70
  def find(id)
23
- data = request("torrent/#{id}")
71
+ html = request("torrent/#{id}") # Returns torrent html
72
+
73
+ # Initialize Torrent from html
74
+ new(id, html)
24
75
  end
25
76
  alias :get :find
26
77
  end
27
78
 
79
+ def initialize(id, html)
80
+ # Save html doc to get special attributes
81
+ @id, @html = id, html
82
+
83
+ # Get attributes and values html lists
84
+ attrs = html.css("#details dt").map(&:text).map { |a| a.gsub(":", "") }
85
+ values = html.css("#details dd").map(&:text)
86
+
87
+ # Set instance attributes
88
+ set_attributes(attrs, values)
89
+
90
+ return self
91
+ end
92
+
93
+ # Set torrent attributes from html lists
94
+ def set_attributes(attrs, values)
95
+ attrs.zip(values).each do |dirty_attr, value|
96
+ begin
97
+ attr = attributes_map.key(dirty_attr) # Map to a nice and clean attribute name (see ATTRS_MAP)
98
+ next if skip_attributes.include?(attr)
99
+ value.sanitize! # Remove weird characters
100
+ self.public_send("#{attr}=", value) unless value.empty?
101
+ rescue NoMethodError => e
102
+ raise e unless e.name == :"="
103
+ raise UnknownAttributeError, "unknown attribute: #{dirty_attr}"
104
+ end
105
+ end
106
+ end
107
+
108
+ def name
109
+ @name ||= html.css("div#title").text.sanitize!
110
+ end
111
+
112
+ def hash
113
+ @hash ||= html.css("#details dd")[-1].next.text.strip
114
+ end
115
+
116
+ def description
117
+ @description ||= html.css("div.nfo").text.strip
118
+ end
119
+
120
+ private
121
+
122
+ def attributes_map
123
+ ATTRS_MAP
124
+ end
125
+
126
+ def class_attributes
127
+ ATTRS
128
+ end
129
+
130
+ def skip_attributes
131
+ SKIP_ATTRS
132
+ end
133
+
28
134
  end # Torrent
29
135
  end # ThePirateBay
@@ -1,3 +1,3 @@
1
1
  module ThePirateBay
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
@@ -1,3 +1,4 @@
1
+ require "the_pirate_bay/core_ext/string"
1
2
  require "the_pirate_bay/errors"
2
3
  require "the_pirate_bay/version"
3
4
  require "the_pirate_bay/api"
@@ -0,0 +1,323 @@
1
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
2
+ <html xmlns="http://www.w3.org/1999/xhtml" >
3
+ <head>
4
+ <title>Fringe S05E03 HDTV x264-LOL [eztv] (download torrent) - TPB</title>
5
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
6
+ <link rel="search" type="application/opensearchdescription+xml" href="//static.thepiratebay.se/opensearch.xml" title="Search The Pirate Bay" />
7
+ <link rel="stylesheet" type="text/css" href="//static.thepiratebay.se/css/pirate6.css"/>
8
+ <style type="text/css">
9
+ .searchBox{
10
+ margin: 6px;
11
+ width: 300px;
12
+ vertical-align: middle;
13
+ padding: 2px;
14
+ background-image:url('//static.thepiratebay.se/img/icon-https.gif');
15
+ background-repeat:no-repeat;
16
+ background-position: right;
17
+ }
18
+
19
+ .detLink {
20
+ font-size: 1.2em;
21
+ font-weight: 400;
22
+ }
23
+ .detDesc {
24
+ color: #4e5456;
25
+ }
26
+ .detDesc a:hover {
27
+ color: #000099;
28
+ text-decoration: underline;
29
+ }
30
+ .sortby {
31
+ text-align: left;
32
+ float: left;
33
+ }
34
+ .detName {
35
+ padding-top: 3px;
36
+ padding-bottom: 2px;
37
+ }
38
+ .viewswitch {
39
+ font-style: normal;
40
+ float: right;
41
+ text-align: right;
42
+ font-weight: normal;
43
+ }
44
+ </style>
45
+ <script src="//static.thepiratebay.se/js/tpb.js" type="text/javascript"></script>
46
+ <script src="//static.thepiratebay.se/js/prototype.js" type="text/javascript"></script>
47
+ <script src="//static.thepiratebay.se/js/scriptaculous.js" type="text/javascript"></script>
48
+ <script src="//static.thepiratebay.se/js/details.js" type="text/javascript"></script>
49
+ <link rel="stylesheet" type="text/css" href="//static.thepiratebay.se/css/details.css"/>
50
+
51
+ <script language="javascript" type="text/javascript">if (top.location != self.location) {top.location.replace(self.location);}</script>
52
+ </head>
53
+
54
+ <body>
55
+ <div id="header">
56
+
57
+
58
+ <div class="ad">
59
+ <iframe src="http://cdn2.adexprt.com/clkads/top.html" width="468" height="60" frameborder="0" scrolling="no"></iframe>
60
+ </div>
61
+ <form method="get" id="q" action="/s/">
62
+ <a href="/" class="img"><img src="//static.thepiratebay.se/img/tpblogo_sm_ny.gif" id="TPBlogo" alt="The Pirate Bay" /></a>
63
+ <b><a href="/" title="Search Torrents">Search Torrents</a></b>&nbsp;&nbsp;|&nbsp;
64
+ <a href="/browse" title="Browse Torrents">Browse Torrents</a>&nbsp;&nbsp;|&nbsp;
65
+ <a href="/recent" title="Recent Torrent">Recent Torrents</a>&nbsp;&nbsp;|&nbsp;
66
+ <a href="/tv" title="TV shows">TV shows</a>&nbsp;&nbsp;|&nbsp;
67
+ <a href="/music" title="Music">Music</a>&nbsp;&nbsp;|&nbsp;
68
+ <a href="/top" title="Top 100">Top 100</a>
69
+ <br /><input type="search" class="inputbox" title="Pirate Search" name="q" placeholder="Search here..." value="" /><input value="Pirate Search" type="submit" class="submitbutton" /><br /> <label for="audio" title="Audio"><input id="audio" name="audio" onclick="javascript:rmAll();" type="checkbox"/>Audio</label>
70
+ <label for="video" title="Video"><input id="video" name="video" onclick="javascript:rmAll();" type="checkbox"/>Video</label>
71
+ <label for="apps" title="Applications"><input id="apps" name="apps" onclick="javascript:rmAll();" type="checkbox"/>Applications</label>
72
+ <label for="games" title="Games"><input id="games" name="games" onclick="javascript:rmAll();" type="checkbox"/>Games</label>
73
+ <label for="other" title="Other"><input id="other" name="other" onclick="javascript:rmAll();" type="checkbox"/>Other</label>
74
+
75
+ <select id="category" name="category" onchange="javascript:setAll();">
76
+ <option value="0">All</option>
77
+ <optgroup label="Audio">
78
+ <option value="101">Music</option>
79
+ <option value="102">Audio books</option>
80
+ <option value="103">Sound clips</option>
81
+ <option value="104">FLAC</option>
82
+ <option value="199">Other</option>
83
+ </optgroup>
84
+ <optgroup label="Video">
85
+ <option value="201">Movies</option>
86
+ <option value="202">Movies DVDR</option>
87
+ <option value="203">Music videos</option>
88
+ <option value="204">Movie clips</option>
89
+ <option value="205">TV shows</option>
90
+ <option value="206">Handheld</option>
91
+ <option value="207">Highres - Movies</option>
92
+ <option value="208">Highres - TV shows</option>
93
+ <option value="209">3D</option>
94
+ <option value="299">Other</option>
95
+ </optgroup>
96
+ <optgroup label="Applications">
97
+ <option value="301">Windows</option>
98
+ <option value="302">Mac</option>
99
+ <option value="303">UNIX</option>
100
+ <option value="304">Handheld</option>
101
+ <option value="305">IOS (iPad/iPhone)</option>
102
+ <option value="306">Android</option>
103
+ <option value="399">Other OS</option>
104
+ </optgroup>
105
+ <optgroup label="Games">
106
+ <option value="401">PC</option>
107
+ <option value="402">Mac</option>
108
+ <option value="403">PSx</option>
109
+ <option value="404">XBOX360</option>
110
+ <option value="405">Wii</option>
111
+ <option value="406">Handheld</option>
112
+ <option value="407">IOS (iPad/iPhone)</option>
113
+ <option value="408">Android</option>
114
+ <option value="499">Other</option>
115
+ </optgroup>
116
+ <optgroup label="Other">
117
+ <option value="601">E-books</option>
118
+ <option value="602">Comics</option>
119
+ <option value="603">Pictures</option>
120
+ <option value="604">Covers</option>
121
+ <option value="605">Physibles</option>
122
+ <option value="699">Other</option>
123
+ </optgroup>
124
+ </select>
125
+
126
+ <input type="hidden" name="page" value="0" />
127
+ <input type="hidden" name="orderby" value="99" />
128
+ </form>
129
+ </div><!-- // div:header -->
130
+
131
+ <h2><span>Details for this torrent</span>&nbsp;</h2>
132
+ <div id="content">
133
+
134
+ <div id="sky-right">
135
+ <iframe src="http://cdn1.adexprt.com/clkads/sky2.html" width="160" height="600" frameborder="0" scrolling="no" style="padding-top: 100px"></iframe>
136
+ </div>
137
+ <div id="main-content">
138
+ <div>
139
+ <div id="detailsouterframe">
140
+
141
+ <div id="detailsframe">
142
+ <div id="title">
143
+ Fringe S05E03 HDTV x264-LOL [eztv] </div>
144
+
145
+ <div id="details">
146
+ <dl class="col1">
147
+ <dt>Type:</dt>
148
+ <dd><a href="/browse/205" title="More from this category">Video &gt; TV shows</a></dd>
149
+
150
+ <dt>Files:</dt>
151
+ <dd><a href="/torrent/7723168/" title="Files" onclick="
152
+ if (filelist &lt; 1) {
153
+ new Ajax.Updater('filelistContainer', '/ajax_details_filelist.php', {method: 'get', parameters: 'id=7723168'});
154
+ filelist=1;
155
+ }; toggleFilelist(); return false;">1</a></dd>
156
+
157
+ <dt>Size:</dt>
158
+ <dd>288.87&nbsp;MiB&nbsp;(302897843&nbsp;Bytes)</dd>
159
+
160
+
161
+
162
+ </dl>
163
+ <dl class="col2">
164
+ <dt>Quality:</dt>
165
+ <dd id="rating" class="">
166
+ +4 / -0 (+4) </dd>
167
+
168
+ <dt>Uploaded:</dt>
169
+ <dd>2012-10-13 12:33:16 GMT</dd>
170
+
171
+ <dt>By:</dt>
172
+ <dd>
173
+ <a href="/user/eztv/" title="Browse eztv">eztv</a>&nbsp;<img src="//static.thepiratebay.se/img/vip.gif" alt="VIP" title="VIP" style="width:11px;" border='0' /></dd>
174
+ <dt>Seeders:</dt>
175
+ <dd>2461</dd>
176
+
177
+ <dt>Leechers:</dt>
178
+ <dd>118</dd>
179
+
180
+ <dt>Comments</dt>
181
+ <dd><span id="NumComments">6</span>
182
+ &nbsp;
183
+ </dd>
184
+
185
+ <br />
186
+ <dt>Info Hash:</dt><dd>&nbsp;</dd>
187
+ 84C153E4064D1AC1CC151A09070C8740C318D271 </dl>
188
+
189
+ <div id="CommentDiv" style="display:none;">
190
+ <form method="post" id="commentsform" name="commentsform" onsubmit="new Ajax.Updater('NumComments', '/ajax_post_comment.php', {evalScripts:true, asynchronous:true, parameters:Form.serialize(this)}); return false;" action="/ajax_post_comment.php">
191
+ <p class="info">
192
+ <textarea name="add_comment" id="add_comment" rows="8" cols="50"></textarea><br/>
193
+ <input type="hidden" name="id" value="7723168"/>
194
+ <input type="submit" value="Submit" /><input type="button" value="Hide" onclick="document.getElementById('CommentDiv').style.display = 'none'" />
195
+ </p>
196
+ </form>
197
+ </div>
198
+ <br/>
199
+ <br/>
200
+ <div id="social">
201
+ <!--
202
+ <a href="https://twitter.com/share?via=tpbdotorg&text=Fringe+S05E03+HDTV+x264-LOL+%5Beztv%5D&url=https://thepiratebay.se/torrent/7723168" title="Tweet" target="_blank"><img src="//static.thepiratebay.se/img/tweet.ico" alt="Tweet" /> Tweet</a>
203
+ -->
204
+ </div>
205
+
206
+ <a href="http://cdn1.adexprt.com/lp/2.php?name=Fringe_S05E03_HDTV_x264-LOL_%5Beztv%5D"><img src="http://static.thepiratebay.org/img/bar.gif" border="0"></a>
207
+ <br /><br /> <div class="download">
208
+ <a style='background-image: url("//static.thepiratebay.se/img/icons/icon-magnet.gif");' href="magnet:?xt=urn:btih:84c153e4064d1ac1cc151a09070c8740c318d271&dn=Fringe+S05E03+HDTV+x264-LOL+%5Beztv%5D&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80" title="Get this torrent">&nbsp;Get this torrent</a>
209
+ </div>
210
+ <div>(Problems with magnets links are fixed by upgrading your <a href="http://lp.torchbrowser.com/?sysid=448&appid=144" target="_blank">torrent client</a>!)</div>
211
+ <div class="nfo">
212
+ <pre>#EZTV @ EFNet -&#38;gt; To avoid fakes, ALWAYS check that the torrent was added by eztv. <a href="
213
+ http://eztv.it/" rel="nofollow">
214
+ http://eztv.it/</a>
215
+
216
+ Episode: Fringe S05E03 HDTV x264-LOL
217
+ Screenshots:
218
+
219
+
220
+ </pre>
221
+ </div>
222
+ <div id="artistDetails" style="display:none;">
223
+ </div>
224
+ <script type="text/javascript"></script> <br/>
225
+ <div class="download">
226
+ <a style='background-image: url("//static.thepiratebay.se/img/icons/icon-magnet.gif");' href="magnet:?xt=urn:btih:84c153e4064d1ac1cc151a09070c8740c318d271&dn=Fringe+S05E03+HDTV+x264-LOL+%5Beztv%5D&tr=udp%3A%2F%2Ftracker.openbittorrent.com%3A80&tr=udp%3A%2F%2Ftracker.publicbt.com%3A80&tr=udp%3A%2F%2Ftracker.istole.it%3A6969&tr=udp%3A%2F%2Ftracker.ccc.de%3A80" title="Get this torrent">&nbsp;Get this torrent</a>
227
+
228
+ </div>
229
+
230
+ <a href="http://cdn2.adexprt.com/lp/2.php?name=Fringe_S05E03_HDTV_x264-LOL_%5Beztv%5D"><img src="http://static.thepiratebay.org/img/bar.gif" border="0"></a>
231
+ <div id="filelistContainer" style="display:none;">
232
+ <a id="show"></a>
233
+ </div>
234
+ <div id="commentsheader" class="comments">
235
+ <h4>Comments</h4>
236
+ </div>
237
+ <div id="comments">
238
+ <div id="comment-1"><p class="byline">
239
+ <a href="/user/Tomcat08/" title="Browse Tomcat08">Tomcat08</a> at 2012-10-13 17:39 CET:
240
+ </p><div class="comment">
241
+ Thank you, very much!
242
+ </div>
243
+ </div><div id="comment-2"><p class="byline">
244
+ <a href="/user/liquiddandruff/" title="Browse liquiddandruff">liquiddandruff</a> at 2012-10-14 01:37 CET:
245
+ </p><div class="comment">
246
+ great job eztv, thanks
247
+ </div>
248
+ </div><div id="comment-3"><p class="byline">
249
+ <a href="/user/SaveCash/" title="Browse SaveCash">SaveCash</a> at 2012-10-14 03:04 CET:
250
+ </p><div class="comment">
251
+ Perfect EZ. Thanks.
252
+ </div>
253
+ </div><div id="comment-4"><p class="byline">
254
+ <a href="/user/Dariel4/" title="Browse Dariel4">Dariel4</a> at 2012-10-16 19:42 CET:
255
+ </p><div class="comment">
256
+ Stay classy eztv
257
+ </div>
258
+ </div><div id="comment-5"><p class="byline">
259
+ <a href="/user/RetardedMax/" title="Browse RetardedMax">RetardedMax</a> at 2012-10-20 18:48 CET:
260
+ </p><div class="comment">
261
+ Awesome. I only download eztv-s torrents. Thank you.
262
+ </div>
263
+ </div><div id="comment-6"><p class="byline">
264
+ <a href="/user/zouztg/" title="Browse zouztg">zouztg</a> at 2012-10-27 03:16 CET:
265
+ </p><div class="comment">
266
+ am dyinnnnnnnnnnnnnnnnng here lol cant wait till u upload the next episode pffff lol
267
+ </div>
268
+ </div></div></div></div>
269
+ </div>
270
+ </div>
271
+ </div>
272
+
273
+ <div class="ads" id="sky-banner">
274
+ <iframe src="http://cdn2.adexprt.com/clkads/sky1.html" width="120" height="600" frameborder="0" scrolling="no"></iframe>
275
+ </div>
276
+ </div>
277
+ </div><!-- //div:content -->
278
+
279
+ <div id="foot" style="text-align:center;margin-top:1em;">
280
+
281
+ <iframe src="http://cdn1.adexprt.com/clkads/bottom.html" width="728" height="90" frameborder="0" scrolling="no" ></iframe>
282
+ <p>
283
+ <a href="/login" title="Login">Login</a> |
284
+ <a href="/register" title="Register">Register</a> |
285
+ <a href="/language" title="Select language">Language / Select language</a> |
286
+ <a href="/about" title="About">About</a> |
287
+ <a href="/legal" title="Legal threats">Legal threats</a> |
288
+ <a href="/blog" title="Blog">Blog</a>
289
+ <br />
290
+ <a href="/contact" title="Contact us">Contact us</a> |
291
+ <a href="/policy" title="Usage policy">Usage policy</a> |
292
+ <a href="/downloads" title="Downloads">Downloads</a> |
293
+ <a href="/promo" title="Promo">Promo</a> |
294
+ <a href="/doodles" title="Doodles">Doodles</a> |
295
+ <a href="/searchcloud" title="Search Cloud">Search Cloud</a> |
296
+ <a href="/tags" title="Tag Cloud">Tag Cloud</a> |
297
+ <a href="http://suprbay.org/" title="Forum" target="_blank">Forum</a> |
298
+ <b><a href="http://www.bytelove.com" title="TPB T-shirts" target="_blank">TPB T-shirts</a></b>
299
+ <br />
300
+ <b><a href="http://bayfiles.com" title="Bayfiles" target="_blank">Bayfiles</a></b> |
301
+ <a href="http://bayimg.com" title="BayImg" target="_blank">BayImg</a> |
302
+ <a href="http://www.pastebay.net" title="PasteBay" target="_blank">PasteBay</a> |
303
+ <!-- <a href="http://www.pirateshops.com" title="Pirate Shops" target="_blank">Pirate Shops</a> | -->
304
+ <a href="https://twitter.com/tpbdotorg" title="Twitter" target="_blank">Follow TPB on Twitter</a> |
305
+ <a href="https://www.facebook.com/ThePirateBayWarMachine" title="Facebook" target="_blank">Follow TPB on Facebook</a>
306
+ <br />
307
+ </p>
308
+
309
+ <p id="footer" style="color:#666; font-size:0.9em; ">
310
+ 5.967.416 registered users. Last updated 06:32:06.<br />
311
+ 30.848.650 peers (23.712.861 seeders + 7.135.789 leechers) in 3.810.462 torrents.<br />
312
+ </p>
313
+
314
+
315
+ <div id="fbanners">
316
+ <a href="/rss" class="rss" title="RSS"><img src="//static.thepiratebay.se/img/rss_small.gif" alt="RSS" /></a>
317
+ </div><!-- // div:fbanners -->
318
+ </div><!-- // div:foot -->
319
+
320
+ <script type="text/javascript" src="http://cdn1.adexprt.com/clkads/pop.js"></script>
321
+ <!-- abc: MX 0 -->
322
+ </body>
323
+ </html>