feat: 给试看的资源添加提示

This commit is contained in:
lanyeeee
2026-02-22 04:21:09 +08:00
parent a45a85ee56
commit 04cc05856c
3 changed files with 18 additions and 6 deletions
@@ -67,6 +67,7 @@ pub struct DownloadProgress {
pub create_ts: u64,
pub completed_ts: Option<u64>,
pub is_drm: bool,
pub is_preview: bool,
}
impl DownloadProgress {
@@ -140,6 +141,7 @@ impl DownloadProgress {
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
Ok(progress)
@@ -188,6 +190,7 @@ impl DownloadProgress {
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
Ok(progress)
@@ -336,6 +339,8 @@ impl DownloadProgress {
.await
.context("获取视频链接失败")?;
self.is_preview = !media_url.durl.is_empty() && media_url.dash.video.is_empty();
if video_selected && !video_completed {
// 如果视频被选中且未完成,则准备视频任务
self.video_task.prepare_normal(app, &media_url).await?;
@@ -352,6 +357,8 @@ impl DownloadProgress {
.await
.context("获取番剧视频链接失败")?;
self.is_preview = media_url.is_preview != 0;
if video_selected && !video_completed {
// 如果视频被选中且未完成,则准备视频任务
self.video_task.prepare_bangumi(app, &media_url).await?;
@@ -372,6 +379,7 @@ impl DownloadProgress {
.context("获取课程视频链接失败")?;
self.is_drm = media_url.is_drm;
self.is_preview = media_url.is_preview != 0;
if video_selected && !video_completed {
// 如果视频被选中且未完成,则准备视频任务
@@ -522,6 +530,7 @@ fn create_normal_progresses_for_single(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
return Ok(vec![progress]);
@@ -559,6 +568,7 @@ fn create_normal_progresses_for_single(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
return Ok(vec![progress]);
@@ -596,6 +606,7 @@ fn create_normal_progresses_for_single(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
progresses.push(progress);
@@ -665,6 +676,7 @@ fn create_normal_progresses_for_season(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
return Ok(vec![progress]);
@@ -702,6 +714,7 @@ fn create_normal_progresses_for_season(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
return Ok(vec![progress]);
@@ -740,6 +753,7 @@ fn create_normal_progresses_for_season(
create_ts,
completed_ts: None,
is_drm: false,
is_preview: false,
};
progresses.push(progress);
+1 -1
View File
@@ -284,7 +284,7 @@ export type Dimension = { width: number; height: number; rotate: number }
export type DimensionInBangumi = { height: number; rotate: number; width: number }
export type DimensionInWatchLater = { width: number; height: number; rotate: number }
export type DownloadEvent = { event: "Speed"; data: { speed: string } } | { event: "TaskCreate"; data: { state: DownloadTaskState; progress: DownloadProgress } } | { event: "TaskStateUpdate"; data: { task_id: string; state: DownloadTaskState } } | { event: "TaskSleeping"; data: { task_id: string; remaining_sec: number } } | { event: "TaskDelete"; data: { task_id: string } } | { event: "ProgressPreparing"; data: { task_id: string } } | { event: "ProgressUpdate"; data: { progress: DownloadProgress } }
export type DownloadProgress = { task_id: string; episode_type: EpisodeType; aid: number; bvid: string | null; cid: number; ep_id: number | null; duration: number; pub_ts: number; collection_title: string; part_title: string | null; part_order: number | null; episode_title: string; episode_order: number; up_name: string | null; up_uid: number | null; up_avatar: string | null; episode_dir: string; filename: string; video_task: VideoTask; audio_task: AudioTask; video_process_task: VideoProcessTask; subtitle_task: SubtitleTask; danmaku_task: DanmakuTask; cover_task: CoverTask; nfo_task: NfoTask; json_task: JsonTask; create_ts: number; completed_ts: number | null; is_drm: boolean }
export type DownloadProgress = { task_id: string; episode_type: EpisodeType; aid: number; bvid: string | null; cid: number; ep_id: number | null; duration: number; pub_ts: number; collection_title: string; part_title: string | null; part_order: number | null; episode_title: string; episode_order: number; up_name: string | null; up_uid: number | null; up_avatar: string | null; episode_dir: string; filename: string; video_task: VideoTask; audio_task: AudioTask; video_process_task: VideoProcessTask; subtitle_task: SubtitleTask; danmaku_task: DanmakuTask; cover_task: CoverTask; nfo_task: NfoTask; json_task: JsonTask; create_ts: number; completed_ts: number | null; is_drm: boolean; is_preview: boolean }
export type DownloadTaskState = "Pending" | "Downloading" | "Paused" | "Completed" | "Failed"
export type Ed = { end: number; start: number }
export type EpInBangumi = { aid: number; badge: string; badge_info: BadgeInfoInBangumi; badge_type: number | null; bvid: string | null; cid: number; cover: string; dimension: DimensionInBangumi | null; duration: number | null; enable_vt: boolean; ep_id: number; from: string | null; id: number; is_view_hide: boolean; link: string; link_type: string | null; long_title: string | null; pub_time: number; pv: number; release_date: string | null; rights: RightsInBangumiEp | null; section_type: number; share_copy: string | null; share_url: string | null; short_link: string | null; showDrmLoginDialog: boolean; show_title: string | null; skip: Skip | null; status: number; subtitle: string | null; title: string; vid: string | null; icon_font: IconFont | null }
@@ -161,11 +161,9 @@ function handleModifyClick() {
:key="p.cover_task.url"
alt=""
draggable="false" />
<div
v-if="p.is_drm"
class="absolute top-3 left-3 z-1 bg-red-5 text-white px-1 rounded"
title="该资源受版权保护(DRM)">
🔒DRM
<div class="absolute top-3 left-3 z-1 flex gap-2">
<div v-if="p.is_drm" class="bg-red-5 text-white px-1 rounded" title="该资源受版权保护(DRM)">🔒DRM</div>
<div v-if="p.is_preview" class="bg-[#ff6699] text-white px-1 rounded" title="该资源为试看部分">试看</div>
</div>
</div>