blob: 16c5548be3187abacdfed797107d94c9f51f4e7c (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
package de.danoeh.antennapod.discovery;
import io.reactivex.Single;
import java.util.ArrayList;
import java.util.List;
public class PodcastSearcherRegistry {
private static List<SearcherInfo> searchProviders;
private PodcastSearcherRegistry() {
}
public static List<SearcherInfo> getSearchProviders() {
if (searchProviders == null) {
searchProviders = new ArrayList<>();
searchProviders.add(new SearcherInfo(new CombinedSearcher(), 1.0f));
searchProviders.add(new SearcherInfo(new GpodnetPodcastSearcher(), 0.0f));
searchProviders.add(new SearcherInfo(new FyydPodcastSearcher(), 1.0f));
searchProviders.add(new SearcherInfo(new ItunesPodcastSearcher(), 1.0f));
searchProviders.add(new SearcherInfo(new PodcastIndexPodcastSearcher(), 1.0f));
}
return searchProviders;
}
public static Single<String> lookupUrl(String url) {
for (PodcastSearcherRegistry.SearcherInfo searchProviderInfo : getSearchProviders()) {
if (searchProviderInfo.searcher.getClass() != CombinedSearcher.class
&& searchProviderInfo.searcher.urlNeedsLookup(url)) {
return searchProviderInfo.searcher.lookupUrl(url);
}
}
return Single.just(url);
}
public static boolean urlNeedsLookup(String url) {
for (PodcastSearcherRegistry.SearcherInfo searchProviderInfo : getSearchProviders()) {
if (searchProviderInfo.searcher.getClass() != CombinedSearcher.class
&& searchProviderInfo.searcher.urlNeedsLookup(url)) {
return true;
}
}
return false;
}
public static class SearcherInfo {
public final PodcastSearcher searcher;
public final float weight;
public SearcherInfo(PodcastSearcher searcher, float weight) {
this.searcher = searcher;
this.weight = weight;
}
}
}
|