|
|
|
|
@ -1,24 +1,22 @@ |
|
|
|
|
package com.fongmi.android.tv.api.loader; |
|
|
|
|
|
|
|
|
|
import android.content.Context; |
|
|
|
|
|
|
|
|
|
import com.fongmi.android.tv.App; |
|
|
|
|
import com.fongmi.chaquo.Loader; |
|
|
|
|
import com.github.catvod.crawler.Spider; |
|
|
|
|
import com.github.catvod.crawler.SpiderNull; |
|
|
|
|
|
|
|
|
|
import java.lang.reflect.Method; |
|
|
|
|
import java.util.Map; |
|
|
|
|
import java.util.concurrent.ConcurrentHashMap; |
|
|
|
|
|
|
|
|
|
public class PyLoader { |
|
|
|
|
|
|
|
|
|
private final ConcurrentHashMap<String, Spider> spiders; |
|
|
|
|
private Object loader; |
|
|
|
|
private final Loader loader; |
|
|
|
|
private String recent; |
|
|
|
|
|
|
|
|
|
public PyLoader() { |
|
|
|
|
spiders = new ConcurrentHashMap<>(); |
|
|
|
|
init(); |
|
|
|
|
loader = new Loader(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public void clear() { |
|
|
|
|
@ -30,18 +28,10 @@ public class PyLoader { |
|
|
|
|
this.recent = recent; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private void init() { |
|
|
|
|
try { |
|
|
|
|
loader = Class.forName("com.fongmi.chaquo.Loader").newInstance(); |
|
|
|
|
} catch (Throwable ignored) { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
public Spider getSpider(String key, String api, String ext) { |
|
|
|
|
try { |
|
|
|
|
if (spiders.containsKey(key)) return spiders.get(key); |
|
|
|
|
Method method = loader.getClass().getMethod("spider", Context.class, String.class); |
|
|
|
|
Spider spider = (Spider) method.invoke(loader, App.get(), api); |
|
|
|
|
Spider spider = loader.spider(App.get(), api); |
|
|
|
|
spider.init(App.get(), ext); |
|
|
|
|
spiders.put(key, spider); |
|
|
|
|
return spider; |
|
|
|
|
|