Peertube-dl/lib/Peertube/DL/public/js/peertube-dl-web.js

2 lines
7.1 KiB
JavaScript

(()=>{"use strict";class e{constructor(){this.query_selector="#poping-notice",this.closePopingNotice.addEventListener("click",(e=>{this.setVisible(!1)}))}setVisible(e){e?this.element.classList.add("active"):this.element.classList.remove("active")}setMessage(e){if(!e instanceof Array)throw"Message is not instance of Array.";let t=document.createElement("p");for(let o of e)if("string"==typeof o||o instanceof String)o=document.createTextNode(o),t.appendChild(o);else{if(!(o instanceof Node))throw"Node is not a instance of Node nor a String";t.appendChild(o)}this.popingNoticeContent.innerHTML="",this.popingNoticeContent.appendChild(t)}get querySelector(){return this.query_selector}get element(){return document.querySelector(this.querySelector)}get popingNoticeContent(){return this.element.querySelector("#poping-notice-content")}get closePopingNotice(){return this.element.querySelector("#close-poping-notice")}}class t{constructor(e){this.query_selector="#download-form",this.callback=t=>{t.preventDefault(),e(this.downloadFormUrl.value)},this.addEventListeners()}addEventListeners(){this.downloadFormButton.addEventListener("click",this.callback),this.element.addEventListener("submit",this.callback)}get downloadFormButton(){return this.element.querySelector("#download-form-button")}get downloadFormUrl(){return this.element.querySelector("#download-form-url")}get querySelector(){return this.query_selector}get element(){return document.querySelector(this.querySelector)}}class o{constructor(){this.query_selector="#modal-loading"}setVisible(e){e?this.element.classList.add("active"):this.element.classList.remove("active")}get element(){return document.querySelector(this.querySelector)}get querySelector(){return this.query_selector}}class i{constructor(){this.query_selector="#modal-video-container",this.addEventListeners()}setVisible(e){e?this.element.classList.add("active"):(this.element.classList.remove("active"),this.downloadVideoPrepare.classList.add("active"),this.downloadVideoLoading.classList.remove("active"),this.downloadVideo.classList.remove("active"))}addEventListeners(){this.downloadVideoPrepare.addEventListener("click",this.downloadPrepareHandler.bind(this)),this.closeAndResetVideoContainer.addEventListener("click",(e=>{this.setVisible(!1)}))}downloadPrepareHandler(e){this.downloadVideoPrepare.classList.remove("active"),this.downloadVideoLoading.classList.add("active"),this.generateBlobVideo(this.URLVideo).then((e=>{this.downloadVideo.href=URL.createObjectURL(e),this.downloadVideo.download=this.filename,this.downloadVideoLoading.classList.remove("active"),this.downloadVideo.classList.add("active")}))}async generateBlobVideo(e){return await fetch(e,{mode:"cors"}).then((e=>e.blob())).catch((t=>this.generateBlobVideoByProxy(e)))}async generateBlobVideoByProxy(e){return await fetch("/proxy_to_get",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify({url:e})}).then((e=>e.blob()))}onCanPlay(e){video.addEventListener("canplay",(t=>{e()}))}setURLVideo(e){this.url_video=e,video.src=e}setFilename(e){this.filename=e}get closeAndResetVideoContainer(){return this.element.querySelector("#close-and-reset-video-container")}get downloadVideo(){return this.element.querySelector("#download-video")}get URLVideo(){return this.url_video}get closeAndResetVideoContainer(){return this.element.querySelector("#close-and-reset-video-container")}get downloadVideoLoading(){return this.element.querySelector("#download-video-loading")}get downloadVideoPrepare(){return this.element.querySelector("#download-video-prepare")}get video(){return this.element.querySelector("#video")}get element(){return document.querySelector(this.querySelector)}get querySelector(){return this.query_selector}}class r{constructor(){this.query_selector="#modal-format-selector",this.addEventListeners()}appendFormat(e,t,o,i){let r=document.createElement("a");r.innerText=o?"Id: "+t.id+"\nFormat: "+t.mimeType+"\nQualityLabel: "+t.qualityLabel+"p\nBitrate: "+t.bitrate+"\n"+(void 0!==t.audioSampleRate?"AudioSampleRate: "+t.audioSampleRate+".\n":"No audio."):"Id: "+t.id+"\nFormat: "+t.mimeType+"\nAudioSampleRate: "+t.audioSampleRate+"\nBitrate: "+t.bitrate+".\n",r.addEventListener("click",(e=>{i(t.id)})),e.appendChild(r)}prepareFormatSelector(e,t,o,i,r){this.titleFormatSelector.innerText=e,this.descriptionFormatSelector.innerText=t,this.videoFormats.innerHTML="",this.audioFormats.innerHTML="";for(let e of o)this.appendFormat(this.audioFormats,e,!1,r);for(let e of i)this.appendFormat(this.videoFormats,e,!0,r)}setVisible(e){e?this.element.classList.add("active"):this.element.classList.remove("active")}addEventListeners(){this.closeFormatSelector.addEventListener("click",(e=>{this.setVisible(!1)}))}get videoFormats(){return this.element.querySelector(".video-formats")}get audioFormats(){return this.element.querySelector(".audio-formats")}get titleFormatSelector(){return this.element.querySelector("h2")}get descriptionFormatSelector(){return this.element.querySelector("p")}get closeFormatSelector(){return this.element.querySelector("#close-modal-format-selector")}get element(){return document.querySelector(this.querySelector)}get querySelector(){return this.query_selector}}class s{constructor(){this.poping_notice=new e,this.download_form=new t(this.onDownloadFormGot.bind(this)),this.loading_modal=new o,this.video_container=new i,this.format_selector=new r}init(){this.popingNotice.setVisible(!0)}onDownloadFormGot(e){this.dispatchURL(e)}dispatchURL(e,t){let o;this.loadingModal.setVisible(!0),this.queryAPI(e,t).then((t=>{if(void 0!==t.options&&void 0!==t.options.list_formats&&t.options.list_formats){if(void 0===t.formats||void 0===t.formats.audio_formats||void 0===t.formats.video_formats)throw"Format object is not valid.";this.formatSelector.prepareFormatSelector(t.title,t.description,t.formats.audio_formats,t.formats.video_formats,(t=>{this.loadingModal.setVisible(!0),this.dispatchURL(e,t)})),this.formatSelector.setVisible(!0),this.loadingModal.setVisible(!1)}else this.videoContainer.onCanPlay(this.onCanPlayVideoContainer.bind(this)),this.videoContainer.setURLVideo(t.url),this.videoContainer.setFilename(t.filename)})).catch((t=>{o=t.toString(),this.loadingModal.setVisible(!1);let i=document.createElement("a");i.href=e,i.innerText=e;let r=document.createElement("a");r.href="https://gitea.sergiotarxz.freemyip.com/sergiotarxz/Peertube-dl/issues",r.innerText="here",this.popingNotice.setMessage(["The url ",i," is not supported, the error was: ",o," if you think this is an error, report it ",r,"."]),this.popingNotice.setVisible(!0)}))}onCanPlayVideoContainer(){this.videoContainer.setVisible(!0),this.loadingModal.setVisible(!1)}async queryAPI(e,t){let o={url:e};return void 0!==t&&(o.format=t),(await fetch("/api",{method:"POST",mode:"cors",cache:"no-cache",headers:{"Content-Type":"application/json"},body:JSON.stringify(o)})).json()}get formatSelector(){return this.format_selector}get videoContainer(){return this.video_container}get downloadForm(){return this.download_form}get popingNotice(){return this.poping_notice}get loadingModal(){return this.loading_modal}}window.addEventListener("load",(e=>{(new s).init()}))})();
//# sourceMappingURL=peertube-dl-web.js.map