七十二家房客-观看平台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, "running": false,
"lastMessage": "自动采集完成", "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:01:28.586Z" "updatedAt": "2026-03-12T05:16:36.500Z"
} }

View File

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