mirror of
https://github.com/the1812/Bilibili-Evolved.git
synced 2025-11-04 21:22:45 +08:00
1 line
11 KiB
JavaScript
1 line
11 KiB
JavaScript
(()=>(e,i)=>{const n=`<div class=bangumi-timeline-container><div class=area-header>时间表</div><div class=bangumi-timeline><div class=timeline-day v-for="t of timeline":key=t.date><div class=date-container :class="{today: t.isToday}"@click=moveTimeline><div class=icon :class="['day-of-week-' + t.dayOfWeek]"></div><div class=date>{{t.date}}</div><div class=day-of-week>{{t.dayOfWeekText}}</div></div><div class=empty-day :class="{alt: t.isToday}"v-if="Object.entries(t.bangumis).length === 0"></div><div class=time-container v-for="[time, bangumis] of Object.entries(t.bangumis)":key=time><div class=time :class="{'recent': t.isToday && recentTime.includes(time)}"><icon type=mdi icon=clock-fast></icon>{{time}}</div><a class=bangumi-item v-for="b of bangumis":key=b.url :class="{delay: b.delay}":href=b.url target=_blank><div class=cover-container><dpi-img :size=72 :src=b.squareCoverUrl></dpi-img></div><div class=title>{{b.title}}</div><div class=ep-title><icon type=mdi icon=heart-outline title=已追番 v-if=b.follow></icon>{{b.epTitle}}</div></a></div></div></div></div>`;i.applyStyleFromText(`.simple-home .bangumi-timeline-container{width:100%}.simple-home .bangumi-timeline-container .bangumi-timeline{display:flex;align-items:flex-start;overflow:auto;scrollbar-width:none!important;scroll-behavior:smooth;scroll-snap-type:x mandatory;--column-count:1;--column-width:250px;--column-gap:24px;width:calc(var(--column-count) * (var(--column-width) + var(--column-gap)) - .5 * var(--column-gap))}.simple-home .bangumi-timeline-container .bangumi-timeline::-webkit-scrollbar{height:0!important;width:0!important}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day{scroll-snap-align:start;width:var(--column-width);max-height:calc(var(--total-height) - 32px);overflow:auto;flex:0 0 auto;padding-bottom:16px;scroll-behavior:smooth;scrollbar-width:none!important}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day::-webkit-scrollbar{height:0!important;width:0!important}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container{display:grid;grid-template:"icon date" 1fr "icon dow" 1fr/auto 1fr;grid-column-gap:8px;column-gap:8px;height:60px;padding-bottom:12px;cursor:pointer;position:sticky;top:0;z-index:1;background-color:#f4f4f4}body.dark .simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container{background-color:#181818}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon{grid-area:icon;justify-self:center;align-self:center;background-image:url(//s1.hdslb.com/bfs/static/bangumi-timeline/asserts/icons.png);background-size:247px 663px;width:38px;height:36px;background-position-x:-146px;filter:brightness(.5)}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-1{background-position-y:-36px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-2{background-position-y:-108px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-3{background-position-y:-180px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-4{background-position-y:-252px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-5{background-position-y:-324px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-6{background-position-y:-396px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon.day-of-week-7{background-position-y:-468px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .date{grid-area:date;align-self:end;opacity:.75}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .day-of-week{grid-area:dow;align-self:start;font-weight:700;font-size:15px;opacity:.75}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container.today .icon{width:50px;height:48px;background-position-x:-56px;filter:none}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container.today .date{font-size:14px;opacity:1}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container.today .day-of-week{font-size:18px;opacity:1}body.dark .simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container .icon{filter:brightness(.8)}body.dark .simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .date-container.today .icon{filter:invert(1)}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .empty-day{margin-top:26px;width:246px;height:469px;background:url(//s1.hdslb.com/bfs/static/bangumi-timeline/asserts/empty-1.png) no-repeat}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .empty-day.alt{background:url(//s1.hdslb.com/bfs/static/bangumi-timeline/asserts/empty-2.png) no-repeat}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container{margin-top:18px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container>:not(:last-child){margin-bottom:8px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .time{display:flex;align-items:center;font-weight:700}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .time.recent{color:var(--theme-color)}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .time.recent~.bangumi-item{box-shadow:0 4px 8px 0 #0001,inset 0 0 0 2px var(--theme-color)}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .time.recent~.bangumi-item .cover-container{margin:2px;border-radius:6px 0 0 6px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .time .be-icon{margin-right:6px;font-size:18px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item{display:grid;height:72px;grid-template:"cover title" auto "cover ep" auto/72px 1fr;background-color:#fff;color:inherit;box-shadow:0 4px 8px 0 #0001;border-radius:8px;grid-row-gap:8px;row-gap:8px}body.dark .simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item{background-color:#282828}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item .cover-container{grid-area:cover;overflow:hidden;border-radius:8px 0 0 8px}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item .cover-container img{width:100%;height:100%}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item.delay{opacity:.4}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item.delay:hover{opacity:1}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item:hover{color:var(--theme-color)!important}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item:hover .cover-container img{transform:scale(1.05)}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item .title{grid-area:title;align-self:end;font-size:13px;font-weight:700;margin:0 12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-height:2.6em;word-break:break-all;line-height:1.3;overflow:hidden}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item .ep-title{grid-area:ep;align-self:start;margin:0 12px;display:flex;align-items:center;white-space:nowrap;overflow:hidden}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day .time-container .bangumi-item .ep-title .be-icon{color:var(--theme-color);margin-right:4px;font-size:18px;line-height:1}.simple-home .bangumi-timeline-container .bangumi-timeline .timeline-day:not(:last-child){margin-right:var(--column-gap)}@media screen and (min-width:1000px){.simple-home .bangumi-timeline-container .bangumi-timeline{--column-count:2}}@media screen and (min-width:1300px){.simple-home .bangumi-timeline-container .bangumi-timeline{--column-count:3}}@media screen and (min-width:1550px){.simple-home .bangumi-timeline-container .bangumi-timeline{--column-count:4}}`,"bangumi-timeline-style");const t={global:"https://bangumi.bilibili.com/web_api/timeline_global",chinese:"https://bangumi.bilibili.com/web_api/timeline_cn"};return{export:Object.assign({template:n},{components:{Icon:()=>i.importAsync("icon.vue"),DpiImg:()=>i.importAsync("dpi-img.vue")},props:{type:{type:String,default:"global",required:false}},data(){return{timeline:[],recentTime:""}},computed:{apiUrl(){return t[this.type]||t.global}},watch:{type(){this.updateTimeline()}},methods:{calculateRecentTime(){const e=this.timeline.find((e=>e.isToday));const i=Number(new Date);const n=Object.entries(e.bangumis).map((([e,i])=>({time:e,timestamp:i[0].timestamp,bangumis:i})));if(n.length===0){return}const t=n.filter((e=>e.timestamp<i));if(t.length===0){this.recentTime=[n[0].time]}else{this.recentTime=t.map((e=>e.time))}},moveTimeline(e){const i=e.currentTarget;const n=i.parentElement;const t=n.parentElement;const a=getComputedStyle(t);const m=parseInt(a.getPropertyValue("--column-width").match(/(.+)px/)[1])+parseInt(a.getPropertyValue("--column-gap").match(/(.+)px/)[1]);const o=n.offsetLeft-t.scrollLeft;if(o<m){t.scrollLeft-=m}else if(o>=m*2){t.scrollLeft+=m}console.log(e,i,n,t);console.log(m,m*2,n.offsetLeft,t.scrollLeft,o)},async updateTimeline(){try{const e=await Ajax.getJsonWithCredentials(this.apiUrl);if(e.code!==0){throw new Error(e.message)}const i=e.result.map((e=>({date:e.date,dayOfWeek:e.day_of_week,dayOfWeekText:"周"+[,"一","二","三","四","五","六","日"][e.day_of_week],isToday:Boolean(e.is_today),bangumis:_.groupBy(e.seasons.map((e=>({coverUrl:e.cover.replace("http:","https:"),squareCoverUrl:e.square_cover.replace("http:","https:"),time:e.pub_time,timestamp:e.pub_ts*1e3,url:e.url,follow:Boolean(e.follow),epTitle:e.pub_index||e.delay_reason+" "+e.delay_index,title:e.title,delay:Boolean(e.delay),published:Boolean(e.is_published)}))),(e=>e.time))})));this.timeline=i;this.calculateRecentTime();setInterval((()=>{if(document.hasFocus()){this.calculateRecentTime()}}),60*1e3);await this.$nextTick();const n=this.$el;const t=this.$el.querySelector(".bangumi-timeline");const a=getComputedStyle(t);const m=parseInt(a.getPropertyValue("--column-width").match(/(.+)px/)[1]);const o=parseInt(a.getPropertyValue("--column-gap").match(/(.+)px/)[1]);t.scrollLeft=5*(m+o)}catch(e){logError(e);this.$emit("error")}finally{this.$emit("load")}}},async mounted(){await this.updateTimeline()}})}})(); |