diff --git a/src/views/discover/TorrentRowListView.vue b/src/views/discover/TorrentRowListView.vue
index 7d55be3b..fd34b8eb 100644
--- a/src/views/discover/TorrentRowListView.vue
+++ b/src/views/discover/TorrentRowListView.vue
@@ -71,6 +71,42 @@ function initOptions(data: Context) {
optionValue(resolutionFilterOptions.value, meta_info?.resource_pix)
}
+
+// 对季过滤选项进行排序
+const sortSeasonFilterOptions = computed(() => {
+ return seasonFilterOptions.value.sort((a, b) => {
+ // 按季,集降序排序
+ const parseSeasonEpisode = (str: string) => {
+ const seasonRangeMatch = str.match(/S(\d+)(?:-S(\d+))?/)
+ const episodeRangeMatch = str.match(/E(\d+)(?:-E(\d+))?/)
+ return {
+ seasonStart: seasonRangeMatch?.[1] ? parseInt(seasonRangeMatch[1]) : 0,
+ seasonEnd: seasonRangeMatch?.[2] ? parseInt(seasonRangeMatch[2]) : 0,
+ episodeStart: episodeRangeMatch?.[1] ? parseInt(episodeRangeMatch[1]) : 0,
+ episodeEnd: episodeRangeMatch?.[2] ? parseInt(episodeRangeMatch[2]) : 0,
+ }
+ }
+ const parsedA = parseSeasonEpisode(a)
+ const parsedB = parseSeasonEpisode(b)
+ // 先按季降序排序
+ if (parsedB.seasonStart !== parsedA.seasonStart) {
+ return parsedB.seasonStart - parsedA.seasonStart
+ }
+ if (parsedB.seasonEnd !== parsedA.seasonEnd) {
+ return parsedB.seasonEnd - parsedA.seasonEnd
+ }
+ // 按集降序排序
+ if (parsedB.episodeStart !== parsedA.episodeStart) {
+ return parsedB.episodeStart - parsedA.episodeStart
+ }
+ if (parsedB.episodeEnd !== parsedA.episodeEnd) {
+ return parsedB.episodeEnd - parsedA.episodeEnd
+ }
+ // 兜底
+ return b.localeCompare(a)
+ })
+})
+
// 排序
watchEffect(() => {
const list = dataList.value
@@ -141,7 +177,7 @@ onMounted(() => {
"
>
-
+
@@ -261,7 +297,7 @@ onMounted(() => {