七十二家房客-观看平台v161

This commit is contained in:
云上贵猪 2026-03-12 13:32:12 +08:00
parent 96a7dae310
commit f3a5c1e9c9
2 changed files with 70 additions and 24 deletions

View File

@ -1,5 +1,5 @@
{
"running": false,
"lastMessage": "自动采集完成",
"updatedAt": "2026-03-12T05:01:28.586Z"
"lastMessage": "采集启动失败: page.goto: Target page, context or browser has been closed\nCall log:\n\u001b[2m - navigating to \"https://www1.gdtv.cn/tvColumn/768\", waiting until \"domcontentloaded\"\u001b[22m\n",
"updatedAt": "2026-03-12T05:16:36.500Z"
}

View File

@ -4,44 +4,67 @@
<div class="col-12">
<div class="top-card card border-0 shadow-sm">
<div class="card-body d-flex flex-wrap justify-content-between align-items-center gap-3">
<div>
<h2 class="mb-2 page-title">{{ columnInfo.name || '七十二家房客播放器' }}</h2>
<div class="page-subtitle">
{{ allEpisodeList.length }} 最后更新{{ updatedAtText }}
</div>
</div>
<div class="d-flex flex-wrap gap-2">
<div class="card-body d-flex flex-wrap gap-2 align-items-center">
<button class="btn btn-outline-dark btn-sm" @click="playPrevEpisode" :disabled="!hasPrevEpisode">
上一集
</button>
<button class="btn btn-outline-dark btn-sm" @click="playNextEpisode" :disabled="!hasNextEpisode">
下一集
</button>
<div class="form-check form-switch ms-2">
<input id="autoNext" v-model="autoNext" class="form-check-input" type="checkbox" />
<label class="form-check-label" for="autoNext">自动下一集</label>
</div>
<select v-model="playMode" class="form-select form-select-sm mode-select">
<option value="asc">顺序播放</option>
<option value="desc">倒序播放</option>
</select>
</div>
<button class="btn btn-dark btn-sm px-3" @click="handleRefresh">刷新数据</button>
<button class="btn btn-outline-dark btn-sm px-3" @click="openGitRepo">git仓库v1.6</button>
<button class="btn btn-warning btn-sm px-3" @click="openSource">数据来源荔枝网</button>
</div>
</div>
</div>
</div>
<div class="col-12">
<div class="toolbar-card card border-0 shadow-sm">
<div class="card-body d-flex flex-wrap gap-2 align-items-center">
<button class="btn btn-outline-dark btn-sm" @click="playPrevEpisode" :disabled="!hasPrevEpisode">
上一集
</button>
<!--<div class="col-12">-->
<!-- <div class="toolbar-card card border-0 shadow-sm">-->
<!-- <div class="card-body d-flex flex-wrap gap-2 align-items-center">-->
<!-- <button class="btn btn-outline-dark btn-sm" @click="playPrevEpisode" :disabled="!hasPrevEpisode">-->
<!-- 上一集-->
<!-- </button>-->
<button class="btn btn-outline-dark btn-sm" @click="playNextEpisode" :disabled="!hasNextEpisode">
下一集
</button>
<!-- <button class="btn btn-outline-dark btn-sm" @click="playNextEpisode" :disabled="!hasNextEpisode">-->
<!-- 下一集-->
<!-- </button>-->
<div class="form-check form-switch ms-2">
<input id="autoNext" v-model="autoNext" class="form-check-input" type="checkbox" />
<label class="form-check-label" for="autoNext">自动下一集</label>
</div>
<!-- <div class="form-check form-switch ms-2">-->
<!-- <input id="autoNext" v-model="autoNext" class="form-check-input" type="checkbox" />-->
<!-- <label class="form-check-label" for="autoNext">自动下一集</label>-->
<!-- </div>-->
<select v-model="playMode" class="form-select form-select-sm mode-select">
<option value="asc">顺序播放</option>
<option value="desc">倒序播放</option>
</select>
</div>
</div>
</div>
<!-- <select v-model="playMode" class="form-select form-select-sm mode-select">-->
<!-- <option value="asc">顺序播放</option>-->
<!-- <option value="desc">倒序播放</option>-->
<!-- </select>-->
<!-- </div>-->
<!-- </div>-->
<!--</div>-->
<div class="col-xl-8 col-lg-7">
<div class="content-card card border-0 shadow-sm">
@ -73,7 +96,7 @@
@select="playEpisode"
/>
<QishierProjectLinks />
<!--<QishierProjectLinks />-->
</div>
</div>
</div>
@ -112,6 +135,8 @@ const errorMsg = ref('')
const updatedAt = ref<string | null>(null)
const years = ref<number[]>([])
const selectedYear = ref('all')
const months = ref<number[]>([])
const selectedMonth = ref('all')
const autoNext = ref(true)
const playMode = ref<'asc' | 'desc'>('asc')
@ -126,7 +151,16 @@ const displayEpisodeList = computed(() => {
if (selectedYear.value !== 'all') {
const year = Number(selectedYear.value)
list = list.filter(item => new Date(item.releasedAt).getFullYear() === year)
list = list.filter(
item => new Date(item.releasedAt).getFullYear() === year
)
}
if (selectedMonth.value !== 'all') {
const month = Number(selectedMonth.value)
list = list.filter(
item => new Date(item.releasedAt).getMonth() + 1 === month
)
}
if (playMode.value === 'desc') {
@ -167,6 +201,10 @@ function getEpisodeYear(item: EpisodeData) {
return String(new Date(item.releasedAt).getFullYear())
}
function openGitRepo() {
window.open('https://git.a-hxin.cn/ahxin/72QishierPlayer.git', '_blank')
}
async function fetchAllEpisodes() {
try {
errorMsg.value = ''
@ -183,6 +221,14 @@ async function fetchAllEpisodes() {
return
}
months.value = [
...new Set(
allEpisodeList.value.map(item =>
new Date(item.releasedAt).getMonth() + 1
)
)
].sort((a, b) => a - b)
const savedEpisodeId = getCurrentEpisodeId()
const savedEpisode = allEpisodeList.value.find(item => item.id === savedEpisodeId)