Add spider first setting

fongmi
FongMi 2 weeks ago
parent b944d33b05
commit ebcd4dd8d3
  1. 14
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/SettingDanmakuActivity.java
  2. 5
      app/src/leanback/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  3. 31
      app/src/leanback/res/layout/activity_setting_danmaku.xml
  4. 5
      app/src/main/java/com/fongmi/android/tv/player/PlayerManager.java
  5. 5
      app/src/main/java/com/fongmi/android/tv/player/engine/PlaySpec.java
  6. 8
      app/src/main/java/com/fongmi/android/tv/setting/DanmakuSetting.java
  7. 1
      app/src/main/res/values-zh-rCN/strings.xml
  8. 1
      app/src/main/res/values-zh-rTW/strings.xml
  9. 1
      app/src/main/res/values/strings.xml
  10. 5
      app/src/mobile/java/com/fongmi/android/tv/ui/activity/VideoActivity.java
  11. 14
      app/src/mobile/java/com/fongmi/android/tv/ui/fragment/SettingDanmakuFragment.java
  12. 29
      app/src/mobile/res/layout/fragment_setting_danmaku.xml

@ -42,6 +42,7 @@ public class SettingDanmakuActivity extends BaseActivity implements DanmakuCallb
mBinding.danmakuApiText.setText(getApiStatus());
mBinding.danmakuAutoText.setText(getSwitch(DanmakuSetting.isAuto()));
mBinding.danmakuLoadText.setText(getSwitch(DanmakuSetting.isLoad()));
mBinding.danmakuSpiderText.setText(getSwitch(DanmakuSetting.isSpiderFirst()));
updateApiVisibility();
}
@ -50,6 +51,7 @@ public class SettingDanmakuActivity extends BaseActivity implements DanmakuCallb
mBinding.danmakuApi.setOnClickListener(this::onDanmakuApi);
mBinding.danmakuAuto.setOnClickListener(this::setDanmakuAuto);
mBinding.danmakuLoad.setOnClickListener(this::setDanmakuLoad);
mBinding.danmakuSpider.setOnClickListener(this::setDanmakuSpider);
}
private void setDanmakuLoad(View view) {
@ -67,6 +69,12 @@ public class SettingDanmakuActivity extends BaseActivity implements DanmakuCallb
private void updateAutoVisibility() {
boolean show = DanmakuSetting.isLoad() && !TextUtils.isEmpty(DanmakuSetting.getEffectiveApiUrl());
mBinding.danmakuAuto.setVisibility(show ? View.VISIBLE : View.GONE);
updateSpiderVisibility();
}
private void updateSpiderVisibility() {
boolean show = DanmakuSetting.isLoad() && !TextUtils.isEmpty(DanmakuSetting.getEffectiveApiUrl()) && DanmakuSetting.isAuto();
mBinding.danmakuSpider.setVisibility(show ? View.VISIBLE : View.GONE);
}
private void onDanmakuApi(View view) {
@ -83,5 +91,11 @@ public class SettingDanmakuActivity extends BaseActivity implements DanmakuCallb
private void setDanmakuAuto(View view) {
DanmakuSetting.putAuto(!DanmakuSetting.isAuto());
mBinding.danmakuAutoText.setText(getSwitch(DanmakuSetting.isAuto()));
updateSpiderVisibility();
}
private void setDanmakuSpider(View view) {
DanmakuSetting.putSpiderFirst(!DanmakuSetting.isSpiderFirst());
mBinding.danmakuSpiderText.setText(getSwitch(DanmakuSetting.isSpiderFirst()));
}
}

@ -495,7 +495,10 @@ public class VideoActivity extends PlaybackActivity implements CustomKeyDownVod.
if (result.hasPosition()) mHistory.setPosition(result.getPosition());
mBinding.control.parse.setVisibility(isUseParse() ? View.VISIBLE : View.GONE);
startPlayer(getHistoryKey(), result, isUseParse(), getSite().getTimeout(), buildMetadata());
if (DanmakuApi.canSearch()) DanmakuApi.search(mHistory.getVodName(), getEpisode().getName(), danmaku -> player().setDanmaku(danmaku));
if (DanmakuApi.canSearch()) DanmakuApi.search(mHistory.getVodName(), getEpisode().getName(), danmaku -> {
if (DanmakuSetting.isSpiderFirst() && !result.getDanmaku().isEmpty()) player().addDanmaku(danmaku);
else player().setDanmaku(danmaku);
});
}
@Override

@ -104,5 +104,36 @@
tools:text="關" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/danmakuSpider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/selector_item"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="horizontal"
android:visibility="gone"
tools:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/danmaku_spider_first"
android:textColor="@color/white"
android:textSize="18sp" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/danmakuSpiderText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="18sp"
tools:text="關" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>

@ -366,6 +366,11 @@ public class PlayerManager implements ParseCallback {
else danmakuController.setDataSource(Uri.parse(item.getRealUrl()));
}
public void addDanmaku(Danmaku item) {
if (danmakuController == null || item.isEmpty()) return;
if (spec != null) spec.addDanmaku(item);
}
@Override
public void onParseSuccess(Map<String, String> headers, String url, String from) {
if (!TextUtils.isEmpty(from)) Notify.show(ResUtil.getString(R.string.parse_from, from));

@ -124,4 +124,9 @@ public class PlaySpec {
if (!item.isEmpty() && !danmakus.contains(item)) danmakus.add(0, item);
danmakus.forEach(danmaku -> danmaku.setSelected(danmaku.getUrl().equals(item.getUrl())));
}
public void addDanmaku(Danmaku item) {
if (danmakus == null) danmakus = new ArrayList<>();
if (!item.isEmpty() && !danmakus.contains(item)) danmakus.add(item);
}
}

@ -25,6 +25,14 @@ public class DanmakuSetting {
Prefers.put("danmaku_auto", auto);
}
public static boolean isSpiderFirst() {
return Prefers.getBoolean("danmaku_spider_first");
}
public static void putSpiderFirst(boolean spiderFirst) {
Prefers.put("danmaku_spider_first", spiderFirst);
}
public static String getApiUrl() {
return Prefers.getString("danmaku_api_url", "");
}

@ -156,6 +156,7 @@
<string name="danmaku_load">弹幕加载</string>
<string name="danmaku_api">搜索接口</string>
<string name="danmaku_auto_load">自动搜索</string>
<string name="danmaku_spider_first">爬虫优先</string>
<!-- Search -->
<string name="search_keyword">关键字…</string>

@ -156,6 +156,7 @@
<string name="danmaku_load">彈幕載入</string>
<string name="danmaku_api">搜尋接口</string>
<string name="danmaku_auto_load">自動搜尋</string>
<string name="danmaku_spider_first">爬蟲優先</string>
<!-- Search -->
<string name="search_keyword">關鍵字…</string>

@ -157,6 +157,7 @@
<string name="danmaku_load">Danmaku load</string>
<string name="danmaku_api">Search API</string>
<string name="danmaku_auto_load">Auto search</string>
<string name="danmaku_spider_first">Spider first</string>
<!-- Search -->
<string name="search_keyword">Keywords…</string>

@ -557,7 +557,10 @@ public class VideoActivity extends PlaybackActivity implements Clock.Callback, C
if (result.hasDesc()) setText(mBinding.content, 0, result.getDesc());
mBinding.control.parse.setVisibility(isUseParse() ? View.VISIBLE : View.GONE);
startPlayer(getHistoryKey(), result, isUseParse(), getSite().getTimeout(), buildMetadata());
if (DanmakuApi.canSearch()) DanmakuApi.search(mHistory.getVodName(), getEpisode().getName(), danmaku -> player().setDanmaku(danmaku));
if (DanmakuApi.canSearch()) DanmakuApi.search(mHistory.getVodName(), getEpisode().getName(), danmaku -> {
if (DanmakuSetting.isSpiderFirst() && !result.getDanmaku().isEmpty()) player().addDanmaku(danmaku);
else player().setDanmaku(danmaku);
});
}
@Override

@ -42,6 +42,7 @@ public class SettingDanmakuFragment extends BaseFragment implements DanmakuCallb
mBinding.danmakuApiText.setText(getApiStatus());
mBinding.danmakuAutoText.setText(getSwitch(DanmakuSetting.isAuto()));
mBinding.danmakuLoadText.setText(getSwitch(DanmakuSetting.isLoad()));
mBinding.danmakuSpiderText.setText(getSwitch(DanmakuSetting.isSpiderFirst()));
updateApiVisibility();
}
@ -50,6 +51,7 @@ public class SettingDanmakuFragment extends BaseFragment implements DanmakuCallb
mBinding.danmakuApi.setOnClickListener(this::onDanmakuApi);
mBinding.danmakuAuto.setOnClickListener(this::setDanmakuAuto);
mBinding.danmakuLoad.setOnClickListener(this::setDanmakuLoad);
mBinding.danmakuSpider.setOnClickListener(this::setDanmakuSpider);
}
private void setDanmakuLoad(View view) {
@ -67,6 +69,12 @@ public class SettingDanmakuFragment extends BaseFragment implements DanmakuCallb
private void updateAutoVisibility() {
boolean show = DanmakuSetting.isLoad() && !TextUtils.isEmpty(DanmakuSetting.getEffectiveApiUrl());
mBinding.danmakuAuto.setVisibility(show ? View.VISIBLE : View.GONE);
updateSpiderVisibility();
}
private void updateSpiderVisibility() {
boolean show = DanmakuSetting.isLoad() && !TextUtils.isEmpty(DanmakuSetting.getEffectiveApiUrl()) && DanmakuSetting.isAuto();
mBinding.danmakuSpider.setVisibility(show ? View.VISIBLE : View.GONE);
}
private void onDanmakuApi(View view) {
@ -83,6 +91,12 @@ public class SettingDanmakuFragment extends BaseFragment implements DanmakuCallb
private void setDanmakuAuto(View view) {
DanmakuSetting.putAuto(!DanmakuSetting.isAuto());
mBinding.danmakuAutoText.setText(getSwitch(DanmakuSetting.isAuto()));
updateSpiderVisibility();
}
private void setDanmakuSpider(View view) {
DanmakuSetting.putSpiderFirst(!DanmakuSetting.isSpiderFirst());
mBinding.danmakuSpiderText.setText(getSwitch(DanmakuSetting.isSpiderFirst()));
}
@Override

@ -113,6 +113,35 @@
tools:text="關" />
</androidx.appcompat.widget.LinearLayoutCompat>
<androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/danmakuSpider"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:background="@drawable/shape_item"
android:orientation="horizontal"
android:visibility="gone"
tools:visibility="visible">
<com.google.android.material.textview.MaterialTextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="16dp"
android:text="@string/danmaku_spider_first"
android:textColor="@color/white"
android:textSize="16sp" />
<com.google.android.material.textview.MaterialTextView
android:id="@+id/danmakuSpiderText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="end"
android:textColor="@color/white"
android:textSize="16sp"
tools:text="關" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.core.widget.NestedScrollView>
</androidx.appcompat.widget.LinearLayoutCompat>

Loading…
Cancel
Save