trackkun-dom 0.0.2 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +1 -1
- package/init.js +1 -1
- package/package.json +1 -1
- package/specs.json +1 -1
package/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(T,C){typeof exports=="object"&&typeof module<"u"?C(exports):typeof define=="function"&&define.amd?define(["exports"],C):(T=typeof globalThis<"u"?globalThis:T||self,C(T._trackkun_={}))})(this,function(T){"use strict";const C="webp",te=["jpg","jpng","png","webp","svg","gif","avif","apng","bmp"];function V(e){return`${Ee(e)}.${C}`}function Ee(e){const t=e.split("?")[0].split("#")[0].split("/").filter(Boolean),r=ke(t.slice(-1)[0]);return r.length>=16?r:t.slice(0,-1).join("").slice(r.length-16)+r}function ke(e){const t=We(e),r=t.replace(/-\d{3}x\d{3}$/,"");if(r!==t||t===e)return r;const n=t.split(".").reverse();if(n.length<3)return t;const[l,a,...i]=n;return!a||!te.includes(a)||!l||isNaN(+l)?t:i.reverse().join(".")}function We(e){const t=e.lastIndexOf(".");if(t===-1)return e;const r=e.substring(t+1);return te.includes(r)?e.substring(0,t):e}const ze={text:_e,attr:Fe,"attr-contain":qe,value:Ve,row:He};function m(e,t={}){if(!e)return;const{root:r=document.documentElement,returnAll:n,preProcess:l}=t,a=H(e);if(a.length>1){for(let p=0;p<a.length;p+=1){const d=m(a[p],t);if(d!=null&&d.length)return d}return}const[i,o]=e.split("|");if(!o)return;const c=(o!=null&&o.startsWith("[")&&o.endsWith("]")?o.substring(1,o.length-1).split(","):[o]).map(p=>{const d=p.indexOf(":"),f=d!==-1;return{action:f?p.substring(0,d):p,param:f?p.substring(d+1):""}}),u=i?Array.from(r.querySelectorAll(i)):[r];if(!u.length)return n?[]:void 0;l&&l(u);const s=[];for(const p of u)for(const d of c){const f=ze[d.action],g=f(p,d.param);if(g){if(n){s.push(g);break}return g}}return n?s:void 0}function _e(e){return Array.from(e.childNodes).filter(t=>t.nodeType===3).map(t=>R(t.textContent)).filter(Boolean).join(" ").trim()||R(e.textContent)}function Fe(e,t){return R(e.getAttribute(t))}function qe(e,t){let r=e.getAttribute(t);if(!r){const n=e.getAttributeNames().find(l=>l.includes(t));n&&(r=e.getAttribute(n))}return R(r)}function H(e){const t=[],r=e.split("||").map(n=>n.trim()).filter(Boolean);return r.forEach((n,l)=>{if(n.includes("|")){t.push(n);return}const a=r[l+1];a&&(r[l+1]=`${n},${a}`)}),t}function Ve(e){return e.value}function He(e,t){var r,n;if(!t)return;const l=(r=R(e.textContent))==null?void 0:r.toLowerCase(),a=t.toLowerCase();if(!(l!==a&&l!==`${a}:`))return R((n=e.nextElementSibling)==null?void 0:n.textContent)}function R(e){if(e)return e?.replace(/(\n|\t)/g," ").trim()||void 0}function re(e){let t=!1;return new Promise((r,n)=>{Promise.all(e.map(async l=>{const a=await l;!t&&a&&(t=!0,r(a))})).then(()=>{t||r(void 0)})})}async function ne(e,t,r){const n=await r(()=>{e=0});if(n)return n;if(!(e<=0))return await new Promise(l=>{setTimeout(async()=>{const a=await ne(e-1,t,r);l(a)},t)})}async function I(e,t,r=0){var n;const l=(n=t.root)!=null?n:document.documentElement;return ne(t.lazy===!0?200:0,100,()=>{var a;const i=t.all===!0?Array.from(l.querySelectorAll(e)):(a=l.querySelector(e))!=null?a:void 0;return(t.all?!(i!=null&&i.length):!i)?void 0:i})}const Ye=/(vol(ume|\.)?\s*(\d+))/i,Ge=/(ch(ap(t(er)?|\.)?|\.)?|^#)\s*(\d+([_-~,.]\d+)?)/i,Qe=/\d+([_-~,.]\d+)?/,Ze=/[_-~,]/,Je=/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g;function Y(e,t){var r;if(!e||!e)return;if(!isNaN(+e))return{chap:+e};const n=e.match(Ye),l=n!=null&&n[0]?e.replace(n[0],"").trim():e,a=l.match(Ge),i=l.match(Qe),o=(r=a?.[5])!=null?r:i?.[0];if(!o)return;const c=+o.replace(Ze,".");if(isNaN(c))return;const u=n?.[3],s=u&&!isNaN(+u)?+u:void 0,p=l.replace((a||i)[0],"").replace(Je,""),d=t&&p.startsWith(t)?p.replace(t,""):p;return{vol:s,chap:c,label:d||void 0}}const ae=[{regex:/(sec(ond(s)?)? ago|giây trước)/,seconds:1},{regex:/(min(s|ute(s)?)? ago|phút trước)/,seconds:60},{regex:/(hour(s)? ago|giờ trước)/,seconds:3600},{regex:/(day(s)? ago|ngày trước)/,seconds:86400},{regex:/(week(s)? ago|tuần trước)/,seconds:604800},{regex:/(month(s)? ago|tháng trước)/,seconds:2592e3},{regex:/(year(s)? ago|năm trước)/,seconds:31536e3}];function Xe(e){if(!e||e.includes("now"))return Date.now();if(e.includes("yesterday"))return Date.now()-864e5;const t=new Date(e);if(t instanceof Date){const r=t.valueOf();if(!isNaN(r))return t.getHours()===0&&t.getMinutes()===0?Math.min(Date.now(),r+432e5):r}for(let r=0;r<ae.length;r++){const{regex:n,seconds:l}=ae[r];if(n.test(e)){const a=e.split(" ").slice(-3)[0],i=a=="an"||a==="a"?1:+a;if(isNaN(i)||i<0)return;const o=Date.now()-i*l*1e3;return o>0?o:void 0}}}function le(e,t){if(!e)return"/";const r=e.replace("{titleSlug}",t),n=r.endsWith("/")?r:r+"/";return n.startsWith("/")?n:"/"+n}var Ke=(e=>(e[e.reading=1]="reading",e[e.paused=2]="paused",e[e.plan=3]="plan",e[e.completed=4]="completed",e[e.dropped=5]="dropped",e[e.deleted=6]="deleted",e))(Ke||{}),E=(e=>(e[e.none=0]="none",e[e.removeLastSegment=1]="removeLastSegment",e[e.removeIdAfterLastDash=2]="removeIdAfterLastDash",e[e.removeIdBeforeFirstDash=3]="removeIdBeforeFirstDash",e))(E||{}),oe=(e=>(e[e.none=0]="none",e[e.removePage=1]="removePage",e))(oe||{}),et=(e=>(e[e.string=1]="string",e[e.number=2]="number",e[e.bool=3]="bool",e[e.selection=4]="selection",e))(et||{}),tt=(e=>(e[e.SiteUpdate=1]="SiteUpdate",e[e.SiteTitleImg=2]="SiteTitleImg",e))(tt||{});function G({basePath:e,fullPath:t,siteMeta:r}){if(!t)return;const n=t.replace(e,"");switch(r.readerSlugTransformer){case oe.removePage:return n.replace(/-page-\d{1,3}\.html$/,".html");default:return n}}function rt(e,{removeTrailingSlash:t=!0}={}){if(!e)return;const r=t&&e.endsWith("/")?e.slice(0,-1):e;try{return new URL(r)}catch{return}}function B(e){var t;if(!(!e||typeof e!="string"))return e.startsWith("http://")||e.startsWith("https://")?(t=rt(e))==null?void 0:t.pathname:e}var nt=Object.defineProperty,at=Object.defineProperties,lt=Object.getOwnPropertyDescriptors,ie=Object.getOwnPropertySymbols,ot=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable,se=(e,t,r)=>t in e?nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,st=(e,t)=>{for(var r in t||(t={}))ot.call(t,r)&&se(e,r,t[r]);if(ie)for(var r of ie(t))it.call(t,r)&&se(e,r,t[r]);return e},ut=(e,t)=>at(e,lt(t));async function k(e,{root:t=document.documentElement,titleSlug:r="",titleName:n,lazy:l=!0,siteMeta:a}){var i;if(!e)return;const o=[],c=await I(e.sel,{root:t,all:!0,lazy:l});if(!(c!=null&&c.length))return o;const u=(c??[]).map(v=>({label:m(e.label,{root:v}),url:m(e.url,{root:v}),at:m(e.at,{root:v})})),s=u.map(({label:v})=>Y(v,n)),p=(i=s[1])==null?void 0:i.chap;!s[0]&&(p===void 0||p<=1)&&(s[0]={label:u[0].label,chap:0});const d=le(a.readerBase,r),f=a.readerBase.split("/").indexOf("{lang}"),g=f!==-1;return s.forEach((v,h)=>{var y;if(!v)return;const{url:w,at:P}=u[h],$=B(w),b=g?$?.substring(1).split("/")[f]:void 0,S=G({basePath:b?d.replace("{lang}",b):d,fullPath:$,siteMeta:a});S&&o.push(ut(st({},v),{slug:S,lang:b,ts:Xe(P)||((y=o[o.length+1])==null?void 0:y.ts)||Date.now()}))}),W(o)}function W(e){return e.sort((t,r)=>t.vol===void 0||r.vol===void 0?r.chap-t.chap:r.vol-t.vol||r.chap-t.chap),ct(e)}function ct(e){let t;for(let r=e.length-1;r>=0;r--){const n=e[r];n.vol!==void 0?t=n.vol:t!==void 0&&(n.inferVol=t)}return e}function z({url:e,siteMeta:t}){var r;if(typeof e!="string")return;const n=t.titleSlugTransformer,l=(r=B(e))==null?void 0:r.split("/").filter(Boolean);if(!l||!l.length)return e;const a=l[l.length-1];switch(n){case E.removeLastSegment:return l.length>=2?l[l.length-2]:a;case E.removeIdAfterLastDash:{const i=a.lastIndexOf("-"),o=+a.substring(i+1);return i===-1||isNaN(o)||o<1e4?a:a.substring(0,i)}case E.removeIdBeforeFirstDash:{const i=a.indexOf("-"),o=+a.substring(0,i);return i===-1||isNaN(o)||o<1e3?a:a.substring(i+1)}default:return a}}function pt(){return Math.random().toString(16).slice(2)}async function dt({addListener:e,removeListener:t,transform:r,filter:n,handler:l,onTimeout:a,timeout:i,once:o}){return new Promise(c=>{e(p);const u=()=>o===!0&&t(p),s=i?setTimeout(()=>{u(),c(void 0),a?.()},i):void 0;async function p(d,...f){d=r?r(d):d,d!==void 0&&(!n||n(d,...f))&&(u(),c(d),l?.(d,...f),s&&clearTimeout(s))}})}var ft=Object.defineProperty,ue=Object.getOwnPropertySymbols,gt=Object.prototype.hasOwnProperty,vt=Object.prototype.propertyIsEnumerable,ce=(e,t,r)=>t in e?ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,mt=(e,t)=>{for(var r in t||(t={}))gt.call(t,r)&&ce(e,r,t[r]);if(ue)for(var r of ue(t))vt.call(t,r)&&ce(e,r,t[r]);return e};async function ht(e){const t=await dt(mt({addListener:r=>window.addEventListener("message",r),removeListener:r=>window.removeEventListener("message",r)},e));return t?.data}async function yt(e){var t;const{receiverWindow:r,timeout:n,targetOrigin:l,event:a,args:i}=e,o={reqId:pt(),event:a,args:i};(t=r||window)==null||t.postMessage(o,l??"*");const c=await ht({filter:u=>{var s;return((s=u?.data)==null?void 0:s.resId)===o.reqId},timeout:n??3e4,once:!0});return c?.result}const D={isAny:!0};function M(e,...t){return yt({event:"tk:fetchResult",args:{baseUrl:e,segments:t}})}const bt='meta[property="og:url"]|attr:content,meta[name="url"]|attr:content';function pe(e=document.documentElement){try{return window.location.origin+window.location.pathname}catch{}const t=m(bt,{root:e});if(!(!t||B(t)==="/"))return t}function de(e,t){if(!(t!=null&&t.length))return;const r={};e.forEach(({id:l,name:a,altNames:i})=>{r[Q(a)]=l,i&&i.forEach(o=>{r[Q(o)]=l})});const n=t.map(l=>r[Q(l)]).filter(Boolean);return n.length===0?void 0:Array.from(new Set(n)).sort((l,a)=>l-a)}function Q(e){const t=e.toLowerCase().replaceAll(" ","");return t[t.length-1]==="s"?t.substring(0,t.length-1):t}var O=(e=>(e.title="title",e.reader="reader",e.update="update",e.search="search",e))(O||{}),wt=Object.defineProperty,Ot=Object.defineProperties,Pt=Object.getOwnPropertyDescriptors,fe=Object.getOwnPropertySymbols,$t=Object.prototype.hasOwnProperty,jt=Object.prototype.propertyIsEnumerable,ge=(e,t,r)=>t in e?wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,_=(e,t)=>{for(var r in t||(t={}))$t.call(t,r)&&ge(e,r,t[r]);if(fe)for(var r of fe(t))jt.call(t,r)&&ge(e,r,t[r]);return e},ve=(e,t)=>Ot(e,Pt(t));async function St({spec:e,siteMeta:t,tags:r,lazy:n}){var l,a,i;if(e.id=="mangadex")return await Nt({tags:r});if(!(e!=null&&e.title))return;const{sel:o,name:c,img:u,chapter:s,langs:p,tags:d,type:f}=e.title;if(!o||!c||!s||!await I(o,{lazy:n||((l=e.title.lazy)!=null?l:!1)}))return;const g=m(c);if(!g)return;const v=z({url:pe(),siteMeta:t});if(!v)return;let h=(a=m(d,{returnAll:!0}))!=null?a:[];h.length===1&&(h=h[0].split(",").map(P=>P.trim()).filter(Boolean));const y=m(f),w={type:O.title,url:location.origin+location.pathname,slug:v,name:g,langs:(i=m(p,{returnAll:!0}))!=null?i:p&&!t.multiLang&&t.defaultLang?[t.defaultLang]:void 0,tags:de(r,[...h??[],...y?[y]:[]]),imgUrl:m(u),chapters:[]};return e.id==="comick"?_(_({},w),await xt()):ve(_({},w),{chapters:await k(s,{siteMeta:t,lazy:!0,titleSlug:v,titleName:g})})}async function xt(){const e="https://api.comick.app/",[t]=await Promise.all([M(e,"comic",D,"chapters")]);if(!t)return{};const r=t.value,n=r.chapters.map(l=>{const{vol:a,chap:i,hid:o,lang:c,updated_at:u}=l,s=typeof i=="string"&&!isNaN(+i)?+i:void 0;if(typeof s=="number")return{slug:o,vol:typeof a=="string"&&!isNaN(+a)?+a:void 0,chap:s,lang:c,ts:new Date(u).valueOf()}}).filter(Boolean);return{hasMoreChapters:r.chapters.length<r.total,chapters:n}}async function Nt({tags:e}){var t,r,n;const l="https://api.mangadex.org/manga/",[a,i]=await Promise.all([M(l,D),M(l,D,"feed")]);if(!a||!i)return;const o=(n=(r=(t=i.value.data)==null?void 0:t.map)==null?void 0:r.call(t,s=>{const{attributes:p,id:d}=s;if(typeof p!="object"||typeof d!="string"||!d)return;const{externalUrl:f,title:g,volume:v,chapter:h,translatedLanguage:y}=p;return{slug:f||d,label:g||void 0,vol:typeof v=="string"?+v:void 0,chap:typeof h=="string"?+h:void 0,lang:y||"en",ts:new Date(p.readableAt).valueOf()}}).filter(s=>s?.chap!=null))!=null?n:[],{data:c}=a.value;if(!c)return;const u=me({data:c,entryTags:e});if(u)return ve(_({},u),{chapters:o,hasMoreChapters:(i.value.total||0)>(i.value.limit||0)})}function me({data:e,entryTags:t}){var r,n,l,a,i;const{id:o,attributes:c,relationships:u}=e;if(!o||typeof o!="string"||typeof c!="object")return;const{title:s,availableTranslatedLanguages:p,altTitles:d,tags:f,restrictedContent:g}=c;if(typeof s!="object"||!Array.isArray(p))return;const v=Object.values(s)[0];if(!v||typeof v!="string")return;const h=Tt(),y=(n=(r=p?.map)==null?void 0:r.call(p,j=>typeof j=="string"?j:void 0).filter(Boolean))!=null?n:[],w=y.filter(j=>j&&(!h||h.includes(j))),P=(l=d?.map)==null?void 0:l.call(d,j=>{const[[U,L]=[]]=Object.entries(j);return{lang:U,name:L}}),$=(a=u?.find)==null?void 0:a.call(u,j=>j.type==="cover_art"),b=(i=$?.attributes)==null?void 0:i.fileName,S=b?`https://mangadex.org/covers/${o}/${b}`:void 0,x=(f||[]).map(j=>{var U,L;return(L=(U=j?.attributes)==null?void 0:U.name)==null?void 0:L.en}).concat(g).filter(Boolean);return{type:O.title,url:`${location.origin}/title/${o}`,slug:o,name:v,altNames:P,langs:w.length>0?w:y,imgUrl:S,tags:de(t,x),isWebtoon:f?.some(j=>j.attributes.name.en==="Long Strip")}}function Tt(){var e;const t=localStorage.getItem("md");if(t)try{const r=JSON.parse(t),n=(e=r?.userPreferences)==null?void 0:e.filteredLanguages;return n!=null&&n.length?n:void 0}catch{return}}var Mt=Object.defineProperty,Ut=Object.defineProperties,Lt=Object.getOwnPropertyDescriptors,he=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Bt=Object.prototype.propertyIsEnumerable,ye=(e,t,r)=>t in e?Mt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,be=(e,t)=>{for(var r in t||(t={}))At.call(t,r)&&ye(e,r,t[r]);if(he)for(var r of he(t))Bt.call(t,r)&&ye(e,r,t[r]);return e},Rt=(e,t)=>Ut(e,Lt(t));async function Dt({spec:e,siteMeta:t,tags:r,lazy:n}){var l,a,i;if(e.id=="mangadex")return await Et({entryTags:r});if(!(e!=null&&e.reader)||!await It(e.reader,n))return;const o=await Ct({spec:e,siteMeta:t});if(!o)return;const{name:c,slug:u,chapters:s}=o,p=(l=m(e.reader.label))==null?void 0:l.toLowerCase().replace(c.toLowerCase(),"");if(!p)return;const{vol:d,chap:f=0}=Y(p,c)||{};let g;const v=(a=m(e.reader.img,{returnAll:!0,preProcess(b){const S=b.map(x=>+(x.getAttribute("height")||0)/+(x.getAttribute("width")||1));S.some(x=>x>2.5)?g=!0:S.filter(Boolean).length>Math.max(1,S.length-2)&&(g=!1)}}))!=null?a:[];if(!v.length)return;const h=le(t.readerBase,u),y=t.readerBase.split("/").indexOf("{lang}"),w=y!==-1?location.pathname.substring(1).split("/")[y]:void 0,P=w?h.replace("{lang}",w):h,$=w??m(e.reader.lang);return{type:O.reader,url:location.origin+location.pathname,isWebtoon:g,vol:d,inferVol:(i=s?.find(b=>b.vol===d&&b.chap===f))==null?void 0:i.inferVol,chap:f,lang:$,slug:G({basePath:P,fullPath:location.pathname,siteMeta:t}),nextSlug:we({sel:e.reader.next,basePath:P,siteMeta:t}),prevSlug:we({sel:e.reader.prev,basePath:P,siteMeta:t}),basePath:P,imgs:v,imgsLocator:e.reader.img,title:{type:O.title,url:o.url,slug:u,name:c,langs:$?[$]:void 0,chapters:s}}}async function Ct({spec:e,siteMeta:t}){var r,n;const{sel:l,name:a,url:i}=e.reader.title||{};if(!l||!a||!i)return;const o=document.querySelector(l);if(!(o instanceof HTMLElement))return;const c=m(a,{root:o}),u=m(i,{root:o}),s=z({url:u,siteMeta:t});if(!(!c||!u||!s))return{type:O.title,url:u,name:c,slug:s,chapters:e.id==="nettruyen"?await kt():(n=await k((r=e.reader)==null?void 0:r.chapter,{titleSlug:s,titleName:c,siteMeta:t}))!=null?n:[]}}function we({sel:e,basePath:t,siteMeta:r}){const n=m(e);if(!(!n||n.startsWith("#")||n.startsWith("/#")))return G({basePath:t,fullPath:B(n),siteMeta:r})}async function It(e,t){const{sel:r,img:n}=e;if(!r||!n||!await I(r,{lazy:t===!0}))return!1;const l=H(n).map(a=>a.split("|")[0]).join(",");return!!await I(l,{lazy:!0})}async function Et({entryTags:e}){var t,r,n,l,a,i,o,c,u,s,p,d,f,g,v,h;const y="https://api.mangadex.org/",[w,P,$]=await Promise.all([M(y,"chapter",D),M(y,"at-home","server",D),M(y,"manga",D,"aggregate")]);if(!w||!P||!$)return;const b=w.value.data,{volume:S,chapter:x,externalUrl:j,translatedLanguage:U}=b.attributes||{},{baseUrl:L,chapter:{data:or,dataSaver:ir,hash:sr}}=P.value,Ce=(r=(t=b.relationships)==null?void 0:t.find)==null?void 0:r.call(t,N=>N.type==="manga");if(!Ce)return;const X=me({data:Ce,entryTags:e});if(!X||typeof((n=$.value)==null?void 0:n.volumes)!="object")return;const A=Object.values($.value.volumes).map(({volume:N,chapters:dr})=>{const fr=N==="none"||typeof N!="string"?void 0:+N;return Object.values(dr).map(({id:gr,chapter:ee})=>typeof ee!="string"||ee==="none"?void 0:{vol:fr,chap:+ee,slug:gr})}).flat().filter(Boolean).reverse();if(typeof x!="string"||x==="none"){if(A.length)return;A.push({chap:0,slug:b.id})}W(A);const K=A.findIndex(N=>N.slug===b.id),q=(a=(l=b.relationships)==null?void 0:l.find)==null?void 0:a.call(l,N=>N.type==="scanlation_group"),ur=L.endsWith("/")?L:L+"/",Ie=!!((o=(i=localStorage.getItem("md"))==null?void 0:i.includes)!=null&&o.call(i,'"dataSaver":true')),cr=`${ur}${Ie?"data-saver":"data"}/`,pr=(p=(s=(u=(c=Ie?ir:or)!=null?c:[]).map)==null?void 0:s.call(u,N=>`${cr}${sr}/${N}`))!=null?p:[];return{type:O.reader,url:location.origin+location.pathname,externalUrl:j,vol:typeof S=="string"?+S:void 0,inferVol:(d=A[K])==null?void 0:d.inferVol,chap:+x||0,imgs:pr,lang:U,slug:b.id,prevSlug:(f=A[K+1])==null?void 0:f.slug,nextSlug:(g=A[K-1])==null?void 0:g.slug,basePath:"/chapter/",groupName:(v=q?.attributes)==null?void 0:v.name,groupUrl:(h=q?.attributes)==null?void 0:h.website,title:Rt(be({},X),{langs:U?[U]:X.langs,chapters:A})}}async function kt(){var e;const t=m(".next.a_next + .follow-link|attr:data-id"),r=await fetch(`https://www.nettruyenio.com/Comic/Services/ComicService.asmx/ProcessChapterList?comicId=${t}`).then(n=>n.status===200?n.json():void 0);return(e=r?.chapters)!=null&&e.length?W(r.chapters.map(n=>{const{name:l,url:a}=n,i=Y(l);if(!(!i||!a))return be({slug:B(a).split("/").filter(Boolean).slice(2).join("/")},i)})):[]}function Oe(e){if(e.length<=1)return;const t=e.slice(0,30).map(a=>a.split("/").filter(Boolean).slice(0,-1)),r=t[0],n=r.length;if(!n)return;const l=[];for(let a=0;a<n;a++){const i=r[a];if(!t.every(o=>o[a]===i))break;l.push(i)}if(l.length)return l.join("/")}async function Wt({spec:e,siteMeta:t}){var r;const n=(r=e.search)==null?void 0:r.title;if(!n)return;const{chapter:l}=n,a=[];if(await new Promise(o=>setTimeout(o,3e3)),await Promise.all(Array.from(document.querySelectorAll(n.sel)).map(async o=>{var c;const u=m(n.url,{root:o}),s=B(u);if(!s)return;const p=m(n.name,{root:o});if(!p)return;const d=m(n.img,{root:o}),f=d?V(d):void 0,g=z({url:s,siteMeta:t});g&&a.push({path:s,slug:g,img:f,name:p,chapters:(c=await k(l,{root:o,siteMeta:t,titleSlug:g,titleName:p}))!=null?c:[]})})),!a.length)return;const i=Oe(a.map(o=>o.path));return{type:O.search,url:location.origin+location.pathname,rawUpdates:a,newTitleBase:i!==t.titleBase?i:void 0}}var zt=Object.defineProperty,Pe=Object.getOwnPropertySymbols,_t=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable,$e=(e,t,r)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,qt=(e,t)=>{for(var r in t||(t={}))_t.call(t,r)&&$e(e,r,t[r]);if(Pe)for(var r of Pe(t))Ft.call(t,r)&&$e(e,r,t[r]);return e};function Vt(e,t){var r,n;const l=[...t],a=[];let i=-1,o=-1;for(let u=0;u<e.length&&!(!l.length&&u>=10);u++){const s=qt({},e[u]),p=l.findIndex(g=>g.slug===s.slug&&g.name===s.name),d=p===-1?void 0:l.splice(p,1)[0],f=!d||((r=d.chapters[0])==null?void 0:r.chap)!==((n=s.chapters[0])==null?void 0:n.chap);p!==-1&&(o=u),f&&(i=u,s.changed=!0),a.push(s)}if(i===-1)return[];if(l.length){const u=Math.max(10,o+1);a.splice(u);for(let s=o+1;s<a.length;s++)a[s].changed=!1;return a}const c=Math.min(Math.max(i+1,10),Math.max(o+1,50));return a.slice(0,c)}var Ht=Object.defineProperty,Yt=Object.defineProperties,Gt=Object.getOwnPropertyDescriptors,F=Object.getOwnPropertySymbols,je=Object.prototype.hasOwnProperty,Se=Object.prototype.propertyIsEnumerable,xe=(e,t,r)=>t in e?Ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,Ne=(e,t)=>{for(var r in t||(t={}))je.call(t,r)&&xe(e,r,t[r]);if(F)for(var r of F(t))Se.call(t,r)&&xe(e,r,t[r]);return e},Qt=(e,t)=>Yt(e,Gt(t)),Te=(e,t)=>{var r={};for(var n in e)je.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&F)for(var n of F(e))t.indexOf(n)<0&&Se.call(e,n)&&(r[n]=e[n]);return r};async function Me(e){return e.spec.id=="mangadex"?await Jt(e):e.spec.id=="comick"?await Xt(e):await Zt(e)}async function Zt({spec:e,siteMeta:t,root:r,lazy:n,oldRawUpdates:l}){var a;if(!((a=e?.update)!=null&&a.title))return;const i=e.update.title,{chapter:o}=i,c=Te(i,["chapter"]);if(!c.sel||!c.name||!(o!=null&&o.sel)||!(o!=null&&o.label))return;const u=await I(c.sel,{root:r,lazy:n??!0,all:!0});if(!(u!=null&&u.length))return;const s=u.map(f=>{const g=m(c.url,{root:f}),v=B(g);if(!v)return;const h=m(c.name,{root:f});if(!h)return;const y=m(c.img,{root:f}),w=y?V(y):void 0;return{titleEl:f,path:v,img:w,name:h,lang:m(c.lang,{root:f})}}).filter(Boolean);if(!s.length)return;const p=Oe(s.map(f=>f.path)),d=await Promise.all(s.map(async f=>{var g;const v=f,{path:h,titleEl:y,lang:w}=v,P=Te(v,["path","titleEl","lang"]),$=z({url:h,siteMeta:t}),b=(g=await k(o,{siteMeta:t,root:y,titleSlug:$,titleName:P?.name}))!=null?g:[];return Ne({slug:$,chapters:w?b.map(S=>{var x;return Qt(Ne({},S),{lang:(x=S.lang)!=null?x:w})}):b},P)}));return Z({newTitleBase:p&&p!==t.titleBase?p:void 0,rawUpdates:d,oldRawUpdates:l})}async function Jt(e){const t="https://api.mangadex.org/",[r,n]=await Promise.all([M(t,"chapter"),M(t,"manga")]);if(!n||!r)return;const l={};n.value.data.forEach(({id:i,relationships:o})=>{var c;const u=o.find(({type:p})=>p==="cover_art"),s=(c=u?.attributes)==null?void 0:c.fileName;s&&(l[i]=`https://mangadex.org/covers/${i}/${s}`)});const a=r.value.data.map(({relationships:i,attributes:o,id:c})=>{const u=i.find(({type:d})=>d==="manga"),s=typeof o.volume=="string"?+o.volume:void 0,p=typeof o.chapter=="string"?+o.chapter:void 0;if(p)return{slug:u.id,name:Object.values(u.attributes.title)[0],img:l[u.id],chapters:[{slug:o.externalUrl||c,label:o.title||void 0,vol:s,chap:p,lang:o.translatedLanguage,ts:new Date(o.readableAt).valueOf()}]}}).filter(Boolean);return Z({rawUpdates:Ue(a),oldRawUpdates:e?.oldRawUpdates})}async function Xt(e){const t="https://api.comick.app/",[r]=await Promise.all([M(t,"chapter")]);if(!r)return;const n=r.value.chapters.map(l=>{var a,i;const{vol:o,chap:c,hid:u,lang:s,updated_at:p,md_comics:d}=l,f=typeof c=="string"&&!isNaN(+c)?+c:void 0;if(typeof f!="number")return;const g=(i=(a=d.md_covers)==null?void 0:a[0])==null?void 0:i.b2key;return{slug:d.hid,name:d.title,img:typeof g=="string"?`https://meo.comick.pictures/${g}`:void 0,chapters:[{slug:u,vol:typeof o=="string"&&!isNaN(+o)?+o:void 0,chap:f,lang:s,ts:new Date(p).valueOf()}]}}).filter(Boolean);return Z({rawUpdates:n,oldRawUpdates:e?.oldRawUpdates})}function Ue(e){const t={};return e.forEach(r=>{Object.values(r.chapters.reduce((n,l)=>{const a=l.lang||"default";return n[a]||(n[a]=[]),n[a].push(l),n},{})).forEach(n=>{var l;const a=(l=n[0])==null?void 0:l.lang,i=`${r.slug}:${a||""}`;t[i]?(t[i].chapters.push(...n),W(t[i].chapters)):t[i]=r})}),Object.values(t)}function Z(e){var t;const r=Ue(e.rawUpdates);if(r.length)return{type:O.update,url:(t=pe())!=null?t:"",newTitleBase:e.newTitleBase,rawUpdates:e.oldRawUpdates?Vt(r,e.oldRawUpdates):r}}var Kt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,Le=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,Ae=(e,t,r)=>t in e?Kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,J=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&Ae(e,r,t[r]);if(Le)for(var r of Le(t))nr.call(t,r)&&Ae(e,r,t[r]);return e},Be=(e,t)=>er(e,tr(t));const Re=[{type:O.reader,builder:Dt,fallback:!0},{type:O.title,builder:St,fallback:!0},{type:O.search,builder:Wt},{type:O.update,builder:Me}];async function ar(e){var t;const r=e.spec;if(r){const n=(t=e.siteMeta)!=null?t:r.meta,l=De(n,e.type),a=l.length===1;return await re(l.map(async({builder:i})=>{const o=await i({spec:r,siteMeta:n,tags:e.tags,oldRawUpdates:e.oldRawUpdates,lazy:a});return o?Be(J({},o),{siteName:m(r.name)}):void 0}))}if(e.genericSpecs)return await re(e.genericSpecs.map(n=>De(n.meta).map(async({builder:l})=>{const a=await l({spec:n,siteMeta:n.meta,tags:e.tags});return a?Be(J({},a),{siteName:m(n.name),specId:n.id,siteMeta:J({},n.meta)}):void 0})).flat())}function De(e,t){const r=t??(e?lr(e):void 0);return r?Re.filter(n=>n.type===r):Re.filter(n=>n.fallback)}function lr(e){const t=location.pathname.split("?")[0].split("#")[0];if(t==="/")return;const r=e.titleBase,n=e.readerBase,l=n?.includes("{titleSlug}");if(n&&!l&&t.startsWith(`/${n}/`)||n&&l&&new RegExp(`^/${n.replace("{titleSlug}",".+")}/.+`).test(t))return O.reader;if(r&&t.startsWith("/"+r))return O.title}T.PageType=O,T.getImgNameFromUrl=V,T.getRawPageData=ar,T.getRawUpdateData=Me,T.getSubCommands=H,T.processCommand=m});
|
|
1
|
+
(function(M,C){typeof exports=="object"&&typeof module<"u"?C(exports):typeof define=="function"&&define.amd?define(["exports"],C):(M=typeof globalThis<"u"?globalThis:M||self,C(M._trackkun_={}))})(this,function(M){"use strict";const C={text:Ee,attr:ke,"attr-contain":We,value:ze,row:_e};function m(e,t={}){if(!e)return;const{root:r=document.documentElement,returnAll:n,preProcess:l}=t,a=V(e);if(a.length>1){for(let p=0;p<a.length;p+=1){const d=m(a[p],t);if(d!=null&&d.length)return d}return}const[i,o]=e.split("|");if(!o)return;const c=(o!=null&&o.startsWith("[")&&o.endsWith("]")?o.substring(1,o.length-1).split(","):[o]).map(p=>{const d=p.indexOf(":"),f=d!==-1;return{action:f?p.substring(0,d):p,param:f?p.substring(d+1):""}}),u=i?Array.from(r.querySelectorAll(i)):[r];if(!u.length)return n?[]:void 0;l&&l(u);const s=[];for(const p of u)for(const d of c){const f=C[d.action],g=f(p,d.param);if(g){if(n){s.push(g);break}return g}}return n?s:void 0}function Ee(e){return Array.from(e.childNodes).filter(t=>t.nodeType===3).map(t=>B(t.textContent)).filter(Boolean).join(" ").trim()||B(e.textContent)}function ke(e,t){return B(e.getAttribute(t))}function We(e,t){let r=e.getAttribute(t);if(!r){const n=e.getAttributeNames().find(l=>l.includes(t));n&&(r=e.getAttribute(n))}return B(r)}function V(e){const t=[],r=e.split("||").map(n=>n.trim()).filter(Boolean);return r.forEach((n,l)=>{if(n.includes("|")){t.push(n);return}const a=r[l+1];a&&(r[l+1]=`${n},${a}`)}),t}function ze(e){return e.value}function _e(e,t){var r,n;if(!t)return;const l=(r=B(e.textContent))==null?void 0:r.toLowerCase(),a=t.toLowerCase();if(!(l!==a&&l!==`${a}:`))return B((n=e.nextElementSibling)==null?void 0:n.textContent)}function B(e){if(e)return e?.replace(/(\n|\t)/g," ").trim()||void 0}const Fe="webp",ee=["jpg","jpng","png","webp","svg","gif","avif","apng","bmp"];function H(e){return`${qe(e)}.${Fe}`}function qe(e){const t=e.split("?")[0].split("#")[0].split("/").filter(Boolean),r=Ve(t.slice(-1)[0]);return r.length>=16?r:t.slice(0,-1).join("").slice(r.length-16)+r}function Ve(e){const t=He(e),r=t.replace(/-\d{3}x\d{3}$/,"");if(r!==t||t===e)return r;const n=t.split(".").reverse();if(n.length<3)return t;const[l,a,...i]=n;return!a||!ee.includes(a)||!l||isNaN(+l)?t:i.reverse().join(".")}function He(e){const t=e.lastIndexOf(".");if(t===-1)return e;const r=e.substring(t+1);return ee.includes(r)?e.substring(0,t):e}function te(e){let t=!1;return new Promise((r,n)=>{Promise.all(e.map(async l=>{const a=await l;!t&&a&&(t=!0,r(a))})).then(()=>{t||r(void 0)})})}async function re(e,t,r){const n=await r(()=>{e=0});if(n)return n;if(!(e<=0))return await new Promise(l=>{setTimeout(async()=>{const a=await re(e-1,t,r);l(a)},t)})}async function I(e,t,r=0){var n;const l=(n=t.root)!=null?n:document.documentElement;return re(t.lazy===!0?200:0,100,()=>{var a;const i=t.all===!0?Array.from(l.querySelectorAll(e)):(a=l.querySelector(e))!=null?a:void 0;return(t.all?!(i!=null&&i.length):!i)?void 0:i})}const Ye=/(vol(ume|\.)?\s*(\d+))/i,Ge=/(ch(ap(t(er)?|\.)?|\.)?|^#)\s*(\d+([_-~,.]\d+)?)/i,Qe=/\d+([_-~,.]\d+)?/,Ze=/[_-~,]/,Je=/^[^a-zA-Z0-9]*|[^a-zA-Z0-9]*$/g;function Y(e,t){var r;if(!e||!e)return;if(!isNaN(+e))return{chap:+e};const n=e.match(Ye),l=n!=null&&n[0]?e.replace(n[0],"").trim():e,a=l.match(Ge),i=l.match(Qe),o=(r=a?.[5])!=null?r:i?.[0];if(!o)return;const c=+o.replace(Ze,".");if(isNaN(c))return;const u=n?.[3],s=u&&!isNaN(+u)?+u:void 0,p=l.replace((a||i)[0],"").replace(Je,""),d=t&&p.startsWith(t)?p.replace(t,""):p;return{vol:s,chap:c,label:d||void 0}}const ne=[{regex:/(sec(ond(s)?)? ago|giây trước)/,seconds:1},{regex:/(min(s|ute(s)?)? ago|phút trước)/,seconds:60},{regex:/(hour(s)? ago|giờ trước)/,seconds:3600},{regex:/(day(s)? ago|ngày trước)/,seconds:86400},{regex:/(week(s)? ago|tuần trước)/,seconds:604800},{regex:/(month(s)? ago|tháng trước)/,seconds:2592e3},{regex:/(year(s)? ago|năm trước)/,seconds:31536e3}];function Xe(e){if(!e||e.includes("now"))return Date.now();if(e.includes("yesterday"))return Date.now()-864e5;const t=new Date(e);if(t instanceof Date){const r=t.valueOf();if(!isNaN(r))return t.getHours()===0&&t.getMinutes()===0?Math.min(Date.now(),r+432e5):r}for(let r=0;r<ne.length;r++){const{regex:n,seconds:l}=ne[r];if(n.test(e)){const a=e.split(" ").slice(-3)[0],i=a=="an"||a==="a"?1:+a;if(isNaN(i)||i<0)return;const o=Date.now()-i*l*1e3;return o>0?o:void 0}}}function ae(e,t){if(!e)return"/";const r=e.replace("{titleSlug}",t),n=r.endsWith("/")?r:r+"/";return n.startsWith("/")?n:"/"+n}var Ke=(e=>(e[e.reading=1]="reading",e[e.paused=2]="paused",e[e.plan=3]="plan",e[e.completed=4]="completed",e[e.dropped=5]="dropped",e[e.deleted=6]="deleted",e))(Ke||{}),k=(e=>(e[e.none=0]="none",e[e.removeLastSegment=1]="removeLastSegment",e[e.removeIdAfterLastDash=2]="removeIdAfterLastDash",e[e.removeIdBeforeFirstDash=3]="removeIdBeforeFirstDash",e))(k||{}),le=(e=>(e[e.none=0]="none",e[e.removePage=1]="removePage",e))(le||{}),et=(e=>(e[e.string=1]="string",e[e.number=2]="number",e[e.bool=3]="bool",e[e.selection=4]="selection",e))(et||{}),tt=(e=>(e[e.SiteUpdate=1]="SiteUpdate",e[e.SiteTitleImg=2]="SiteTitleImg",e))(tt||{});function G({basePath:e,fullPath:t,siteMeta:r}){if(!t)return;const n=t.replace(e,"");switch(r.readerSlugTransformer){case le.removePage:return n.replace(/-page-\d{1,3}\.html$/,".html");default:return n}}function rt(e,{removeTrailingSlash:t=!0}={}){if(!e)return;const r=t&&e.endsWith("/")?e.slice(0,-1):e;try{return new URL(r)}catch{return}}function A(e){var t;if(!(!e||typeof e!="string"))return e.startsWith("http://")||e.startsWith("https://")?(t=rt(e))==null?void 0:t.pathname:e}var nt=Object.defineProperty,at=Object.defineProperties,lt=Object.getOwnPropertyDescriptors,oe=Object.getOwnPropertySymbols,ot=Object.prototype.hasOwnProperty,it=Object.prototype.propertyIsEnumerable,ie=(e,t,r)=>t in e?nt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,st=(e,t)=>{for(var r in t||(t={}))ot.call(t,r)&&ie(e,r,t[r]);if(oe)for(var r of oe(t))it.call(t,r)&&ie(e,r,t[r]);return e},ut=(e,t)=>at(e,lt(t));async function W(e,{root:t=document.documentElement,titleSlug:r="",titleName:n,lazy:l=!0,siteMeta:a}){var i;if(!e)return;const o=[],c=await I(e.sel,{root:t,all:!0,lazy:l});if(!(c!=null&&c.length))return o;const u=(c??[]).map(v=>({label:m(e.label,{root:v}),url:m(e.url,{root:v}),at:m(e.at,{root:v})})),s=u.map(({label:v})=>Y(v,n)),p=(i=s[1])==null?void 0:i.chap;!s[0]&&(p===void 0||p<=1)&&(s[0]={label:u[0].label,chap:0});const d=ae(a.readerBase,r),f=a.readerBase.split("/").indexOf("{lang}"),g=f!==-1;return s.forEach((v,y)=>{var h;if(!v)return;const{url:w,at:P}=u[y],$=A(w),b=g?$?.substring(1).split("/")[f]:void 0,S=G({basePath:b?d.replace("{lang}",b):d,fullPath:$,siteMeta:a});S&&o.push(ut(st({},v),{slug:S,lang:b,ts:Xe(P)||((h=o[o.length+1])==null?void 0:h.ts)||Date.now()}))}),E(o)}function E(e){return e.sort((t,r)=>t.vol===void 0||r.vol===void 0?r.chap-t.chap:r.vol-t.vol||r.chap-t.chap),ct(e)}function ct(e){let t;for(let r=e.length-1;r>=0;r--){const n=e[r];n.vol!==void 0?t=n.vol:t!==void 0&&(n.inferVol=t)}return e}function z({url:e,siteMeta:t}){var r;if(typeof e!="string")return;const n=t.titleSlugTransformer,l=(r=A(e))==null?void 0:r.split("/").filter(Boolean);if(!l||!l.length)return e;const a=l[l.length-1];switch(n){case k.removeLastSegment:return l.length>2?l[l.length-2]:a;case k.removeIdAfterLastDash:{const i=a.lastIndexOf("-"),o=+a.substring(i+1);return i===-1||isNaN(o)||o<1e4?a:a.substring(0,i)}case k.removeIdBeforeFirstDash:{const i=a.indexOf("-"),o=+a.substring(0,i);return i===-1||isNaN(o)||o<1e3?a:a.substring(i+1)}default:return a}}function pt(){return Math.random().toString(16).slice(2)}async function dt({addListener:e,removeListener:t,transform:r,filter:n,handler:l,onTimeout:a,timeout:i,once:o}){return new Promise(c=>{e(p);const u=()=>o===!0&&t(p),s=i?setTimeout(()=>{u(),c(void 0),a?.()},i):void 0;async function p(d,...f){d=r?r(d):d,d!==void 0&&(!n||n(d,...f))&&(u(),c(d),l?.(d,...f),s&&clearTimeout(s))}})}var ft=Object.defineProperty,se=Object.getOwnPropertySymbols,gt=Object.prototype.hasOwnProperty,vt=Object.prototype.propertyIsEnumerable,ue=(e,t,r)=>t in e?ft(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,mt=(e,t)=>{for(var r in t||(t={}))gt.call(t,r)&&ue(e,r,t[r]);if(se)for(var r of se(t))vt.call(t,r)&&ue(e,r,t[r]);return e};async function ht(e){const t=await dt(mt({addListener:r=>window.addEventListener("message",r),removeListener:r=>window.removeEventListener("message",r)},e));return t?.data}async function yt(e){var t;const{receiverWindow:r,timeout:n,targetOrigin:l,event:a,args:i}=e,o={reqId:pt(),event:a,args:i};(t=r||window)==null||t.postMessage(o,l??"*");const c=await ht({filter:u=>{var s;return((s=u?.data)==null?void 0:s.resId)===o.reqId},timeout:n??3e4,once:!0});return c?.result}const D={isAny:!0};function T(e,...t){return yt({event:"tk:fetchResult",args:{baseUrl:e,segments:t}})}const bt='meta[property="og:url"]|attr:content,meta[name="url"]|attr:content';function ce(e=document.documentElement){try{return window.location.origin+window.location.pathname}catch{}const t=m(bt,{root:e});if(!(!t||A(t)==="/"))return t}function pe(e,t){if(!(t!=null&&t.length))return;const r={};e.forEach(({id:l,name:a,altNames:i})=>{r[Q(a)]=l,i&&i.forEach(o=>{r[Q(o)]=l})});const n=t.map(l=>r[Q(l)]).filter(Boolean);return n.length===0?void 0:Array.from(new Set(n)).sort((l,a)=>l-a)}function Q(e){const t=e.toLowerCase().replaceAll(" ","");return t[t.length-1]==="s"?t.substring(0,t.length-1):t}var O=(e=>(e.title="title",e.reader="reader",e.update="update",e.search="search",e))(O||{}),wt=Object.defineProperty,Ot=Object.defineProperties,Pt=Object.getOwnPropertyDescriptors,de=Object.getOwnPropertySymbols,$t=Object.prototype.hasOwnProperty,jt=Object.prototype.propertyIsEnumerable,fe=(e,t,r)=>t in e?wt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,_=(e,t)=>{for(var r in t||(t={}))$t.call(t,r)&&fe(e,r,t[r]);if(de)for(var r of de(t))jt.call(t,r)&&fe(e,r,t[r]);return e},ge=(e,t)=>Ot(e,Pt(t));async function St({spec:e,siteMeta:t,tags:r,lazy:n}){var l,a;if(e.id=="mangadex")return await Nt({tags:r});if(!(e!=null&&e.title))return;const{sel:i,name:o,img:c,chapter:u,langs:s,tags:p,type:d}=e.title;if(!i||!o||!u||!await I(i,{lazy:n||((l=e.title.lazy)!=null?l:!1)}))return;const f=m(o);if(!f)return;const g=z({url:ce(),siteMeta:t});if(!g)return;let v=(a=m(p,{returnAll:!0}))!=null?a:[];v.length===1&&(v=v[0].split(",").map(P=>P.trim()).filter(Boolean));const y=m(d),h=m(s,{returnAll:!0}),w={type:O.title,url:location.origin+location.pathname,slug:g,name:f,langs:h!=null&&h.length?h:s&&!t.multiLang&&t.defaultLang?[t.defaultLang]:void 0,tags:pe(r,[...v??[],...y?[y]:[]]),imgUrl:m(c),chapters:[]};return e.id==="comick"?_(_({},w),await xt()):ge(_({},w),{chapters:await W(u,{siteMeta:t,lazy:!0,titleSlug:g,titleName:f})})}async function xt(){const e="https://api.comick.app/",[t]=await Promise.all([T(e,"comic",D,"chapters")]);if(!t)return{};const r=t.value,n=r.chapters.map(l=>{const{vol:a,chap:i,hid:o,lang:c,updated_at:u}=l,s=typeof i=="string"&&!isNaN(+i)?+i:void 0;if(typeof s=="number")return{slug:o,vol:typeof a=="string"&&!isNaN(+a)?+a:void 0,chap:s,lang:c,ts:new Date(u).valueOf()}}).filter(Boolean);return{hasMoreChapters:r.chapters.length<r.total,chapters:n}}async function Nt({tags:e}){var t,r,n;const l="https://api.mangadex.org/manga/",[a,i]=await Promise.all([T(l,D),T(l,D,"feed")]);if(!a||!i)return;const o=(n=(r=(t=i.value.data)==null?void 0:t.map)==null?void 0:r.call(t,s=>{const{attributes:p,id:d}=s;if(typeof p!="object"||typeof d!="string"||!d)return;const{externalUrl:f,title:g,volume:v,chapter:y,translatedLanguage:h}=p;return{slug:f||d,label:g||void 0,vol:typeof v=="string"?+v:void 0,chap:typeof y=="string"?+y:void 0,lang:h||"en",ts:new Date(p.readableAt).valueOf()}}).filter(s=>s?.chap!=null))!=null?n:[],{data:c}=a.value;if(!c)return;const u=ve({data:c,entryTags:e});if(u)return ge(_({},u),{chapters:E(o),hasMoreChapters:(i.value.total||0)>(i.value.limit||0)})}function ve({data:e,entryTags:t}){var r,n,l,a,i;const{id:o,attributes:c,relationships:u}=e;if(!o||typeof o!="string"||typeof c!="object")return;const{title:s,availableTranslatedLanguages:p,altTitles:d,tags:f,contentRating:g}=c;if(typeof s!="object"||!Array.isArray(p))return;const v=Object.values(s)[0];if(!v||typeof v!="string")return;const y=Mt(),h=(n=(r=p?.map)==null?void 0:r.call(p,j=>typeof j=="string"?j:void 0).filter(Boolean))!=null?n:[],w=h.filter(j=>j&&(!y||y.includes(j))),P=(l=d?.map)==null?void 0:l.call(d,j=>{const[[L,U]=[]]=Object.entries(j);return{lang:L,name:U}}),$=(a=u?.find)==null?void 0:a.call(u,j=>j.type==="cover_art"),b=(i=$?.attributes)==null?void 0:i.fileName,S=b?`https://mangadex.org/covers/${o}/${b}`:void 0,x=(f||[]).map(j=>{var L,U;return(U=(L=j?.attributes)==null?void 0:L.name)==null?void 0:U.en}).concat(g).filter(Boolean);return{type:O.title,url:`${location.origin}/title/${o}`,slug:o,name:v,altNames:P,langs:w.length>0?w:h,imgUrl:S,tags:pe(t,x),isWebtoon:f?.some(j=>j.attributes.name.en==="Long Strip")}}function Mt(){var e;const t=localStorage.getItem("md");if(t)try{const r=JSON.parse(t),n=(e=r?.userPreferences)==null?void 0:e.filteredLanguages;return n!=null&&n.length?n:void 0}catch{return}}var Tt=Object.defineProperty,Ut=Object.defineProperties,Rt=Object.getOwnPropertyDescriptors,me=Object.getOwnPropertySymbols,At=Object.prototype.hasOwnProperty,Bt=Object.prototype.propertyIsEnumerable,he=(e,t,r)=>t in e?Tt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,ye=(e,t)=>{for(var r in t||(t={}))At.call(t,r)&&he(e,r,t[r]);if(me)for(var r of me(t))Bt.call(t,r)&&he(e,r,t[r]);return e},Dt=(e,t)=>Ut(e,Rt(t));async function Lt({spec:e,siteMeta:t,tags:r,lazy:n}){var l,a,i;if(e.id=="mangadex")return await Et({entryTags:r});if(!(e!=null&&e.reader)||!await It(e.reader,n))return;const o=await Ct({spec:e,siteMeta:t});if(!o)return;const{name:c,slug:u,chapters:s}=o,p=(l=m(e.reader.label))==null?void 0:l.toLowerCase().replace(c.toLowerCase(),"");if(!p)return;const{vol:d,chap:f=0}=Y(p,c)||{};let g;const v=(a=m(e.reader.img,{returnAll:!0,preProcess(b){const S=b.map(x=>+(x.getAttribute("height")||0)/+(x.getAttribute("width")||1));S.some(x=>x>2.5)?g=!0:S.filter(Boolean).length>Math.max(1,S.length-2)&&(g=!1)}}))!=null?a:[];if(!v.length)return;const y=ae(t.readerBase,u),h=t.readerBase.split("/").indexOf("{lang}"),w=h!==-1?location.pathname.substring(1).split("/")[h]:void 0,P=w?y.replace("{lang}",w):y,$=w??m(e.reader.lang);return{type:O.reader,url:location.origin+location.pathname,isWebtoon:g,vol:d,inferVol:(i=s?.find(b=>b.vol===d&&b.chap===f))==null?void 0:i.inferVol,chap:f,lang:$,slug:G({basePath:P,fullPath:location.pathname,siteMeta:t}),nextSlug:be({sel:e.reader.next,basePath:P,siteMeta:t}),prevSlug:be({sel:e.reader.prev,basePath:P,siteMeta:t}),basePath:P,imgs:v,imgsLocator:e.reader.img,title:{type:O.title,url:o.url,slug:u,name:c,langs:$?[$]:void 0,chapters:s}}}async function Ct({spec:e,siteMeta:t}){var r,n;const{sel:l,name:a,url:i}=e.reader.title||{};if(!l||!a||!i)return;const o=document.querySelector(l);if(!(o instanceof HTMLElement))return;const c=m(a,{root:o}),u=m(i,{root:o}),s=z({url:u,siteMeta:t});if(!(!c||!u||!s))return{type:O.title,url:u,name:c,slug:s,chapters:e.id==="nettruyen"?await kt():(n=await W((r=e.reader)==null?void 0:r.chapter,{titleSlug:s,titleName:c,siteMeta:t}))!=null?n:[]}}function be({sel:e,basePath:t,siteMeta:r}){const n=m(e);if(!(!n||n.startsWith("#")||n.startsWith("/#")))return G({basePath:t,fullPath:A(n),siteMeta:r})}async function It(e,t){const{sel:r,img:n}=e;if(!r||!n||!await I(r,{lazy:t===!0}))return!1;const l=V(n).map(a=>a.split("|")[0]).join(",");return!!await I(l,{lazy:!0})}async function Et({entryTags:e}){var t,r,n,l,a,i,o,c,u,s,p,d,f,g,v,y;const h="https://api.mangadex.org/",[w,P,$]=await Promise.all([T(h,"chapter",D),T(h,"at-home","server",D),T(h,"manga",D,"aggregate")]);if(!w||!P||!$)return;const b=w.value.data,{volume:S,chapter:x,externalUrl:j,translatedLanguage:L}=b.attributes||{},{baseUrl:U,chapter:{data:or,dataSaver:ir,hash:sr}}=P.value,Le=(r=(t=b.relationships)==null?void 0:t.find)==null?void 0:r.call(t,N=>N.type==="manga");if(!Le)return;const Ce=ve({data:Le,entryTags:e});if(!Ce||typeof((n=$.value)==null?void 0:n.volumes)!="object")return;const R=Object.values($.value.volumes).map(({volume:N,chapters:dr})=>{const fr=N==="none"||typeof N!="string"?void 0:+N;return Object.values(dr).map(({id:gr,chapter:K})=>typeof K!="string"||K==="none"?void 0:{vol:fr,chap:+K,slug:gr})}).flat().filter(Boolean).reverse();if(typeof x!="string"||x==="none"){if(R.length)return;R.push({chap:0,slug:b.id})}E(R);const X=R.findIndex(N=>N.slug===b.id),q=(a=(l=b.relationships)==null?void 0:l.find)==null?void 0:a.call(l,N=>N.type==="scanlation_group"),ur=U.endsWith("/")?U:U+"/",Ie=!!((o=(i=localStorage.getItem("md"))==null?void 0:i.includes)!=null&&o.call(i,'"dataSaver":true')),cr=`${ur}${Ie?"data-saver":"data"}/`,pr=(p=(s=(u=(c=Ie?ir:or)!=null?c:[]).map)==null?void 0:s.call(u,N=>`${cr}${sr}/${N}`))!=null?p:[];return{type:O.reader,url:location.origin+location.pathname,externalUrl:j,vol:typeof S=="string"?+S:void 0,inferVol:(d=R[X])==null?void 0:d.inferVol,chap:+x||0,imgs:pr,lang:L,slug:b.id,prevSlug:(f=R[X+1])==null?void 0:f.slug,nextSlug:(g=R[X-1])==null?void 0:g.slug,basePath:"/chapter/",groupName:(v=q?.attributes)==null?void 0:v.name,groupUrl:(y=q?.attributes)==null?void 0:y.website,title:Dt(ye({},Ce),{chapters:R})}}async function kt(){var e;const t=m(".next.a_next + .follow-link|attr:data-id"),r=await fetch(`https://www.nettruyenio.com/Comic/Services/ComicService.asmx/ProcessChapterList?comicId=${t}`).then(n=>n.status===200?n.json():void 0).catch(()=>[]);return(e=r?.chapters)!=null&&e.length?E(r.chapters.map(n=>{const{name:l,url:a}=n,i=Y(l);if(!(!i||!a))return ye({slug:A(a).split("/").filter(Boolean).slice(2).join("/")},i)})):[]}function we(e){if(e.length<=1)return;const t=e.slice(0,30).map(a=>a.split("/").filter(Boolean).slice(0,-1)),r=t[0],n=r.length;if(!n)return;const l=[];for(let a=0;a<n;a++){const i=r[a];if(!t.every(o=>o[a]===i))break;l.push(i)}if(l.length)return l.join("/")}async function Wt({spec:e,siteMeta:t}){var r;const n=(r=e.search)==null?void 0:r.title;if(!n)return;const{chapter:l}=n,a=[];if(await new Promise(o=>setTimeout(o,3e3)),await Promise.all(Array.from(document.querySelectorAll(n.sel)).map(async o=>{var c;const u=m(n.url,{root:o}),s=A(u);if(!s)return;const p=m(n.name,{root:o});if(!p)return;const d=m(n.img,{root:o}),f=d?H(d):void 0,g=z({url:s,siteMeta:t});g&&a.push({path:s,slug:g,img:f,name:p,chapters:(c=await W(l,{root:o,siteMeta:t,titleSlug:g,titleName:p}))!=null?c:[]})})),!a.length)return;const i=we(a.map(o=>o.path));return{type:O.search,url:location.origin+location.pathname,rawUpdates:a,newTitleBase:i!==t.titleBase?i:void 0}}var zt=Object.defineProperty,Oe=Object.getOwnPropertySymbols,_t=Object.prototype.hasOwnProperty,Ft=Object.prototype.propertyIsEnumerable,Pe=(e,t,r)=>t in e?zt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,qt=(e,t)=>{for(var r in t||(t={}))_t.call(t,r)&&Pe(e,r,t[r]);if(Oe)for(var r of Oe(t))Ft.call(t,r)&&Pe(e,r,t[r]);return e};function Vt(e,t){var r,n;const l=[...t],a=[];let i=-1,o=-1;for(let u=0;u<e.length&&!(!l.length&&u>=10);u++){const s=qt({},e[u]),p=l.findIndex(g=>g.slug===s.slug&&g.name===s.name),d=p===-1?void 0:l.splice(p,1)[0],f=!d||((r=d.chapters[0])==null?void 0:r.chap)!==((n=s.chapters[0])==null?void 0:n.chap);p!==-1&&(o=u),f&&(i=u,s.changed=!0),a.push(s)}if(i===-1)return[];if(l.length){const u=Math.max(10,o+1);a.splice(u);for(let s=o+1;s<a.length;s++)a[s].changed=!1;return a}const c=Math.min(Math.max(i+1,10),Math.max(o+1,50));return a.slice(0,c)}var Ht=Object.defineProperty,Yt=Object.defineProperties,Gt=Object.getOwnPropertyDescriptors,F=Object.getOwnPropertySymbols,$e=Object.prototype.hasOwnProperty,je=Object.prototype.propertyIsEnumerable,Se=(e,t,r)=>t in e?Ht(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,xe=(e,t)=>{for(var r in t||(t={}))$e.call(t,r)&&Se(e,r,t[r]);if(F)for(var r of F(t))je.call(t,r)&&Se(e,r,t[r]);return e},Qt=(e,t)=>Yt(e,Gt(t)),Ne=(e,t)=>{var r={};for(var n in e)$e.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&F)for(var n of F(e))t.indexOf(n)<0&&je.call(e,n)&&(r[n]=e[n]);return r};async function Me(e){return e.spec.id=="mangadex"?await Jt(e):e.spec.id=="comick"?await Xt(e):await Zt(e)}async function Zt({spec:e,siteMeta:t,root:r,lazy:n,oldRawUpdates:l}){var a;if(!((a=e?.update)!=null&&a.title))return;const i=e.update.title,{chapter:o}=i,c=Ne(i,["chapter"]);if(!c.sel||!c.name||!(o!=null&&o.sel)||!(o!=null&&o.label))return;const u=await I(c.sel,{root:r,lazy:n??!0,all:!0});if(!(u!=null&&u.length))return;const s=u.slice(0,100).map(f=>{const g=m(c.url,{root:f}),v=A(g);if(!v)return;const y=m(c.name,{root:f});if(!y)return;const h=m(c.img,{root:f}),w=h?H(h):void 0;return{titleEl:f,path:v,img:w,name:y,lang:m(c.lang,{root:f})}}).filter(Boolean);if(!s.length)return;const p=we(s.map(f=>f.path)),d=await Promise.all(s.map(async f=>{var g;const v=f,{path:y,titleEl:h,lang:w}=v,P=Ne(v,["path","titleEl","lang"]),$=z({url:y,siteMeta:t}),b=(g=await W(o,{siteMeta:t,root:h,titleSlug:$,titleName:P?.name}))!=null?g:[];return xe({slug:$,chapters:w?b.map(S=>{var x;return Qt(xe({},S),{lang:(x=S.lang)!=null?x:w})}):b},P)}));return Z({newTitleBase:p&&p!==t.titleBase?p:void 0,rawUpdates:d,oldRawUpdates:l})}async function Jt(e){const t="https://api.mangadex.org/",[r,n]=await Promise.all([T(t,"chapter"),T(t,"manga")]);if(!n||!r)return;const l={};n.value.data.forEach(({id:i,relationships:o})=>{var c;const u=o.find(({type:p})=>p==="cover_art"),s=(c=u?.attributes)==null?void 0:c.fileName;s&&(l[i]=`https://mangadex.org/covers/${i}/${s}`)});const a=r.value.data.map(({relationships:i,attributes:o,id:c})=>{const u=i.find(({type:d})=>d==="manga"),s=typeof o.volume=="string"?+o.volume:void 0,p=typeof o.chapter=="string"?+o.chapter:void 0;if(p)return{slug:u.id,name:Object.values(u.attributes.title)[0],img:l[u.id],chapters:[{slug:o.externalUrl||c,label:o.title||void 0,vol:s,chap:p,lang:o.translatedLanguage,ts:new Date(o.readableAt).valueOf()}]}}).filter(Boolean);return Z({rawUpdates:Te(a),oldRawUpdates:e?.oldRawUpdates})}async function Xt(e){const t="https://api.comick.app/",[r]=await Promise.all([T(t,"chapter")]);if(!r)return;const n=r.value.chapters.map(l=>{var a,i;const{vol:o,chap:c,hid:u,lang:s,updated_at:p,md_comics:d}=l,f=typeof c=="string"&&!isNaN(+c)?+c:void 0;if(typeof f!="number")return;const g=(i=(a=d.md_covers)==null?void 0:a[0])==null?void 0:i.b2key;return{slug:d.hid,name:d.title,img:typeof g=="string"?`https://meo.comick.pictures/${g}`:void 0,chapters:[{slug:u,vol:typeof o=="string"&&!isNaN(+o)?+o:void 0,chap:f,lang:s,ts:new Date(p).valueOf()}]}}).filter(Boolean);return Z({rawUpdates:n,oldRawUpdates:e?.oldRawUpdates})}function Te(e){const t={};return e.forEach(r=>{Object.values(r.chapters.reduce((n,l)=>{const a=l.lang||"default";return n[a]||(n[a]=[]),n[a].push(l),n},{})).forEach(n=>{var l;const a=(l=n[0])==null?void 0:l.lang,i=`${r.slug}:${a||""}`;t[i]?(t[i].chapters.push(...n),E(t[i].chapters)):t[i]=r})}),Object.values(t)}function Z(e){var t;const r=Te(e.rawUpdates);if(r.length)return{type:O.update,url:(t=ce())!=null?t:"",newTitleBase:e.newTitleBase,rawUpdates:e.oldRawUpdates?Vt(r,e.oldRawUpdates):r}}var Kt=Object.defineProperty,er=Object.defineProperties,tr=Object.getOwnPropertyDescriptors,Ue=Object.getOwnPropertySymbols,rr=Object.prototype.hasOwnProperty,nr=Object.prototype.propertyIsEnumerable,Re=(e,t,r)=>t in e?Kt(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,J=(e,t)=>{for(var r in t||(t={}))rr.call(t,r)&&Re(e,r,t[r]);if(Ue)for(var r of Ue(t))nr.call(t,r)&&Re(e,r,t[r]);return e},Ae=(e,t)=>er(e,tr(t));const Be=[{type:O.reader,builder:Lt,fallback:!0},{type:O.title,builder:St,fallback:!0},{type:O.search,builder:Wt},{type:O.update,builder:Me}];async function ar(e){var t;const r=e.spec;if(r){const n=(t=e.siteMeta)!=null?t:r.meta,l=De(n,e.type),a=l.length===1;return await te(l.map(async({builder:i})=>{const o=await i({spec:r,siteMeta:n,tags:e.tags,oldRawUpdates:e.oldRawUpdates,lazy:a});return o?Ae(J({},o),{siteName:m(r.name)}):void 0}))}if(e.genericSpecs)return await te(e.genericSpecs.map(n=>De(n.meta).map(async({builder:l})=>{const a=await l({spec:n,siteMeta:n.meta,tags:e.tags});return a?Ae(J({},a),{siteName:m(n.name),specId:n.id,siteMeta:J({},n.meta)}):void 0})).flat())}function De(e,t){const r=t??(e?lr(e):void 0);return r?Be.filter(n=>n.type===r):Be.filter(n=>n.fallback)}function lr(e){const t=location.pathname.split("?")[0].split("#")[0];if(t==="/")return;const r=e.titleBase,n=e.readerBase,l=n?.includes("{titleSlug}");if(n&&!l&&t.startsWith(`/${n}/`)||n&&l&&new RegExp(`^/${n.replace("{titleSlug}",".+")}/.+`).test(t))return O.reader;if(r&&t.startsWith("/"+r))return O.title}M.PageType=O,M.getImgNameFromUrl=H,M.getRawPageData=ar,M.getRawUpdateData=Me,M.getSubCommands=V,M.processCommand=m});
|
package/init.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
(function(){"use strict";async function L({addListener:n,removeListener:e,transform:t,filter:i,handler:
|
|
1
|
+
(function(){"use strict";async function L({addListener:n,removeListener:e,transform:t,filter:i,handler:a,onTimeout:r,timeout:o,once:l}){return new Promise(d=>{n(w);const c=()=>l===!0&&e(w),u=o?setTimeout(()=>{c(),d(void 0),r?.()},o):void 0;async function w(s,...j){s=t?t(s):s,s!==void 0&&(!i||i(s,...j))&&(c(),d(s),a?.(s,...j),u&&clearTimeout(u))}})}var W=Object.defineProperty,y=Object.getOwnPropertySymbols,E=Object.prototype.hasOwnProperty,k=Object.prototype.propertyIsEnumerable,h=(n,e,t)=>e in n?W(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,I=(n,e)=>{for(var t in e||(e={}))E.call(e,t)&&h(n,t,e[t]);if(y)for(var t of y(e))k.call(e,t)&&h(n,t,e[t]);return n};async function g(n){const e=await L(I({addListener:t=>window.addEventListener("message",t),removeListener:t=>window.removeEventListener("message",t)},n));return e?.data}function M({event:n,filter:e,handler:t,senderWindow:i,targetOrigin:a}){g({filter:r=>{var o,l;return((o=r.data)==null?void 0:o.event)===n&&!!((l=r.data)!=null&&l.reqId)&&(!e||e(r))},handler:async r=>{const o=await t?.(r);(i||window).postMessage({resId:r.data.reqId,result:o},a??"*")}})}function T(){return Math.random().toString(16).slice(2)}async function p(n){var e;const{receiverWindow:t,timeout:i,targetOrigin:a,event:r,args:o}=n,l={reqId:T(),event:r,args:o};(e=t||window)==null||e.postMessage(l,a??"*");const d=await g({filter:c=>{var u;return((u=c?.data)==null?void 0:u.resId)===l.reqId},timeout:i??3e4,once:!0});return d?.result}async function f(n,e,t){const i=await t(()=>{n=0});if(i)return i;if(!(n<=0))return await new Promise(a=>{setTimeout(async()=>{const r=await f(n-1,e,t);a(r)},e)})}async function x(n,e,t=0){var i;const a=(i=e.root)!=null?i:document.documentElement;return f(e.lazy===!0?200:0,100,()=>{var r;const o=e.all===!0?Array.from(a.querySelectorAll(n)):(r=a.querySelector(n))!=null?r:void 0;return(e.all?!(o!=null&&o.length):!o)?void 0:o})}var A=Object.defineProperty,m=Object.getOwnPropertySymbols,q=Object.prototype.hasOwnProperty,C=Object.prototype.propertyIsEnumerable,b=(n,e,t)=>e in n?A(n,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):n[e]=t,O=(n,e)=>{for(var t in e||(e={}))q.call(e,t)&&b(n,t,e[t]);if(m)for(var t of m(e))C.call(e,t)&&b(n,t,e[t]);return n};const v="tk:loadingPlaceholder",P=()=>{var n;return window.top&&window.top!=window&&((n=location.ancestorOrigins[0])==null?void 0:n.startsWith("chrome-extension://"))},S={delay:v};R();function R(){P()||(F(()=>{var a,r;p({event:"tk:spaNavigation",args:{}}),(r=(a=window.flutter_inappwebview)==null?void 0:a.callHandler)==null||r.call(a,"tk:spaNavigation",{})}),H(a=>{var r,o;p({event:"tk:titleChanged",args:{title:a}}),(o=(r=window.flutter_inappwebview)==null?void 0:r.callHandler)==null||o.call(r,"tk:titleChanged",a)}));let n=location.pathname,e=O({},S);const t=N();async function i(a,r){if(r.headers.get("Content-Type")!=="application/json"){delete e[a];return}e[a]=r.clone()}window.fetch=new Proxy(window.fetch,{apply:async(a,r,o)=>{var l,d;n!==location.pathname&&(n=location.pathname,e=O({},S));const[c,u]=o;if(u!=null&&u.method&&((d=(l=u.method).toLowerCase)==null?void 0:d.call(l))!=="get")return await a.apply(r,o);const w=U(c,await t);return e[w]=v,delete e.delay,await a.apply(r,[w,u]).then(s=>(i(w,s),s)).catch(s=>{throw delete e[w],s})}}),M({event:"tk:fetchResult",async handler(a){if(a.origin!==location.origin)return;const{baseUrl:r,segments:o}=a.data.args||{};return!Array.isArray(o)||typeof r!="string"?void 0:await _(()=>e,r,o.filter(l=>typeof l=="string"||typeof l?.isAny=="boolean"))}})}function _(n,e,t){let i=15;return f(150,100,async a=>{const r=n(),o=Object.keys(r).find(c=>{if(!c.startsWith(e))return;const u=c.replace(e,"").split("?")[0].split("#")[0].split("/").filter(Boolean);return u.length===t.length&&t.every((w,s)=>w?.isAny||w===u[s])});if(!o){const c=Object.values(r);!(!c.length||c.includes(v))&&!--i&&a();return}const l=r[o];if(l===v)return;const d=await z(l);return d===void 0?void 0:{url:o,value:d}})}async function N(){if(window._fetchOverrides)return window._fetchOverrides;if(P())return await p({event:"getFetchOverrides",args:{},timeout:3e3,receiverWindow:window.top})}function U(n,e){if(!(e!=null&&e.length))return n;const t=new URL(n.endsWith("/")?n.slice(0,-1):n),i=t.host+t.pathname,a=e.find(o=>new RegExp(o.match).test(i));if(!a)return n;const r=new URLSearchParams(t.search);return a.params.forEach(({key:o,value:l})=>{l?o.endsWith("[]")?r.append(o,l):r.set(o,l):r.delete(o)}),t.search=r.toString(),t.href}async function z(n){try{return await n.json()}catch{}try{const e=await n.text();return JSON.parse(e)}catch{}}function F(n){let e=location.pathname;const t=B(()=>{e!==location.pathname&&(e=location.pathname,n())},50),i=(a,r,o)=>(t(),a.apply(r,o));window.addEventListener("popstate",t),window.history.pushState=new Proxy(window.history.pushState,{apply:i}),window.history.replaceState=new Proxy(window.history.replaceState,{apply:i})}async function H(n){const e=await x("title",{lazy:!0,all:!1});if(!e)return;let t=document.title;new MutationObserver(()=>{const i=document.title;i&&t!==i&&(t=i,n(i))}).observe(e,{childList:!0})}function B(n,e){let t;return()=>{t&&clearTimeout(t),t=setTimeout(()=>{n(),t=void 0},e)}}})();
|
package/package.json
CHANGED
package/specs.json
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
[{"id":"mangastream","generic":true,"name":"meta[itemprop=\"name\"]|attr:content","meta":{"updatePath":"","readerBase":"","titleBase":"series","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":".listupd .utao .uta, .bixbox .bs.styletere","name":"h4, .info .tt, .tt a|text","url":"a|attr:href","img":".imgu img, .limit img|attr-contain:src","chapter":{"sel":".luf ul li, .chapter-list > a, .chfiv > li","label":"a, .epxs|text","url":"a|attr:href || |attr:href","at":"a + span, .expdate, .newchtimeluffy|text"}}},"title":{"sel":"#chapterlist > ul","name":"h1.entry-title|text","img":".thumb img|attr-contain:src","type":".imptdt a[href*=\"type=\"]|text || .imptdt:first-of-type i|text","tags":".postbody .mgen > a|text","chapter":{"sel":"#chapterlist > ul > li","url":"a|attr:href","label":".chapternum|text","at":".chapterdate|text"}},"reader":{"sel":"#readerarea","label":"h1.entry-title|text","img":"#readerarea > p > img,#readerarea > img|attr-contain:src","title":{"sel":".headpost .allc","name":"a|text","url":"a|attr:href"},"prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","chapter":{"sel":".ctop option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .bsx","name":".bigor .tt|text","url":"a|attr:href","img":".limit img|attr-contain:src"}}},{"id":"madara","generic":true,"name":"a.logo|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"manga","readerBase":"manga/{titleSlug}","searchPath":"?post_type=wp-manga&s=","defaultLang":"en"},"update":{"title":{"sel":".page-listing-item .page-item-detail","name":"h3 a|text","url":"a|attr:href","img":"img|attr-contain:src","chapter":{"sel":".chapter-item","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}},"title":{"lazy":true,"sel":".listing-chapters_wrap, #manga-chapters-holder","name":"h1|text","img":".summary_image .img-responsive|[attr:data-src,attr-contain:src]","tags":"a[rel=\"tag\"][href*=\"genre\"],a[rel=\"tag\"][href*=\"tag\"]|text","type":".post-content_item .summary-heading|row:type","chapter":{"sel":"li.wp-manga-chapter","url":"a|attr:href","label":"a|text","at":".c-new-tag|attr:title || .chapter-release-date i|text"}},"reader":{"sel":".entry-content .read-container","label":".breadcrumb li.active|text","img":".reading-content img|[attr:data-src,attr-contain:src]","title":{"sel":".breadcrumb li:nth-last-child(2) a","name":"|text","url":"|attr:href"},"prev":"a.btn.prev_page|attr:href","next":"a.btn.next_page|attr:href","chapter":{"sel":"#manga-reading-nav-head select.single-chapter-select > option:not([disabled])","label":"|text","url":"|attr:data-redirect"}},"search":{"title":{"sel":".c-tabs-item__content","name":"h3 a|text","url":"a|attr:href","img":".tab-thumb img|attr-contain:src","chapter":{"sel":".tab-meta","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}}},{"id":"mangahub","name":".navbar-brand img.logo|attr:alt","meta":{"updatePath":"","titleBase":"manga","readerBase":"chapter/{titleSlug}","searchPath":"search?q=","defaultLang":"en"},"update":{"title":{"sel":".list-group-item .media","name":".media-heading h4 a|text","img":".media-left img|attr-contain:src","url":".media-heading a|attr:href","chapter":{"sel":".media-body","label":".media-heading + a span:last-child|text","url":".media-heading + a|attr:href","at":".media-heading .small|text"}}},"title":{"sel":"#chapters-tab .tab-content","name":"#mangadetail h1|text","img":"#mangadetail img.manga-thumb|attr-contain:src","tags":"#mangadetail a.genre-label|text","chapter":{"sel":"#chapters-tab li.list-group-item","label":"a span:first-child span:last-child|text","url":"a|attr:href","at":"small|text"}},"reader":{"sel":"#mangareader","label":"h3|text","img":"#mangareader div img[alt]|attr-contain:src","next":".chapter-pager .next:not(.disabled) a|attr:href","prev":".chapter-pager .previous:not(.disabled) a|attr:href","title":{"sel":"h3 a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pager-dropdown .dropdown-menu > li > a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":".media-manga","name":"h4 a|text","img":".media-left img|attr-contain:src","url":"h4 a|attr:href","chapter":{"sel":".media-body","label":"a[href*=\"/chapter/\"]|text","url":"a[href*=\"/chapter/\"]|attr:href"}}}},{"id":"manhwafreak","name":"meta[itemprop=\"name\"],meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"manga","readerBase":"","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":".lastest .lastest-serie","name":".lastest-title a|text","img":".img img|attr-contain:src","url":"a|attr:href","chapter":{"sel":".lastest-chap > a","label":"li|text","url":"|attr:href","at":"li span|text"}}},"title":{"sel":".series + .chapters .chapter-li","name":".series h1.title|text","img":".series .info img|attr-contain:src","tags":"#info > .left > div > p:first-child|row:genre(s)","type":"#info > .left > div > p:first-child|row:type","chapter":{"sel":".chapter-li > a","label":".chapter-info p|text","url":"|attr:href","at":".chapter-info p:nth-child(2)|text"}},"reader":{"sel":"#readerarea","label":"h2.entry-title|text","img":"#readerarea img.ts-main-image[data-index]|[attr:data-src,attr-contain:src]","prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","title":{"sel":".breadcrumb > ul > li:nth-child(3) a","name":"span|text","url":"|attr:href"},"chapter":{"sel":".ctop select#chapter option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .lastest-serie","name":".lastest-title|text","url":"a|attr:href","img":"img.ts-post-image|attr-contain:src","chapter":{"sel":".lastest-chap > a","label":"li|text","url":"|attr:href","at":"li span|text"}}}},{"id":"nettruyen","name":"meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"truyen-tranh","titleSlugTransformer":2,"readerBase":"truyen-tranh/{titleSlug}","searchPath":"tim-truyen?keyword=","defaultLang":"vi"},"update":{"title":{"sel":".items > .row > .item","name":"h3 a|text","img":".image img|attr-contain:src","url":"h3 a|attr:href","chapter":{"sel":".chapter","label":"a|text","url":"a|attr:href","at":".time|text"}}},"title":{"sel":"#nt_listchapter nav > ul","name":"#item-detail h1.title-detail|text","img":"#item-detail .detail-info img|attr-contain:src","tags":".kind a[href*=\"/tim-truyen/\"]|text","chapter":{"sel":"#nt_listchapter nav > ul > li.row","label":".chapter a|text","url":".chapter a|attr:href","at":".small|text"}},"reader":{"sel":".reading .reading-detail","label":"a.itemcrumb.active > span[itemprop=\"name\"]|text","img":".reading-detail > .page-chapter > img,.reading-detail > img|attr-contain:src","prev":"a.prev.a_prev:not(.disabled)|attr:href","next":"a.next.a_next:not(.disabled)|attr:href","title":{"sel":"h1.txt-primary a","name":"|text","url":"|attr:href"},"chapter":{"sel":"select.select-chapter option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".items > .row > .item","name":"h3 a|text","img":".image img|attr-contain:src","url":"h3 a|attr:href"}}},{"id":"manga4life","name":"#Nav .LogoBox a|attr:title","meta":{"updatePath":"","titleBase":"manga","readerBase":"read-online","readerSlugTransformer":1,"searchPath":"search/?name=","defaultLang":"en"},"update":{"title":{"sel":".BoxBody.LatestChapters .Chapter","name":".Image > a|attr:title","img":".Image > a img|attr-contain:src","url":".Image > a|attr:href","chapter":{"sel":".Label > a","label":".ChapterLabel|text","url":"|attr:href","at":".DateLabel|text"}}},"title":{"sel":".BoxBody div.list-group[ng-if^=\"vm.Chapters\"]","name":".BoxBody h1|text","img":".BoxBody img.img-fluid|attr-contain:src","tags":"a[href*=\"search/?genre=\"]|text","type":"a[href*=\"search/?type=\"]|text","chapter":{"sel":".BoxBody div.list-group[ng-if^=\"vm.Chapters\"] > a.ChapterLink","label":"span:first-child|text","url":"|attr:href","at":"span:last-child|text"}},"reader":{"sel":"#TopPage.ImageGallery","label":"button[data-target=\"#ChapterModal\"]|text","img":".ImageGallery img.img-fluid|attr:ng-src","title":{"sel":".DesktopNav a","name":"|text","url":"|attr:href"}},"search":{"title":{"sel":".SearchFilterNav + .row > div[ng-repeat^=\"Series\"]","name":"div:nth-child(2) a.SeriesName|text","img":"img|attr-contain:src","url":"a|attr:href"}}},{"id":"mangadex","name":"meta[property='og:site_name']|attr:content","meta":{"ajax":true,"updatePath":"titles/latest","titleBase":"title","titleSlugTransformer":1,"constantSlug":true,"readerBase":"chapter","searchPath":"titles?q=","defaultLang":"en","multiLang":true},"fetchOverrides":[{"type":"updates","match":"^api\\.mangadex\\.org\\/(chapter|manga)$","params":[{"key":"limit","value":"96"},{"key":"restrictedContent[]","value":"pornographic"}]},{"type":"chapters","match":"^api\\.mangadex\\.org\\/manga\\/.+\\/feed$","params":[{"id":"limit","key":"limit","value":"500"},{"id":"lang","key":"translatedLanguage[]"}]}]},{"id":"comick","name":"meta[property=\"og:site_name\"],meta[name=\"application-name\"]|attr:content","meta":{"ajax":true,"home":"home","updatePath":"home","titleBase":"comic","readerBase":"comic/{titleSlug}","searchPath":"search?q=","defaultLang":"en","multiLang":true},"fetchOverrides":[{"type":"updates","match":"^api\\.comic\\.app\\/chapter$","params":[{"key":"order","value":"hot"},{"key":"accept_erotic_content","value":"true"}]},{"type":"chapters","match":"^api\\.comick\\.app\\/comic\\/.+\\/chapters$","params":[{"id":"limit","key":"limit","value":"1000"},{"id":"lang","key":"lang"}]}],"update":{"title":{"sel":"#updates-container div[title]","name":"|attr:title","img":"img|attr-contain:src","url":"a[href^=\"/comic/\"]|attr:href","chapter":{"sel":"a:last-child","label":"div:first-child|text","url":"|attr:href","at":"div:nth-child(2)|text"}}},"title":{"sel":"#chapter-header ~ div table > tbody","name":"h1|text","img":"a[href$=\"/covers\"] > img|attr-contain:src","langs":"#chapter-header + div select option:not([value=\"\"]):not([value=\"all\"])|attr:value","tags":"table a.link[href^=\"/search?genres=\"]|text","type":"h1 ~ div.text-sm span:first-child|row:origination","chapter":{"sel":"#chapter-header ~ div table > tbody > tr","label":"td:first-child > a span|text","url":"td:first-child > a|attr:href","at":"td:nth-child(2)|text"}},"reader":{"sel":".images-reader-container","label":"select:first-child option[selected]|text","img":".images-reader-container img|attr-contain:src","title":{"sel":"a + div > a.rounded-full","name":"img[alt]|attr:alt","url":"|attr:href","img":"img|attr-contain:src"},"lang":"select:nth-child(2)|value","prev":".images-reader-container a:first-child[href^=\"/comic/\"]:not(:last-child)|attr:href","next":".images-reader-container a:last-child[href^=\"/comic/\"]|attr:href","chapter":{"sel":"select:first-child option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"bato","name":".brand img[alt]|attr:alt","meta":{"updatePath":"","titleBase":"series","titleSlugTransformer":1,"readerBase":"chapter","searchPath":"search?word=","defaultLang":"en"},"update":{"title":{"sel":"#series-list > .item","name":"a.item-title|text","img":".item-cover img|attr-contain:src","url":"a.item-title|attr:href","lang":"em[data-lang]|attr:data-lang","chapter":{"sel":".item-volch","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"sel":".detail-set ~ .episode-list","name":"h3.item-title a|text","img":".attr-cover > img|attr-contain:src","langs":".title-set em[data-lang]|attr:data-lang","tags":".attr-main .attr-item .text-muted|row:genres","chapter":{"sel":".episode-list > .main > .item","label":"a.chapt > b|text","url":"a.chapt|attr:href","at":".extra > i|text"}},"reader":{"sel":"#viewer","label":"title|text","img":"img.page-img|attr-contain:src","title":{"sel":"h3.nav-title a","name":"|text","url":"|attr:href"},"lang":"h3.nav-title em[data-lang]|attr:data-lang","prev":".nav-prev > a[href^=\"/chapter/\"]|attr:href","next":".nav-next > a[href^=\"/chapter/\"]|attr:href","chapter":{"sel":".nav-epis > select option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"mangago","name":"#logo_div|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"list/latest","titleBase":"read-manga","readerBase":"read-manga/{titleSlug}","searchPath":"r/l_search/?name=","defaultLang":"en"},"update":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","img":"a.thm-effect img|attr-contain:src","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}},"title":{"sel":"#chapter_table","name":".w-title h1|text","img":".article .cover img|attr-contain:src","tags":".manga_right a[href*=\"/genre/\"]|text","chapter":{"sel":"#chapter_table tbody tr","label":"h4 a b|text","url":"h4 a|attr:href","at":"td:last-child|text"}},"reader":{"sel":"#pic_container","label":"#navi h3 span:last-child|text","img":"#pic_container img[id^=\"page\"]|attr-contain:src","title":{"sel":"#navi a#series","name":"|text","url":"|attr:href"},"chapter":{"sel":"ul.dropdown-menu.chapter > li > a","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","img":"a.thm-effect img|attr-contain:src","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}}},{"id":"kakalot","name":"meta[property=\"og:site_name\"]|attr:content","meta":{"home":"home","updatePath":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchPath":"search?keyword=","defaultLang":"en","multiLang":true},"update":{"title":{"sel":"#latest-chap .inner > .item","name":".item-info h3 a|text","img":".item-poster img|attr-contain:src","url":"a|attr:href","chapter":{"sel":".chapter-list > .cl-item","label":"a.chapter-name|text","url":"a|attr:href","at":".time|text"}}},"title":{"sel":"#chapt-list","name":".detail-box h3.manga-name|text","img":".detail-box .manga-poster-img|attr-contain:src","tags":".detail-box .line-content a[href*=\"/genre/\"]|text","langs":"#chap-lang .lang-item|attr:data-code","chapter":{"sel":"#chapt-list .reading-list > .item","label":"a.chapter-name|text","url":"a.chapter-name|attr:href","at":".item-time|text"}},"reader":{"sel":"#reading","label":".breadcrumb-item.active|text","img":"#list-image .card-wrap[data-url]|attr:data-url","title":{"sel":".breadcrumb-item:nth-child(2) a","name":"|text","url":"|attr:href"},"chapter":{"sel":".kbreadcrumb + .reading-option option.reading-item","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".manga-list > .inner > .item","name":".manga-name a|attr:title","img":".manga-poster img|attr-contain:src","url":".manga-name a|attr:href","chapter":{"sel":".latest-chapter .chapter-name","label":"|text","url":"|attr:href"}}}},{"id":"reaper","name":"nav a img[alt]|attr:alt","meta":{"updatePath":"latest/comics","titleBase":"comics","readerBase":"comics/{titleSlug}/chapters","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":"main h2 + div .grid.grid-cols-1 > div","img":"a img|attr-contain:src","name":"p a|text","url":"a|attr:href","chapter":{"sel":"p + div > a","label":"|text","url":"|attr:href","at":"p|text"}}},"title":{"sel":"div > ul[role=\"list\"]:first-child","name":"h1|text","img":"main .container img[alt]","chapter":{"sel":"div > ul[role=\"list\"]:first-child li[wire\\:key^=\"comic-chapter-list\"] a","label":"p|text","url":"|attr:href","at":"div:last-child > p|text"}},"reader":{"sel":"","label":"title|text","img":"main div[wire-id] > img.max-w-full|attr-contain:src","prev":"main nav:first-of-type > div:first-child a|attr:href","next":"main nav:first-of-type > div:last-child a:last-child:not(:first-child)|attr:href","title":{"sel":"body","name":"main p|text","url":"main nav:first-of-type > div:last-child a:first-child|attr:href"}}}]
|
|
1
|
+
[{"id":"mangastream","generic":true,"name":"meta[itemprop=\"name\"]|attr:content","meta":{"updatePath":"","readerBase":"","titleBase":"series","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":".listupd .utao .uta, .bixbox .bs.styletere","name":"h4, .info .tt, .tt a|text","url":"a|attr:href","img":".imgu img, .limit img|attr-contain:src","chapter":{"sel":".luf ul li, .chapter-list > a, .chfiv > li","label":"a, .epxs|text","url":"a|attr:href || |attr:href","at":"a + span, .expdate, .newchtimeluffy|text"}}},"title":{"sel":"#chapterlist > ul","name":"h1.entry-title|text","img":".thumb img|attr-contain:src","type":".imptdt a[href*=\"type=\"]|text || .imptdt:first-of-type i|text","tags":".postbody .mgen > a|text","chapter":{"sel":"#chapterlist > ul > li","url":"a|attr:href","label":".chapternum|text","at":".chapterdate|text"}},"reader":{"sel":"#readerarea","label":"h1.entry-title|text","img":"#readerarea > p > img,#readerarea > img|attr-contain:src","title":{"sel":".headpost .allc","name":"a|text","url":"a|attr:href"},"prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","chapter":{"sel":".ctop option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .bsx","name":".bigor .tt|text","url":"a|attr:href","img":".limit img|attr-contain:src"}}},{"id":"madara","generic":true,"name":"a.logo|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"manga","readerBase":"manga/{titleSlug}","searchPath":"?post_type=wp-manga&s=","defaultLang":"en"},"update":{"title":{"sel":".page-listing-item .page-item-detail","name":"h3 a|text","url":"a|attr:href","img":"img|attr-contain:src","chapter":{"sel":".chapter-item","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}},"title":{"lazy":true,"sel":".listing-chapters_wrap, #manga-chapters-holder","name":"h1|text","img":".summary_image .img-responsive|[attr:data-src,attr-contain:src]","tags":"a[rel=\"tag\"][href*=\"genre\"],a[rel=\"tag\"][href*=\"tag\"]|text","type":".post-content_item .summary-heading|row:type","chapter":{"sel":"li.wp-manga-chapter","url":"a|attr:href","label":"a|text","at":".c-new-tag|attr:title || .chapter-release-date i|text"}},"reader":{"sel":".entry-content .read-container","label":".breadcrumb li.active|text","img":".reading-content img|[attr:data-src,attr-contain:src]","title":{"sel":".breadcrumb li:nth-last-child(2) a","name":"|text","url":"|attr:href"},"prev":"a.btn.prev_page|attr:href","next":"a.btn.next_page|attr:href","chapter":{"sel":"#manga-reading-nav-head select.single-chapter-select > option:not([disabled])","label":"|text","url":"|attr:data-redirect"}},"search":{"title":{"sel":".c-tabs-item__content","name":"h3 a|text","url":"a|attr:href","img":".tab-thumb img|attr-contain:src","chapter":{"sel":".tab-meta","label":".chapter a|text","url":".chapter a|attr:href","at":".c-new-tag|attr:title || .post-on|text"}}}},{"id":"mangahub","name":".navbar-brand img.logo|attr:alt","meta":{"updatePath":"","titleBase":"manga","readerBase":"chapter/{titleSlug}","searchPath":"search?q=","defaultLang":"en"},"update":{"title":{"sel":".list-group-item .media","name":"h4.media-heading a|text","img":".media-left img|attr-contain:src","url":".media-heading a|attr:href","chapter":{"sel":".media-body","label":".media-heading + a > span:first-child|text","url":".media-heading + a|attr:href","at":".media-heading .small|text"}}},"title":{"sel":"#chapters-tab .tab-content","name":"#mangadetail h1|text","img":"#mangadetail img.manga-thumb|attr-contain:src","tags":"#mangadetail a.genre-label|text","chapter":{"sel":"#chapters-tab li.list-group-item","label":"a > span:first-child > span:first-child|text","url":"a|attr:href","at":"small|text"}},"reader":{"sel":"#mangareader","label":"h3|text","img":"#mangareader div img[alt]|attr-contain:src","prev":".chapter-pager .previous a[href*=\"/chapter/\"]|attr:href","next":".chapter-pager .next a[href*=\"/chapter/\"]|attr:href","title":{"sel":"h3 a","name":"|text","url":"|attr:href"},"chapter":{"sel":".pager-dropdown .dropdown-menu > li > a","label":"|text","url":"|attr:href"}},"search":{"title":{"sel":".media-manga","name":"h4 a|text","img":".media-left img|attr-contain:src","url":"h4 a|attr:href","chapter":{"sel":".media-body","label":"a[href*=\"/chapter/\"]|text","url":"a[href*=\"/chapter/\"]|attr:href"}}}},{"id":"manhwafreak","name":"meta[itemprop=\"name\"],meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"manga","readerBase":"","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":".lastest .lastest-serie","name":".lastest-title a|text","img":".img img|attr-contain:src","url":"a|attr:href","chapter":{"sel":".lastest-chap > a","label":"li|text","url":"|attr:href","at":"li span|text"}}},"title":{"sel":".series + .chapters .chapter-li","name":".series h1.title|text","img":".series .info img|attr-contain:src","tags":"#info > .left > div > p:first-child|row:genre(s)","type":"#info > .left > div > p:first-child|row:type","chapter":{"sel":".chapter-li > a","label":".chapter-info p|text","url":"|attr:href","at":".chapter-info p:nth-child(2)|text"}},"reader":{"sel":"#readerarea","label":"h2.entry-title|text","img":"#readerarea img.ts-main-image[data-index]|[attr:data-src,attr-contain:src]","prev":"a.ch-prev-btn:not(.disabled)|attr:href","next":"a.ch-next-btn:not(.disabled)|attr:href","title":{"sel":".breadcrumb > ul > li:nth-child(3) a","name":"span|text","url":"|attr:href"},"chapter":{"sel":".ctop select#chapter option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".listupd .lastest-serie","name":".lastest-title|text","url":"a|attr:href","img":"img.ts-post-image|attr-contain:src","chapter":{"sel":".lastest-chap > a","label":"li|text","url":"|attr:href","at":"li span|text"}}}},{"id":"nettruyen","name":"meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"","titleBase":"truyen-tranh","titleSlugTransformer":2,"readerBase":"truyen-tranh/{titleSlug}","searchPath":"tim-truyen?keyword=","defaultLang":"vi"},"update":{"title":{"sel":".items > .row > .item","name":"h3 a|text","img":".image img|attr-contain:src","url":"h3 a|attr:href","chapter":{"sel":".chapter","label":"a|text","url":"a|attr:href","at":".time|text"}}},"title":{"sel":"#nt_listchapter nav > ul","name":"#item-detail h1.title-detail|text","img":"#item-detail .detail-info img|attr-contain:src","tags":".kind a[href*=\"/tim-truyen/\"]|text","chapter":{"sel":"#nt_listchapter nav > ul > li.row","label":".chapter a|text","url":".chapter a|attr:href","at":".small|text"}},"reader":{"sel":".reading .reading-detail","label":"a.itemcrumb.active > span[itemprop=\"name\"]|text","img":".reading-detail > .page-chapter > img,.reading-detail > img|attr-contain:src","prev":"a.prev.a_prev:not(.disabled)|attr:href","next":"a.next.a_next:not(.disabled)|attr:href","title":{"sel":"h1.txt-primary a","name":"|text","url":"|attr:href"},"chapter":{"sel":"select.select-chapter option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".items > .row > .item","name":"h3 a|text","img":".image img|attr-contain:src","url":"h3 a|attr:href"}}},{"id":"manga4life","name":"#Nav .LogoBox a|attr:title","meta":{"updatePath":"","titleBase":"manga","readerBase":"read-online","readerSlugTransformer":1,"searchPath":"search/?name=","defaultLang":"en"},"update":{"title":{"sel":".BoxBody.LatestChapters .Chapter","name":".Image > a|attr:title","img":".Image > a img|attr-contain:src","url":".Image > a|attr:href","chapter":{"sel":".Label > a","label":".ChapterLabel|text","url":"|attr:href","at":".DateLabel|text"}}},"title":{"sel":".BoxBody div.list-group[ng-if^=\"vm.Chapters\"]","name":".BoxBody h1|text","img":".BoxBody img.img-fluid|attr-contain:src","tags":"a[href*=\"search/?genre=\"]|text","type":"a[href*=\"search/?type=\"]|text","chapter":{"sel":".BoxBody div.list-group[ng-if^=\"vm.Chapters\"] > a.ChapterLink","label":"span:first-child|text","url":"|attr:href","at":"span:last-child|text"}},"reader":{"sel":"#TopPage.ImageGallery","label":"button[data-target=\"#ChapterModal\"]|text","img":".ImageGallery img.img-fluid|attr:ng-src","title":{"sel":".DesktopNav a","name":"|text","url":"|attr:href"}},"search":{"title":{"sel":".SearchFilterNav + .row > div[ng-repeat^=\"Series\"]","name":"div:nth-child(2) a.SeriesName|text","img":"img|attr-contain:src","url":"a|attr:href"}}},{"id":"mangadex","name":"meta[property='og:site_name']|attr:content","meta":{"ajax":true,"updatePath":"titles/latest","titleBase":"title","titleSlugTransformer":1,"constantSlug":true,"readerBase":"chapter","searchPath":"titles?q=","defaultLang":"en","multiLang":true},"fetchOverrides":[{"type":"updates","match":"^api\\.mangadex\\.org\\/(chapter|manga)$","params":[{"key":"limit","value":"96"},{"key":"contentRating[]","value":"pornographic"}]},{"type":"chapters","match":"^api\\.mangadex\\.org\\/manga\\/.+\\/feed$","params":[{"id":"limit","key":"limit","value":"500"},{"id":"lang","key":"translatedLanguage[]"}]}]},{"id":"comick","name":"meta[property=\"og:site_name\"],meta[name=\"application-name\"]|attr:content","meta":{"ajax":true,"home":"home","updatePath":"home","titleBase":"comic","readerBase":"comic/{titleSlug}","searchPath":"search?q=","defaultLang":"en","multiLang":true},"fetchOverrides":[{"type":"updates","match":"^api\\.comic\\.app\\/chapter$","params":[{"key":"order","value":"hot"},{"key":"accept_erotic_content","value":"true"}]},{"type":"chapters","match":"^api\\.comick\\.app\\/comic\\/.+\\/chapters$","params":[{"id":"limit","key":"limit","value":"1000"},{"id":"lang","key":"lang"}]}],"update":{"title":{"sel":"#updates-container div[title]","name":"|attr:title","img":"img|attr-contain:src","url":"a[href^=\"/comic/\"]|attr:href","chapter":{"sel":"a:last-child","label":"div:first-child|text","url":"|attr:href","at":"div:nth-child(2)|text"}}},"title":{"sel":"#chapter-header ~ div table > tbody","name":"h1|text","img":"a[href$=\"/covers\"] > img|attr-contain:src","langs":"#chapter-header + div select option:not([value=\"\"]):not([value=\"all\"])|attr:value","tags":"table a.link[href^=\"/search?genres=\"]|text","type":"h1 ~ div.text-sm span:first-child|row:origination","chapter":{"sel":"#chapter-header ~ div table > tbody > tr","label":"td:first-child > a span|text","url":"td:first-child > a|attr:href","at":"td:nth-child(2)|text"}},"reader":{"sel":".images-reader-container","label":"select:first-child option[selected]|text","img":".images-reader-container img|attr-contain:src","title":{"sel":"a + div > a.rounded-full","name":"img[alt]|attr:alt","url":"|attr:href","img":"img|attr-contain:src"},"lang":"select:nth-child(2)|value","prev":".images-reader-container a:first-child[href^=\"/comic/\"]:not(:last-child)|attr:href","next":".images-reader-container a:last-child[href^=\"/comic/\"]|attr:href","chapter":{"sel":"select:first-child option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"bato","name":".brand img[alt]|attr:alt","meta":{"updatePath":"","titleBase":"series","titleSlugTransformer":1,"readerBase":"chapter","searchPath":"search?word=","defaultLang":"en"},"update":{"title":{"sel":"#series-list > .item","name":"a.item-title|text","img":".item-cover img|attr-contain:src","url":"a.item-title|attr:href","lang":"em[data-lang]|attr:data-lang","chapter":{"sel":".item-volch","label":"a|text","url":"a|attr:href","at":"i|text"}}},"title":{"sel":".detail-set ~ .episode-list","name":"h3.item-title a|text","img":".attr-cover > img|attr-contain:src","langs":".title-set em[data-lang]|attr:data-lang","tags":".attr-main .attr-item .text-muted|row:genres","chapter":{"sel":".episode-list > .main > .item","label":"a.chapt > b|text","url":"a.chapt|attr:href","at":".extra > i|text"}},"reader":{"sel":"#viewer","label":"title|text","img":"img.page-img|attr-contain:src","title":{"sel":"h3.nav-title a","name":"|text","url":"|attr:href"},"lang":"h3.nav-title em[data-lang]|attr:data-lang","prev":".nav-prev > a[href^=\"/chapter/\"]|attr:href","next":".nav-next > a[href^=\"/chapter/\"]|attr:href","chapter":{"sel":".nav-epis > select option:not([disabled]):not([value=\"\"])","label":"|text","url":"|attr:value"}}},{"id":"mangago","name":"#logo_div|attr:title || meta[property=\"og:site_name\"]|attr:content","meta":{"updatePath":"list/latest","titleBase":"read-manga","readerBase":"read-manga/{titleSlug}","searchPath":"r/l_search/?name=","defaultLang":"en"},"update":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","img":"a.thm-effect img|attr-contain:src","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}},"title":{"sel":"#chapter_table","name":".w-title h1|text","img":".article .cover img|attr-contain:src","tags":".manga_right a[href*=\"/genre/\"]|text","chapter":{"sel":"#chapter_table tbody tr","label":"h4 a b|text","url":"h4 a|attr:href","at":"td:last-child|text"}},"reader":{"sel":"#pic_container","label":"#navi h3 span:last-child|text","img":"#pic_container img[id^=\"page\"]|attr-contain:src","title":{"sel":"#navi a#series","name":"|text","url":"|attr:href"},"chapter":{"sel":"ul.dropdown-menu.chapter > li > a","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":"#search_list > li .box","name":"a.thm-effect|attr:title","img":"a.thm-effect img|attr-contain:src","url":"a.thm-effect|attr:href","chapter":{"sel":"a.chico","label":"|text","url":"|attr:href"}}}},{"id":"kakalot","name":"meta[property=\"og:site_name\"]|attr:content","meta":{"home":"home","updatePath":"home","titleBase":"","readerBase":"read/{titleSlug}/{lang}","searchPath":"search?keyword=","defaultLang":"en","multiLang":true},"update":{"title":{"sel":"#latest-chap .inner > .item","name":".item-info h3 a|text","img":".item-poster img|attr-contain:src","url":"a|attr:href","chapter":{"sel":".chapter-list > .cl-item","label":"a.chapter-name|text","url":"a|attr:href","at":".time|text"}}},"title":{"sel":"#chapt-list","name":".detail-box h3.manga-name|text","img":".detail-box .manga-poster-img|attr-contain:src","tags":".detail-box .line-content a[href*=\"/genre/\"]|text","langs":"#chap-lang .lang-item|attr:data-code","chapter":{"sel":"#chapt-list .reading-list > .item","label":"a.chapter-name|text","url":"a.chapter-name|attr:href","at":".item-time|text"}},"reader":{"sel":"#reading","label":".breadcrumb-item.active|text","img":"#list-image .card-wrap[data-url]|attr:data-url","title":{"sel":".breadcrumb-item:nth-child(2) a","name":"|text","url":"|attr:href"},"chapter":{"sel":".kbreadcrumb + .reading-option option.reading-item","label":"|text","url":"|attr:value"}},"search":{"title":{"sel":".manga-list > .inner > .item","name":".manga-name a|attr:title","img":".manga-poster img|attr-contain:src","url":".manga-name a|attr:href","chapter":{"sel":".latest-chapter .chapter-name","label":"|text","url":"|attr:href"}}}},{"id":"reaper","name":"nav a img[alt]|attr:alt","meta":{"updatePath":"latest/comics","titleBase":"comics","readerBase":"comics/{titleSlug}/chapters","searchPath":"?s=","defaultLang":"en"},"update":{"title":{"sel":"main h2 + div .grid.grid-cols-1 > div","img":"a img|attr-contain:src","name":"p a|text","url":"a|attr:href","chapter":{"sel":"p + div > a","label":"|text","url":"|attr:href","at":"p|text"}}},"title":{"sel":"div > ul[role=\"list\"]:first-child","name":"h1|text","img":"main .container img[alt]","chapter":{"sel":"div > ul[role=\"list\"]:first-child li[wire\\:key^=\"comic-chapter-list\"] a","label":"p|text","url":"|attr:href","at":"div:last-child > p|text"}},"reader":{"sel":"","label":"title|text","img":"main div[wire-id] > img.max-w-full|attr-contain:src","prev":"main nav:first-of-type > div:first-child a|attr:href","next":"main nav:first-of-type > div:last-child a:last-child:not(:first-child)|attr:href","title":{"sel":"body","name":"main p|text","url":"main nav:first-of-type > div:last-child a:first-child|attr:href"}}}]
|