Files
PiliPlus/lib/pages/setting/models/recommend_settings.dart
My-Responsitories 9d94c72e95 tweaks (#2426)
* opt: danmaku weight

* opt: cache clean

* opt: level img

* opt: play icon

* opt: svg big-vip

* opt: webview ua

* opt: simple dialog

* feat: export vtt

* tweak

* opt: mapIndexed

* feat: more subtitle

* refa: settings page

* feat: codec list options

* drawPath

Signed-off-by: dom <githubaccount56556@proton.me>

* custom dialog option

Signed-off-by: dom <githubaccount56556@proton.me>

* update

Signed-off-by: dom <githubaccount56556@proton.me>

* Revert "drawPath"

This reverts commit e8a4b19f0f.

* opt: _initStreamIndex

* fix: avoid gap

* fix: scale [skip ci]

* fix: hide repost menu not login

* tweaks

Signed-off-by: dom <githubaccount56556@proton.me>

---------

Co-authored-by: dom <githubaccount56556@proton.me>
2026-06-26 10:51:41 +08:00

104 lines
3.4 KiB
Dart
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import 'package:PiliPlus/http/video.dart';
import 'package:PiliPlus/pages/rcmd/controller.dart';
import 'package:PiliPlus/pages/setting/models/model.dart';
import 'package:PiliPlus/utils/recommend_filter.dart';
import 'package:PiliPlus/utils/storage_key.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:get/get.dart';
List<SettingsModel> get recommendSettings => [
const SwitchModel(
title: '首页使用app端推荐',
subtitle: '若web端推荐不太符合预期可尝试切换至app端推荐',
leading: Icon(Icons.model_training_outlined),
setKey: SettingBoxKey.appRcmd,
defaultVal: true,
needReboot: true,
),
SwitchModel(
title: '保留首页推荐刷新',
subtitle: '下拉刷新时保留上次内容',
leading: const Icon(Icons.refresh),
setKey: SettingBoxKey.enableSaveLastData,
defaultVal: true,
onChanged: (value) {
try {
Get.find<RcmdController>()
..enableSaveLastData = value
..lastRefreshAt = null;
} catch (e) {
if (kDebugMode) debugPrint('$e');
}
},
),
SwitchModel(
title: '显示上次看到位置提示',
subtitle: '保留上次推荐时,在上次刷新位置显示提示',
leading: const Icon(Icons.tips_and_updates_outlined),
setKey: SettingBoxKey.savedRcmdTip,
defaultVal: true,
onChanged: (value) {
try {
Get.find<RcmdController>()
..savedRcmdTip = value
..lastRefreshAt = null;
} catch (e) {
if (kDebugMode) debugPrint('$e');
}
},
),
getVideoFilterSelectModel(
title: '点赞率',
suffix: '%',
key: SettingBoxKey.minLikeRatioForRecommend,
values: [0, 1, 2, 3, 4],
onChanged: (value) => RecommendFilter.minLikeRatioForRecommend = value,
),
getBanWordModel(
title: '标题关键词过滤',
key: SettingBoxKey.banWordForRecommend,
onChanged: (value) {
RecommendFilter.rcmdRegExp = value;
RecommendFilter.enableFilter = value.pattern.isNotEmpty;
},
),
getBanWordModel(
title: 'App推荐/热门/排行榜: 视频分区关键词过滤',
key: SettingBoxKey.banWordForZone,
onChanged: (value) {
VideoHttp.zoneRegExp = value;
VideoHttp.enableFilter = value.pattern.isNotEmpty;
},
),
getVideoFilterSelectModel(
title: '视频时长',
suffix: 's',
key: SettingBoxKey.minDurationForRcmd,
values: [0, 30, 60, 90, 120],
onChanged: (value) => RecommendFilter.minDurationForRcmd = value,
),
getVideoFilterSelectModel(
title: '播放量',
key: SettingBoxKey.minPlayForRcmd,
values: [0, 50, 100, 500, 1000],
onChanged: (value) => RecommendFilter.minPlayForRcmd = value,
),
SwitchModel(
title: '已关注UP豁免推荐过滤',
subtitle: '推荐中已关注用户发布的内容不会被过滤',
leading: const Icon(Icons.favorite_border_outlined),
setKey: SettingBoxKey.exemptFilterForFollowed,
defaultVal: true,
onChanged: (value) => RecommendFilter.exemptFilterForFollowed = value,
),
SwitchModel(
title: '过滤器也应用于详情页相关视频',
subtitle: '其它如热门视频、搜索等均不受过滤器影响无法豁免相关视频中的已关注UP',
leading: const Icon(Icons.explore_outlined),
setKey: SettingBoxKey.applyFilterToRelatedVideos,
defaultVal: true,
onChanged: (value) => RecommendFilter.applyFilterToRelatedVideos = value,
),
];