Add blacklist filter for certain sizes
[rhynodge.git] / src / main / java / net / pterodactylus / rhynodge / watchers / PirateBayWatcher.java
index e390fd4..1a62e80 100644 (file)
@@ -17,6 +17,8 @@
 
 package net.pterodactylus.rhynodge.watchers;
 
+import static net.pterodactylus.rhynodge.filters.BlacklistFilter.createDefaultBlacklistFilter;
+
 import java.io.UnsupportedEncodingException;
 import java.net.URLEncoder;
 import java.util.List;
@@ -24,15 +26,18 @@ import java.util.List;
 import net.pterodactylus.rhynodge.Filter;
 import net.pterodactylus.rhynodge.Query;
 import net.pterodactylus.rhynodge.Trigger;
+import net.pterodactylus.rhynodge.Watcher;
 import net.pterodactylus.rhynodge.filters.HtmlFilter;
+import net.pterodactylus.rhynodge.filters.SizeBlacklistFilter;
 import net.pterodactylus.rhynodge.filters.torrents.PirateBayFilter;
+import net.pterodactylus.rhynodge.queries.FallbackQuery;
 import net.pterodactylus.rhynodge.queries.HttpQuery;
 import net.pterodactylus.rhynodge.triggers.NewTorrentTrigger;
 
 import com.google.common.collect.ImmutableList;
 
 /**
- * {@Watcher} implementation that watches The Pirate Bay for new files.
+ * {@link Watcher} implementation that watches The Pirate Bay for new files.
  *
  * @author <a href="mailto:bombe@pterodactylus.net">David ‘Bombe’ Roden</a>
  */
@@ -44,8 +49,16 @@ public class PirateBayWatcher extends DefaultWatcher {
         * @param searchTerms
         *            The terms to search for
         */
-       public PirateBayWatcher(String searchTerms) {
-               super(createHttpQuery(searchTerms), createFilters(), createTrigger());
+       public PirateBayWatcher(String searchTerms, String proxy) {
+               super(createHttpQuery(searchTerms, extractProxyHost(proxy), extractProxyPort(proxy)), createFilters(), createTrigger());
+       }
+
+       private static String extractProxyHost(String proxy) {
+               return proxy.split(":")[0];
+       }
+
+       private static int extractProxyPort(String proxy) {
+               return Integer.valueOf(proxy.split(":")[1]);
        }
 
        //
@@ -59,9 +72,12 @@ public class PirateBayWatcher extends DefaultWatcher {
         *            The search terms of the query
         * @return The query of the watcher
         */
-       private static Query createHttpQuery(String searchTerms) {
+       private static Query createHttpQuery(String searchTerms, String proxyHost, int proxyPort) {
                try {
-                       return new HttpQuery("http://thepiratebay.se/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0");
+                       HttpQuery hiddenServiceQuery = new HttpQuery("http://uj3wazyk5u4hnvtk.onion/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0", proxyHost, proxyPort);
+                       HttpQuery torQuery = new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0", proxyHost, proxyPort);
+                       HttpQuery plainInternetQuery = new HttpQuery("http://thepiratebay.org/search/" + URLEncoder.encode(searchTerms, "UTF-8") + "/0/3/0");
+                       return new FallbackQuery(hiddenServiceQuery, torQuery, plainInternetQuery);
                } catch (UnsupportedEncodingException uee1) {
                        /* will not happen. */
                        return null;
@@ -74,7 +90,7 @@ public class PirateBayWatcher extends DefaultWatcher {
         * @return The filters of the watcher
         */
        private static List<Filter> createFilters() {
-               return ImmutableList.of(new HtmlFilter(), new PirateBayFilter());
+               return ImmutableList.of(new HtmlFilter(), new PirateBayFilter(), createDefaultBlacklistFilter(), new SizeBlacklistFilter());
        }
 
        /**