!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports["video/metadata"]=e():t["video/metadata"]=e()}(globalThis,(()=>(()=>{"use strict";var t={315:(t,e,i)=>{i.d(e,{component:()=>p,U:()=>c,D:()=>l});var n=i(253);const o=coreApis.spinQuery;var a=i(5);const s=coreApis.utils.urls;var r=i(469),d=i(356);const l="保存视频元数据",c="saveVideoMetadata",u=[{name:"WakelessSloth56",link:"https://github.com/WakelessSloth56"},{name:"LainIO24",link:"https://github.com/LainIO24"}],p=(0,n.defineComponentMetadata)({name:c,displayName:l,description:"保存视频元数据(标题、描述、UP、章节等)",author:u,tags:[componentsTags.video],entry:none,urlInclude:s.videoAndBangumiUrls,options:d.fF,widget:{condition:o.hasVideo,component:()=>Promise.resolve().then(i.bind(i,502)).then((t=>t.default))},plugin:{displayName:`下载视频 - ${l}支持`,author:u,setup:t=>{let{addData:e}=t;e("downloadVideo.assets",(async t=>{t.push({name:c,displayName:l,getAssets:async(t,e)=>{const{type:i,enabled:n}=e;if(n){const e=a.Toast.info("获取视频元数据中...",l),n=[];for(const e of t)n.push({name:`${e.input.title}.${i}.txt`,data:await(0,r.V)(i,e.input.aid,e.input.cid),options:{}});return e.message="完成!",e.duration=1e3,n}return[]},component:()=>Promise.resolve().then(i.bind(i,365)).then((t=>t.default))})}))}},commitHash:"a56a17cdfd26beff4b61882025cd5025e5e6489e",coreVersion:"2.10.5"})},469:(t,e,i)=>{i.d(e,{V:()=>_});const n=coreApis.componentApis.video.videoInfo,o=coreApis.ajax,a=coreApis.meta;var s=i(905),r=i(5),d=i(315),l=i(356);function c(t){return lodash.toString(t).replace(/[=;#\\\n]/g,(t=>`\\${t}`))}function u(t){return t.map((t=>`${t.tag_name}(${t.tag_id})`))}function p(t,e){switch(e){case l.Hg.Timestmp:return t.getTime();case l.Hg.Local:return t.toLocaleString();case l.Hg.ISO:return t.toISOString()}return 0}function m(t,e,i){return(e=function(t){var e=function(t,e){if("object"!=typeof t||!t)return t;var i=t[Symbol.toPrimitive];if(void 0!==i){var n=i.call(t,e||"default");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===e?String:Number)(t)}(t,"string");return"symbol"==typeof e?e:e+""}(e))in t?Object.defineProperty(t,e,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[e]=i,t}class g{constructor(t,e){m(this,"aid",void 0),m(this,"cid",void 0),m(this,"basic",void 0),m(this,"viewPoints",void 0),m(this,"tags",{}),m(this,"page",void 0),m(this,"quality",void 0),m(this,"bangumi",void 0),this.aid=parseInt(t),this.cid=parseInt(e),this.basic=new n.VideoInfo(t)}async fetch(){await this.basic.fetchInfo(),this.page=this.basic.pages.filter((t=>t.cid===this.cid))[0];const t=await(0,o.bilibiliApi)((0,o.getJsonWithCredentials)(`//api.bilibili.com/x/player/wbi/v2?aid=${this.aid}&cid=${this.cid}`));this.viewPoints=lodash.get(t,"view_points",[]);const e=await(0,o.bilibiliApi)((0,o.getJsonWithCredentials)(`//api.bilibili.com/x/web-interface/view/detail/tag?aid=${this.aid}&cid=${this.cid}`)),i=lodash.groupBy(e,"tag_type");if(this.tags.tag=i.old_channel,this.tags.topic=i.topic,this.tags.bgm=i.bgm,this.basic.redirectUrl){const t=parseInt(this.basic.redirectUrl.match(/ep(\d+)/)?.[1]??"");t&&(this.bangumi=await n.BangumiInfo.byEpisodeId(t).fetchInfo(),(0,s.getComponentSettings)(d.U).options.convertBangumiSkips&&0===this.viewPoints.length&&(this.viewPoints=function(t,e){const i=[],{op:n,ed:o}=t,a=n.start>=0&&n.end>0,s=o.start>n.end&&o.end<=e;return a&&n.start>0&&i.push({from:0,to:n.start,content:""}),a&&i.push({from:n.start,to:n.end,content:"Opening Theme"}),a&&s?i.push({from:n.end,to:o.start,content:""}):a&&!s?i.push({from:n.end,to:e,content:""}):!a&&s&&i.push({from:0,to:o.start,content:""}),s&&i.push({from:o.start,to:o.end,content:"Ending Theme"}),s&&o.end0&&void 0!==arguments[0]?arguments[0]:unsafeWindow.aid,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:unsafeWindow.cid;const i=new g(t,e);return await i.fetch(),i}function h(t,e){return`${!(arguments.length>2&&void 0!==arguments[2])||arguments[2]?"bilibili_":""}${t}=${Array.isArray(e)?e.map(c).join(","):c(e)}`}async function v(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:unsafeWindow.aid,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:unsafeWindow.cid;const i=await f(t,e),{basic:n}=i;console.debug(i);const{options:{fieldsMode:o,timeFormat:r,includeStat:c}}=(0,s.getComponentSettings)(d.U),m=new Date,g=[";FFMETADATA1",`;generated by Bilibili-Evolved v${a.meta.compilationInfo.version}`,`;generated on ${m.toLocaleDateString()} at ${m.toLocaleTimeString(navigator.language,{timeZoneName:"short"})}`,h("title",`${n.title} - ${i.page.title}`,!1),h("description",n.description,!1),h("artist",n.up.name,!1)];if(o===l.HQ.ALL){if(g.push(h("metadata_generated",p(m,r)),h("title",n.title),h("description",n.description),h("publish_date",p(new Date(1e3*n.pubdate),r)),h("aid",n.aid),h("bvid",n.bvid),h("cid",i.page.cid),h("up_name",n.up.name),h("up_uid",n.up.uid),h("page_title",i.page.title),h("pages",n.pages.length),h("page",i.page.pageNumber),h("category_id",n.tagId),h("category_name",n.tagName)),i.tags.tag&&g.push(h("tags",u(i.tags.tag))),i.tags.topic&&g.push(h("topic",u(i.tags.topic))),i.tags.bgm&&g.push(h("bgm",i.tags.bgm.map((t=>`${t.tag_name.match(/^发现《([^》]+)》/)?.[1]??t.tag_name}(${t.music_id})`)))),i.bangumi){const t=i.bangumi;g.push(h("bangumi_media_id",t.mediaId),h("bangumi_season_id",t.seasonId),h("bangumi_season_title",t.seasonTitle),h("bangumi_series_id",t.seriesId),h("bangumi_series_title",t.seriesTitle),h("bangumi_section_title",t.episode.section),h("bangumi_episode_id",t.episode.epid),h("bangumi_episode_title",t.episode.title),h("bangumi_area",t.areas.map((t=>t.name))))}if(c){const t=n.stat;g.push(h("stat_view",t.view),h("stat_like",t.like),h("stat_coin",t.coin),h("stat_favorite",t.favorite),h("stat_share",t.share),h("stat_danmaku",t.danmaku),h("stat_reply",t.reply)),t.his_rank>0&&g.push(h("stat_highest_rank",t.his_rank))}i.quality&&(g.push(h("quality",i.quality.value)),g.push(h("quality_label",i.quality.name)))}if(i.viewPoints.length>0)for(const t of i.viewPoints)g.push("[CHAPTER]","TIMEBASE=1/1",h("START",t.from,!1),h("END",t.to,!1),h("title",t.content,!1));const v=g.join("\n");return console.debug(v),v}async function b(){let t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:unsafeWindow.aid,e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:unsafeWindow.cid;const{viewPoints:i}=await f(t,e);if(console.debug(i),i.length>0){const t=i.reduce(((t,e,i)=>{const n=`${i+1}`.padStart(3,"0");return[...t,`CHAPTER${n}=${new Date(1e3*e.from).toISOString().slice(11,-1)}`,`CHAPTER${n}NAME=${e.content}`]}),[]).join("\n");return console.debug(t),t}return r.Toast.info("此视频没有章节",d.D,3e3),null}async function _(t){let e;if("ogm"===t)e=b;else e=v;return e(arguments.length>1&&void 0!==arguments[1]?arguments[1]:unsafeWindow.aid,arguments.length>2&&void 0!==arguments[2]?arguments[2]:unsafeWindow.cid)}},356:(t,e,i)=>{i.d(e,{HQ:()=>o,Hg:()=>a,fF:()=>s});var n=i(253);let o=function(t){return t.ALL="全部",t.Standard="仅标准字段",t}({}),a=function(t){return t.Timestmp="时间戳",t.Local="本地时间",t.ISO="ISO时间",t}({});const s=(0,n.defineOptionsMetadata)({fieldsMode:{displayName:"FFMETADATA 字段",dropdownEnum:o,defaultValue:o.ALL},timeFormat:{displayName:"时间格式",dropdownEnum:a,defaultValue:a.Local},convertBangumiSkips:{displayName:"将番剧的「跳过头尾」转换为章节",defaultValue:!0},includeStat:{displayName:"包含状态数(播放数、点赞数等)",defaultValue:!0}})},365:(t,e,i)=>{i.r(e),i.d(e,{default:()=>r});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"download-video-config-section"},[e("div",{staticClass:"download-video-config-item"},[e("div",[t._v("元数据:")]),t._v(" "),e("VDropdown",{attrs:{items:t.items},scopedSlots:t._u([{key:"item",fn:function({item:e}){return[t._v("\n "+t._s(e)+"\n ")]}}]),model:{value:t.type,callback:function(e){t.type=e},expression:"type"}})],1)])};n._withStripped=!0;var o=i(164);const a=(0,i(905).getComponentSettings)("downloadVideo").options,s=Vue.extend({components:{VDropdown:o.VDropdown},data:()=>({type:a.metadataType??"无",items:["无","ffmetadata","ogm"]}),computed:{enabled(){return"无"!==this.type}},watch:{type(t){a.metadataType=t}}});const r=(0,i(678).A)(s,n,[],!1,null,null,null).exports},502:(t,e,i)=>{i.r(e),i.d(e,{default:()=>c});var n=function(){var t=this,e=t._self._c;t._self._setupProxy;return e("div",{staticClass:"multiple-widgets"},[e("DefaultWidget",{ref:"button",attrs:{disabled:t.disabled,name:"保存视频元数据",icon:"mdi-download"},on:{click:function(e){return t.run("ffmetadata")}}}),t._v(" "),e("DefaultWidget",{attrs:{disabled:t.disabled,name:"保存视频章节",icon:"mdi-download"},on:{click:function(e){return t.run("ogm")}}})],1)};n._withStripped=!0;var o=i(164);const a=coreApis.utils.log,s=coreApis.download,r=coreApis.utils.title;var d=i(469);const l=Vue.extend({components:{DefaultWidget:o.DefaultWidget},data:()=>({disabled:!1}),methods:{async run(t){try{this.disabled=!0,s.DownloadPackage.single(`${(0,r.getFriendlyTitle)(!0)}.${t}.txt`,await(0,d.V)(t))}catch(t){(0,a.logError)(t)}finally{this.disabled=!1}}}});const c=(0,i(678).A)(l,n,[],!1,null,null,null).exports},678:(t,e,i)=>{function n(t,e,i,n,o,a,s,r){var d,l="function"==typeof t?t.options:t;if(e&&(l.render=e,l.staticRenderFns=i,l._compiled=!0),n&&(l.functional=!0),a&&(l._scopeId="data-v-"+a),s?(d=function(t){(t=t||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(t=__VUE_SSR_CONTEXT__),o&&o.call(this,t),t&&t._registeredComponents&&t._registeredComponents.add(s)},l._ssrRegister=d):o&&(d=r?function(){o.call(this,(l.functional?this.parent:this).$root.$options.shadowRoot)}:o),d)if(l.functional){l._injectStyles=d;var c=l.render;l.render=function(t,e){return d.call(e),c(t,e)}}else{var u=l.beforeCreate;l.beforeCreate=u?[].concat(u,d):[d]}return{exports:t,options:l}}i.d(e,{A:()=>n})},253:t=>{t.exports=coreApis.componentApis.define},905:t=>{t.exports=coreApis.settings},5:t=>{t.exports=coreApis.toast},164:t=>{t.exports=coreApis.ui}},e={};function i(n){var o=e[n];if(void 0!==o)return o.exports;var a=e[n]={exports:{}};return t[n](a,a.exports,i),a.exports}i.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return i.d(e,{a:e}),e},i.d=(t,e)=>{for(var n in e)i.o(e,n)&&!i.o(t,n)&&Object.defineProperty(t,n,{enumerable:!0,get:e[n]})},i.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),i.r=t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})};var n=i(315);return n=n.component})()));