diff options
Diffstat (limited to 'app/src/main/java/de/danoeh/antennapod/discovery')
6 files changed, 42 insertions, 9 deletions
diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/CombinedSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/CombinedSearcher.java index 287e20964..6c2a87c12 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/CombinedSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/CombinedSearcher.java @@ -1,8 +1,7 @@ package de.danoeh.antennapod.discovery; -import android.content.Context; +import android.text.TextUtils; import android.util.Log; -import android.util.Pair; import io.reactivex.Single; import io.reactivex.SingleOnSubscribe; import io.reactivex.android.schedulers.AndroidSchedulers; @@ -19,7 +18,7 @@ import java.util.concurrent.CountDownLatch; public class CombinedSearcher implements PodcastSearcher { private static final String TAG = "CombinedSearcher"; - public CombinedSearcher(Context context) { + public CombinedSearcher() { } public Single<List<PodcastSearchResult>> search(String query) { @@ -31,7 +30,7 @@ public class CombinedSearcher implements PodcastSearcher { PodcastSearcherRegistry.SearcherInfo searchProviderInfo = PodcastSearcherRegistry.getSearchProviders().get(i); PodcastSearcher searcher = searchProviderInfo.searcher; - if (searchProviderInfo.weight <= 0.00001f) { + if (searchProviderInfo.weight <= 0.00001f || searcher.getClass() == CombinedSearcher.class) { latch.countDown(); continue; } @@ -102,4 +101,18 @@ public class CombinedSearcher implements PodcastSearcher { public boolean urlNeedsLookup(String url) { return PodcastSearcherRegistry.urlNeedsLookup(url); } + + @Override + public String getName() { + ArrayList<String> names = new ArrayList<>(); + for (int i = 0; i < PodcastSearcherRegistry.getSearchProviders().size(); i++) { + PodcastSearcherRegistry.SearcherInfo searchProviderInfo + = PodcastSearcherRegistry.getSearchProviders().get(i); + PodcastSearcher searcher = searchProviderInfo.searcher; + if (searchProviderInfo.weight > 0.00001f && searcher.getClass() != CombinedSearcher.class) { + names.add(searcher.getName()); + } + } + return TextUtils.join(", ", names); + } } diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java index 856ca8569..5a93e6530 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/FyydPodcastSearcher.java @@ -45,4 +45,9 @@ public class FyydPodcastSearcher implements PodcastSearcher { public boolean urlNeedsLookup(String url) { return false; } + + @Override + public String getName() { + return "Fyyd"; + } } diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/GpodnetPodcastSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/GpodnetPodcastSearcher.java index 46b3e5775..53237579f 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/GpodnetPodcastSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/GpodnetPodcastSearcher.java @@ -43,4 +43,9 @@ public class GpodnetPodcastSearcher implements PodcastSearcher { public boolean urlNeedsLookup(String url) { return false; } + + @Override + public String getName() { + return "Gpodder.net"; + } } diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/ItunesPodcastSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/ItunesPodcastSearcher.java index ed1efaf73..796ec556f 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/ItunesPodcastSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/ItunesPodcastSearcher.java @@ -96,4 +96,9 @@ public class ItunesPodcastSearcher implements PodcastSearcher { public boolean urlNeedsLookup(String url) { return url.contains("itunes.apple.com"); } + + @Override + public String getName() { + return "iTunes"; + } } diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcher.java b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcher.java index 3312e0d57..eeebd2ebf 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcher.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcher.java @@ -11,4 +11,6 @@ public interface PodcastSearcher { Single<String> lookupUrl(String resultUrl); boolean urlNeedsLookup(String resultUrl); + + String getName(); } diff --git a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcherRegistry.java b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcherRegistry.java index 32fa96d5d..3f738424b 100644 --- a/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcherRegistry.java +++ b/app/src/main/java/de/danoeh/antennapod/discovery/PodcastSearcherRegistry.java @@ -15,8 +15,9 @@ public class PodcastSearcherRegistry { public static List<SearcherInfo> getSearchProviders() { if (searchProviders == null) { searchProviders = new ArrayList<>(); - searchProviders.add(new SearcherInfo(new FyydPodcastSearcher(), 1.f)); + searchProviders.add(new SearcherInfo(new CombinedSearcher(), 1.f)); searchProviders.add(new SearcherInfo(new ItunesPodcastSearcher(), 1.f)); + searchProviders.add(new SearcherInfo(new FyydPodcastSearcher(), 1.f)); searchProviders.add(new SearcherInfo(new GpodnetPodcastSearcher(), 0.0f)); } return searchProviders; @@ -24,7 +25,8 @@ public class PodcastSearcherRegistry { public static Single<String> lookupUrl(String url) { for (PodcastSearcherRegistry.SearcherInfo searchProviderInfo : getSearchProviders()) { - if (searchProviderInfo.searcher.urlNeedsLookup(url)) { + if (searchProviderInfo.searcher.getClass() != CombinedSearcher.class + && searchProviderInfo.searcher.urlNeedsLookup(url)) { return searchProviderInfo.searcher.lookupUrl(url); } } @@ -33,7 +35,8 @@ public class PodcastSearcherRegistry { public static boolean urlNeedsLookup(String url) { for (PodcastSearcherRegistry.SearcherInfo searchProviderInfo : getSearchProviders()) { - if (searchProviderInfo.searcher.urlNeedsLookup(url)) { + if (searchProviderInfo.searcher.getClass() != CombinedSearcher.class + && searchProviderInfo.searcher.urlNeedsLookup(url)) { return true; } } @@ -41,8 +44,8 @@ public class PodcastSearcherRegistry { } public static class SearcherInfo { - final PodcastSearcher searcher; - final float weight; + public final PodcastSearcher searcher; + public final float weight; public SearcherInfo(PodcastSearcher searcher, float weight) { this.searcher = searcher; |