- // ==UserScript==
- // @name Link Copy for Jdownloader
- // @version 1.01
- // @description 링크 복사
- // @author DandyClubs
- // @include /naughtyblog\.org/
- // @include /maxjav\.com/
- // @include /(8kcosplay\.com|blogjav\.net|thotsgirls\.com)/
- // @include /top-modelz\.org/
- // @include /wetholefans\.com/
- // @include /pornchil\.com\/.*/
- // @include /pornrips\.cc/
- // @include /javpink\.com/
- // @include /siteripbb\.org/
- // @include /javfree\.me/
- // @include /pornobunny\.org/
- // @include /adult-porno\.org/
- // @include /pornrip\.cc/
- // @include /fhdporn\.video/
- // @include /asianscan\.biz/
- // @include /sharepornlink\.com\/.*/
- // @include /javarchive\.com/
- // @include /0xxx\.ws/
- // @include /hpjav\.tv/
- // @include /kbjme\.com\/\d+/
- // @include /av18plus\.com/
- // @require https://cdnjs.cloudflare.com/ajax/libs/jquery/3.6.0/jquery.min.js
- // @require https://greasyfork.org/scripts/451572-rootdomain/code/RootDomain.js?version=1095109
- // @require https://greasyfork.org/scripts/451573-copy-link-common-library/code/Copy%20Link%20Common%20Library.js?version=1095463
- // @require https://greasyfork.org/scripts/451574-key-press/code/Key%20Press.js?version=1095111
- // @grant GM_addStyle
- // @grant GM_setValue
- // @grant GM_getValue
- // @grant GM_deleteValue
- // @grant GM_listValues
- // @grant GM_setClipboard
- // @grant window.close
- // @grant GM_xmlhttpRequest
- // @run-at document-body
- // @noframes
- // @license MIT
- // @namespace https://greasyfork.org/users/15621
- // ==/UserScript==
-
-
- (function() { var css = document.createElement('link'); css.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.2.0/css/all.min.css'; css.rel = 'stylesheet'; css.type = 'text/css'; document.getElementsByTagName('head')[0].appendChild(css); })();
-
- GM_addStyle (`
- @import url('https://fonts.googleapis.com/css2?family=M+PLUS+Rounded+1c:wght@600&family=Noto+Sans+KR:wght@600&family=Noto+Sans:wght@600&display=swap');
-
- .CloseIcon, .CopyIcon, .Minus, .GetTitle {
- text-align: center;
- cursor: pointer;
- color: dodgerblue !important;
- background-color:transparent !important;
- font-style: initial !important;
- }
- .IconSet {
- word-spacing: .5rem;
- white-space : nowrap;
- background-color:transparent !important;
- }
-
- .CopyNotice {
- font-family: 'Nanum Gothic', 'M PLUS Rounded 1c', 'Noto Sans', sans-serif !important;
- margin-left: auto;
- margin-right: auto;
- border-radius: 4px;
- color: white !important;
- background: rgba(255, 110, 0, 0.75) !important;
- padding: .25em 1em;
- white-space: pre;
- text-shadow: initial !important;
- text-align: left;
- line-height: 1.25em;
- font-weight: initial !important;
- font-style: initial !important;
- display: -webkit-box;
- -webkit-line-clamp: 15;
- -webkit-box-orient: vertical;
- overflow: hidden;
- text-overflow: ellipsis;
- -webkit-transition: height 0.3s ease-in-out;
- -o-transition: height 0.3s ease-in-out;
- transition: height 0.3s ease-in-out;
-
- }
- .CopyNotice:not(.active) {
- display: none;
- }
- .CenterBox {
- right: 50%;
- left: auto;
- top: 1px;
- margin: 0 auto;
- max-width: max-content;
- position: fixed !important;
- word-spacing: .5rem;
- padding: .25em;
- font-style: initial !important;
- text-align: center;
- color: dodgerblue !important;
- background-color:transparent !important;
- }
- .ToTop {
- font-style: initial !important;
- text-align: center;
- cursor: pointer;
- padding: .25em !important;
- border-radius: .25em !important;
- -webkit-box-sizing: border-box !important;
- box-sizing: border-box !important;
- background-color: rgba(255,255,255,0.5) !important;
- }
- .State {
- display: inline-block;
- font-weight: bold;
- text-align: right;
- vertical-align: middle;
- font-family: 'Noto Sans', sans-serif !important;
- background-color:transparent !important;
- font-style: italic !important;
- width: 5ch;
- }
-
- .CopyButton, .ClearButton {
- font-style: initial !important;
- background-color:transparent !important;
- word-spacing: .5rem;
- cursor: pointer;
- }
- `);
-
- var CopyLinks = []
- var AllCopyLinks = []
- var TmpLinksDB = []
- var CopyLinksBackup, MakeIconTimer
- const PageURL = window.location !== window.parent.location ? document.referrer : document.location.href;
- const RootDomain = extractRootDomain(PageURL)
- //console.log('RootDomain: ', RootDomain)
-
- var RootDomainDB = JSON.parse(GM_getValue(RootDomain, "[]"))
-
- //console.log(RootDomainDB)
-
- var GetState, searchDB
- GetState = RootDomainDB
- //console.log(GetState)
-
- var MakerCfg = false
- var CfgReleaseDate = false
- var Maker = '', ReleaseDate = ''
-
- var GetDPI, DefaultFontSize
- var Target, DownloadArea, CopyTitle, CopyOffSetArea, InfoArea, Resolution = '', TitleLast = '', Series ='', Title, ID = '', TitleID, CopyTitleTmp, InfoTitleTmp, CoverImage, MatchWebRegExp, Gallery
- var UrlTitle = ''
- const SkipFilter = new RegExp('keep2share\.cc\/pr\/|demosaic|upgrade|javascript|SKIP|pixhost\.to\/gallery\/|imgchili\.net\/show|#$|^\/|^(?=.*' + window.location.origin + ')(?!.*\\?site).*$', 'i')
- //console.log(SkipFilter)
-
- const SkipClassNames = ['adead_link', 'autohyperlink', 'social-icon']
- const JapaneseChar = /[\u3000-\u303f\u3040-\u309f\u30a0-\u30ff\uff00-\uff9f\u4e00-\u9faf\u3400-\u4dbf]/g
- const SearchID = /([a-zA-Z]{2,11}-?\d{2,6}[a-zA-Z]?|\d{2,4}[a-zA-Z]{2,7}-?\d{3,6}[a-zA-Z]?|[a-zA-Z]{1,2}-?\d{2}-?\d{2}|[a-zA-Z]{2,7}-?[a-zA-Z]{1,2}\d{2})(.*)/
- const SearchFC2ID = /(^FC2.+\d{6})(.*)/
- const SearchIDRegExp = /^(\[\s?)?(?=([a-zA-Z]{2,11}-?\d{2,6}[a-zA-Z]?|\d{2,4}[a-zA-Z]{2,7}-?\d{3,6}[a-zA-Z]?|[a-zA-Z]{1,2}-?\d{2}-?\d{2}|[a-zA-Z]{2,7}-?[a-zA-Z]{1,2}\d{2}))(?!(C_\d+|file\d+))(.*)$/
- const K2SRegExp = /(.*k2s\.cc\/file\/)(.*\/?)/
-
- async function Start() {
- GetDPI = window.devicePixelRatio
- DefaultFontSize = getDefaultFontSize()
- //console.log('GetDPI: ', GetDPI, 'DefaultFontSize: ', DefaultFontSize)
-
- document.querySelector("body").insertAdjacentHTML('afterbegin', '<div class="CenterBox" style="display: none"></>')
- document.querySelector("div.CenterBox").insertAdjacentHTML('beforeend', '<i class="ToTop fa-solid fa-circle-chevron-up"></>')
- document.querySelector("div.CenterBox").insertAdjacentHTML('beforeend', ' <i class="ClearButton far fa-minus-square"></>')
- document.querySelector("div.CenterBox").insertAdjacentHTML('beforeend', ' <i class="CopyButton fas fa-paste"></>')
- document.querySelector("div.CenterBox").insertAdjacentHTML('beforeend', '<i class="State"></>')
- document.querySelector(".ToTop").onclick = () => window.scrollTo({ top: 0, behavior: 'smooth' })
- console.log('Link Copy Start!')
- let CneterBoxFontSize = Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem'
- let CenterBoxZIndex = getMaxZIndex() + 1
- let StateFontSize = Number(((1/(GetDPI/1.5))*0.65*(16/DefaultFontSize)).toFixed(2)) + 'rem'
- let StateLineHeight = Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem'
-
- document.querySelector('.CenterBox').style.cssText = `font-size: ${CneterBoxFontSize}; z-index: ${CenterBoxZIndex}; display: block;`
- document.querySelector('.State').style.cssText = `font-size: ${StateFontSize}; line-height: ${StateLineHeight}`
- document.querySelector('.State').textContent = ' ' + GetState.length
-
- if(/naughtyblog\.org\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.post-title.entry-title')
- CopyTitle = CopyOffSetArea.innerText
-
- DownloadArea = document.querySelectorAll('div#download, div#downloadhidden')
- CoverImage = document.querySelector('div.post-content-single p a') ? document.querySelector('div.post-content-single p a').href : ''
- let MatchCast, InfoAreaCast, Title, Cast, SearchCast, SearchTitle, SearchWeb, FirstMatchCast, FirstMatchWeb, InfoCast, SearchWebPoint, SearchCastPoint, Released, ReleasedEn, Episode
- //CopyTitle에서 MatchWeb 찾기
- let MatchWebPoint = CopyTitle.search(/\s-\s/)
- console.log('MatchWebPoint: ' + MatchWebPoint)
- let MatchWeb = MatchWebPoint !== -1 ? CopyTitle.substr(0, MatchWebPoint).replace(/\s/g, '') : CopyTitle
- MatchWebRegExp = new RegExp(MatchWeb.replaceAll("'", ""), 'i')
- console.log('MatchWeb: ' + MatchWeb)
-
- InfoArea = document.querySelector('div.post-content-single').innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').replace(/^(\s?(UPDATED|EARLY LEAK)\s?)/gim,'').split(/\n/)
- InfoArea = InfoArea.filter(function(e){return e})
- InfoArea = InfoArea.filter((element) => !/^(http|Size|Download|Watch online|Spare links)/i.test(element));
- console.log('InfoArea: ', InfoArea)
- InfoAreaCast = document.querySelector('div.post-content-single p strong').innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').replace(/^(\s?(UPDATED|EARLY LEAK)\s?)/gim,'').split(/\n/)
- InfoAreaCast = InfoAreaCast.filter(function(e){return e})
- console.log(InfoAreaCast)
-
- if(CopyTitle.match(/Updates/i)){
- CoverImage = ''
- MutilSubTitle(MatchWeb, MatchWebPoint, InfoAreaCast, DownloadArea)
- }
- else if(!CopyTitle.match(/Updates/i) && InfoAreaCast.length > 1 ){
- console.log('Mutil SubTitle....')
- MutilSubTitle(MatchWeb, MatchWebPoint, InfoAreaCast, DownloadArea)
- }
-
- else if(!CopyTitle.match(/SITERIP|OnlyFans|Collection/i)){
- //CopyTitle에서 배우명 찾기
- MatchCast = MatchWebPoint !== -1 ? CopyTitle.substr(MatchWebPoint + 3).split(/&|\s|,|:/) : CopyTitle.match(/.+/)
- MatchCast = MatchCast ? MatchCast.filter(function(e){return e}) : []
- MatchCast = MatchCast ? MatchCast.filter((entry) => isNaN(entry)) : []//숫자 및 단일글자 제거
- MatchCast = MatchCast ? MatchCast.filter((entry) => entry.length > 1) : []//숫자 및 단일글자 제거
- console.log('MatchCast: ' + MatchCast)
- let MatchTitle = MatchWebPoint !== -1 ? CopyTitle.substr(MatchWebPoint+3) : CopyTitle
- console.log('MatchTitle: ' + MatchTitle)
- for (let i = 0; i < InfoArea.length; i++) {
- if(!Cast){
- Cast = InfoArea[i].match(/Cast\s?:/) ? InfoArea[i].match(/Cast\s?:(.+)/).pop() : ''
- console.log('Cast: ', Cast)
- }
- //배우명 작품타이틀 찾기
- if(!FirstMatchCast && InfoArea[i].match(/-/g) && !Cast){
- //배우명 찾기
- SearchCastPoint = InfoArea[i].search(/\s-\s/)
- console.log('SearchCastPoint: ' + SearchCastPoint)
- SearchCast = SearchCastPoint !== -1 ? InfoArea[i].substr(0, SearchCastPoint).split(/\&|\s|,/) : new Array(InfoArea[i])
- SearchCast = SearchCast ? SearchCast.filter(function(e){return e}) : ''//빈 배열값 제거
- SearchCast = SearchCast ? SearchCast.filter((entry) => isNaN(entry)) : ''//숫자 제거
- SearchCast = SearchCast ? SearchCast.filter((entry) => entry.length > 1) : ''//단일글자 제거
- console.log('SearchCast: ' + SearchCast)
- MatchCast = MatchCast ? MatchCast.find((val) => {
- console.log('SearchingCast: ' + val)
- return SearchCast.includes(val)
- })
- :''
- console.log('MatchCast: ' + MatchCast)
- //배우명 없는 경우 작품 타이틀로 찾기
- if(!MatchCast && !SearchTitle){
- SearchTitle = SearchCastPoint !== -1 ? InfoArea[i].substr(SearchCastPoint + 3) : InfoArea[i]
- SearchTitle = InfoArea[i].toLowerCase().includes(SearchTitle.toLowerCase()) ? InfoArea[i] : ''
- console.log('SearchTitle: ' + SearchTitle)
- }
- FirstMatchCast = MatchCast ? MatchCast : ''
- SearchTitle = SearchTitle ? SearchTitle : ''
- InfoCast = MatchCast && !InfoCast ? InfoArea[i] : ''
- console.log('FirstMatchCast: ' + FirstMatchCast)
- console.log('InfoCast: ' + InfoCast)
- }
- //MatchWeb 찾기
- if(!InfoArea[i].match(/^http/) && !FirstMatchWeb){
- SearchWebPoint = InfoArea[i].match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/) ? InfoArea[i].match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/)
- : InfoArea[i].match(/(.+)(\.\d{4}\.)(.+)/) ? InfoArea[i].match(/(.+)(\.\d{4}\.)(.+)/) : ''
- console.log('SearchWebPoint:', InfoArea[i], InfoArea[i].match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/), InfoArea[i].match(/(.+)(\.\d{4}\.)(.+)/))
- if(SearchWebPoint){
- SearchWeb = SearchWebPoint[1] && MatchWeb.toLowerCase().match(SearchWebPoint[1].toLowerCase()) ? MatchWeb
- : (MatchWeb.replace(/\!|'/g, '').toLowerCase()).match(SearchWebPoint[1].toLowerCase()) ? MatchWeb
- : (MatchWeb.replace(/-|\s|\./g, '').toLowerCase()).match(SearchWebPoint[1].toLowerCase()) ? SearchWebPoint[1]
- : (MatchWeb.toLowerCase()).match(SearchWebPoint[1].replace(/-|\s/g, '').toLowerCase()) ? SearchWebPoint[1]
- : MatchWeb + '(' + SearchWebPoint[1] + ')'
- console.log('SearchWeb: ' + SearchWeb)
- FirstMatchWeb = SearchWeb ? SearchWeb
- : ''
- console.log('FirstMatchWeb 1st: ' + FirstMatchWeb)
- }
- else{
- FirstMatchWeb = CopyTitle === InfoArea[i] ? MatchWeb
- : InfoArea[i].match(MatchWeb) ? InfoArea[i].match(MatchWeb) : ''
- var EpisodeTmp = InfoArea[i].match(/^(?!.*S\d+)(?=.*E\d{2,5}).*$/) ? '.' + InfoArea[i].match(/E\d{2,5}/) : ''
- InfoCast = InfoCast && EpisodeTmp && InfoCast.match(/^(?!.*S\d+)(?=.*E\d{2,5}).*$/) ? InfoCast.replace(/-?\s?E\d{2,5}$/, '').trim() : InfoCast
- console.log('FirstMatchWeb 2nd: ', FirstMatchWeb, '\nEpisode: ', Episode)
- }
- }
- if(!Released){
- Released = InfoArea[i].match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/) ? InfoArea[i].match(/(\.\d+\.\d+.\d+\.)/).pop() : ''
- console.log('Released: ', Released)
- }
- if(!Episode){
- Episode = InfoArea[i].match(/^(?!.*S\d+)(?=.*E\d{2,5}).*$/) ? '.' + InfoArea[i].match(/E\d{2,5}/)
- : EpisodeTmp ? EpisodeTmp
- : ''
- }
-
- if(!ReleasedEn){
- ReleasedEn = InfoArea[i].match(/Released:(.+)/i) ? InfoArea[i].match(/Released:(.+)/i).pop() : ''
- console.log('ReleasedEn: ', ReleasedEn)
- ReleasedEn = ReleasedEn ? '.' + ReleasedEn.trim().replace(/,/g, '').replace(/\s/g, '.') + '.' : ''
- ReleasedEn = ReleasedEn && ReleasedEn.split('.')[1].match(/^[a-zA-Z]/) ? ReleasedEn.replace(ReleasedEn.split('.')[1], getNumericMonth(ReleasedEn.split('.')[1])) : ''
- }
-
- if(FirstMatchCast && FirstMatchWeb && Released){
- CopyTitle = Released && InfoCast ? FirstMatchWeb + Episode + Released + InfoCast
- : Released && !InfoCast && MatchTitle ? FirstMatchWeb + Episode + Released + MatchTitle
- : FirstMatchWeb + Episode + Released + InfoCast
- console.log('All Match: ' + CopyTitle)
- break
- }
- else if(FirstMatchCast && FirstMatchWeb && ReleasedEn){
- CopyTitle = InfoCast ? FirstMatchWeb + Episode + ReleasedEn + InfoCast
- : !InfoCast && FirstMatchCast ? FirstMatchWeb + Episode + ReleasedEn + FirstMatchCast
- : FirstMatchWeb + Episode + ReleasedEn + (InfoCast ? InfoCast : FirstMatchCast)
- console.log('Some Match: ' + CopyTitle)
- }
- else if(!FirstMatchCast && !FirstMatchWeb && Released){
- if(CopyTitle === InfoArea[i]){
- console.log('Same Title: ' + CopyTitle, InfoArea[i])
- }
- }
- else if(MatchCast == MatchTitle && FirstMatchWeb && Released){
- InfoCast = InfoCast ? InfoCast : Cast ? '(' + Cast.trim() + ')' : ''
- CopyTitle = FirstMatchWeb + Episode + Released + InfoCast
- console.log('MatchCast == MatchTitle: ' + CopyTitle)
- }
- else if(!FirstMatchCast && MatchWeb && FirstMatchWeb && Released && MatchCast){
- CopyTitle = MatchWeb + "(" + FirstMatchWeb + ")" + Episode + Released + MatchCast.join(' ')
- console.log('MatchWeb VS FirstMatchWeb: ' + CopyTitle, InfoArea[i])
- }
- else if(i == InfoArea.length -1){
- console.log( MatchWeb, SearchWeb, Released, ReleasedEn, FirstMatchCast, Episode, InfoCast )
- InfoCast = InfoCast ? InfoCast : Cast ? '(' + Cast.trim() + ')' : ''
- console.log('InfoCast: ', InfoCast)
- Released = Released ? Released : ReleasedEn ? ReleasedEn : ''
- CopyTitle = MatchWeb && Released && SearchWebPoint && InfoCast ? MatchWeb + '(' + SearchWebPoint[1] + ')' + Episode + Released + InfoCast
- : MatchWeb && Released && InfoCast ? MatchWeb + Episode + Released + InfoCast
- : MatchWeb && Released && FirstMatchCast ? MatchWeb + Episode + Released + FirstMatchCast
- : SearchWeb && !Released && SearchWebPoint && SearchWeb&& InfoCast ? SearchWeb + SearchWebPoint[2] + Episode + InfoCast
- : MatchWeb && Episode && MatchTitle && InfoCast ? MatchWeb + Episode + MatchTitle + InfoCast
- : MatchWeb && SearchTitle && !InfoCast && Released ? MatchWeb + Episode + Released + SearchTitle
- : MatchWeb && MatchTitle && !InfoCast && Released ? MatchWeb + Episode + Released + MatchTitle
- : MatchWeb && Released && InfoCast ? MatchWeb + Episode + Released + InfoCast
- : SearchWeb && InfoCast ? SearchWeb + Episode + InfoCast
- : CopyTitle + InfoCast
- console.log('End : ', CopyTitle)
- }
- }
-
- CopyTitle = CopyTitle.replace(/(S\d+):(E\d+)/i, '$1$2')
- CopyTitle = byteLengthOf(CopyTitle, 250)
- CopyTitle = FilenameConvert(CopyTitle) + Resolution
-
- console.log('CopyTitle: ' + CopyTitle)
- let LinkDB = []
- for (let i = 0; i < DownloadArea.length; i++) {
- let Links = MatchRegex(DownloadArea[i], new RegExp('1080p', 'i'), 'href')
- console.log('1080p: ', Links)
- if(Links?.length > 0){
- LinkDB.push(...Links)
- }
- else if(!Links?.length){
- Links = MatchRegex(DownloadArea[i], new RegExp('2160p', 'i'), 'href')
- console.log('2160p: ', Links)
- if(Links?.length > 0){
- LinkDB.push(...Links)
- }
- else if(!Links?.length){
- Links = MatchRegex(DownloadArea[i], new RegExp('720p', 'i'), 'href')
- console.log('720p: ', Links)
- if(Links?.length > 0){
- LinkDB.push(...Links)
- }
- else if(!Links?.length){
- Links = MatchRegex(DownloadArea[i], new RegExp(MatchWeb + '|' + MatchCast, 'i'), 'href')
- console.log('Links: ', Links)
- LinkDB.push(...Links)
- }
- }
- }
- }
- LinkDB = LinkDB?.length > 0 ? LinkDB.map((entry) => entry.outerHTML) : ''
- console.log('LinkDB: ', LinkDB)
- let container = document.createElement("div")
-
- LinkDB.forEach((el, i) => {
- const fragment = document.createRange().createContextualFragment(el);
- console.log(fragment.children[0]);
- container.appendChild(fragment.children[0]);
- })
- container.classList.add("DownloadArea")
- document.body.appendChild(container);
- DownloadArea = document.querySelectorAll('div.DownloadArea')
- console.log('DownloadArea: ', DownloadArea)
- }
- if(!document.querySelector('.GetTitle')){
- document.querySelector("div#main-content.main-content-single div div.post-content-single p strong").insertAdjacentHTML('afterend', ' <i class="GetTitle fas fa-paste"></>')
- }
- document.querySelector('.GetTitle').addEventListener("click", async function(event){
- event.preventDefault()
- event.target.style.setProperty('color', 'Orange', 'important')
- updateClipboard(CopyTitle)
- })
- }
-
- else if(/maxjav.com\/\d+/.test(PageURL) && window.top === window.self){
- CopyOffSetArea = document.querySelector('div#content > div > .title')
- CopyTitle = CopyOffSetArea.innerText
- CopyTitle = CopyTitle.match(/\[?.*Subtitle\]?(.+)/) ? CopyTitle.match(/\[.+Subtitle\](.+)/).pop() : CopyTitle
- CopyTitle = CopyTitle.replace(/amp;/g, '').replace(/(\s)?\/(\s)?/g, '/').replace(/(-|–)\sHD/, '').replace(/amp;|\(\s?ブルーレイ版\s?\)|\(ブルーレイディスク版\)|:/g, '').trim()
- console.log(CopyTitle)
- if(!CopyTitle.match(/^Collection/)){
- InfoArea = document.querySelector('div#content > div > .entry > p').innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').split(/\n\n|\n/)
- InfoArea = InfoArea.filter(function(e){return e})//빈 배열값 제거
- console.log(InfoArea)
- //Series = InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)) ? InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)).replace(/シリーズ:?/, '').trim() : ''
- for (let i = 0; i < InfoArea.length; i++) {
- if(!Title){
- console.log(CopyTitle.match(SearchID))
- CopyTitleTmp = CopyTitle.match(SearchIDRegExp) ? CopyTitle.match(SearchID).pop().trim() : ''
- InfoTitleTmp = InfoArea[i].match(SearchIDRegExp) ? InfoArea[i].match(SearchID).pop().trim() : ''
- console.log('CopyTitleTmp: ', CopyTitleTmp, '\nInfoTitleTmp: ', InfoTitleTmp)
- //CopyTitleTmp.match(/[\u3040-\u309f\u30a0-\u30ff]/g) 일본어 히라가나 카타가나 찾기
- if(CopyTitleTmp && InfoTitleTmp){
- Title = CopyTitleTmp.toLowerCase() === InfoTitleTmp.toLowerCase() ? CopyTitleTmp
- : (CopyTitleTmp.match(JapaneseChar) || []).length >= (InfoArea[i].match(JapaneseChar) || []).length ? CopyTitleTmp
- : (CopyTitleTmp.match(JapaneseChar) || []).length < (InfoArea[i].match(JapaneseChar) || []).length ? InfoTitleTmp
- : CopyTitleTmp
- Title = Title.trim() + ' '
- console.log('Title 1st: ' + Title)
- }
- else{
- Title = CopyTitleTmp && (CopyTitle.match(JapaneseChar) || []).length >= (InfoArea[i].match(JapaneseChar) || []).length ? CopyTitleTmp
- : InfoTitleTmp && InfoTitleTmp.match(JapaneseChar) && (CopyTitle.match(JapaneseChar) || []).length <= (InfoArea[i].match(JapaneseChar) || []).length ? InfoTitleTmp
- : (CopyTitle.match(JapaneseChar) || []).length < (InfoArea[i].match(JapaneseChar) || []).length ? InfoArea[i]
- : CopyTitle.match(JapaneseChar) ? CopyTitle
- : InfoArea[i].match(JapaneseChar) ? InfoArea[i]
- : CopyTitle
-
- Title = Title.trim() + ' '
- Title = mbConvertKana(Title, 'rans')
- console.log('Title 2nd: ' + Title)
- }
- }
- if(!ID){
- console.log(CopyTitle.match(SearchID), InfoArea[i].match(SearchID))
- let TitleID = CopyTitle.match(SearchIDRegExp) ? CopyTitle.match(SearchID)[1] : CopyTitle.match(SearchFC2ID) ? CopyTitle.match(SearchFC2ID)[1] : ''
- let InfoID = InfoArea[i].match(SearchIDRegExp) ? InfoArea[i].match(SearchID)[1] : InfoArea[i].match(SearchFC2ID) ? InfoArea[i].match(SearchFC2ID)[1] : ''
- if(TitleID && InfoID && TitleID.replace(/-/g, '').trim().toLowerCase() === InfoID.replace(/-/g, '').trim().toLowerCase()){
- ID = TitleID.match(/-/g) && InfoID.match(/-/g) ? TitleID
- : TitleID.match(/-/g) ? TitleID
- : InfoID.match(/-/g) ? InfoID.match(/-/g)
- : TitleID
- }
- else{
- ID = TitleID ? TitleID : InfoID
- }
- console.log('ID: ' + ID)
- if(ID){
- ID = ID.trim() + ' '
- }
- }
- if(CfgReleaseDate && !ReleaseDate && InfoArea[i].match(/Release Date:/)){
- ReleaseDate = InfoArea[i].match(/Release Date:(.+)/)[1].replace(/\//g, '-').trim()
- }
- if(MakerCfg && !Maker && InfoArea[i].match(/(Maker|Studio)\s?:(.+)/)){
- Maker = InfoArea[i].match(/(Maker|Studio)\s?:(.+)/)[2].replace(/(\s)?\/(\s)?/g, '/').trim()
- }
- if(Title && ID && ReleaseDate){
- break
- }
- }
- Maker = Maker ? '[' + Maker + '] ' : ''
- ReleaseDate = ReleaseDate ? '(' + ReleaseDate + ') ' : ''
-
- Title = Maker + ID + ReleaseDate + Title
-
- if(byteLengthOfCheck(Title) > 250){
-
- let TitleLast = getLastText(Title)
-
- if(typeof TitleLast == 'undefined' || !TitleLast || TitleLast.length === 0 || TitleLast === "" || !/[^\s]/.test(TitleLast) || /^\s*$/.test(TitleLast) || TitleLast.replace(/\s/g,"") === ""){
- CopyTitle = byteLengthOf(Title, 250).trim()
- }
- else{
- Title = Title.split(TitleLast)[0].trim()
- Title = byteLengthOf(Title, 250 - byteLengthOfCheck(TitleLast))
- console.log('Title: ', Title, TitleLast)
- CopyTitle = (Title + TitleLast).trim()
- }
- }
- else CopyTitle = Title.trim()
-
- console.log('Last Title: ' + CopyTitle)
-
- }
- //CopyTitle = CopyOffSetArea.textContent.replace(/\s–\s(UltraHD|Full|HD|SD)/, '').trim()
- DownloadArea = document.querySelectorAll('div#content > div > div.entry p')
- CoverImage = DownloadArea[0].querySelector('p img') ? DownloadArea[0].querySelector('p img').src : ''
- }
-
- else if(/javpink\.com\/\?p/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.item > .title')
- Title = CopyOffSetArea.textContent.trim()
- DownloadArea = document.querySelectorAll('.item > .content')
- CoverImage = DownloadArea[0].querySelector('p img') ? DownloadArea[0].querySelector('p img').src : ''
-
- for (let i = 0; i < DownloadArea.length; i++) {
- InfoArea = DownloadArea[i].innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').split(/\n\n|\n/)
- }
- InfoArea = InfoArea.filter(function(e){return e})//빈 배열값 제거
- console.log(InfoArea)
- Series = InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)) ? InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)).replace(/シリーズ:?/, '').trim() : ''
-
- Title = mbConvertKana(Title, 'rans')
- if(byteLengthOfCheck(Title) > 250){
- let TitleLast = getLastText(Title)
-
- if(typeof TitleLast == 'undefined' || !TitleLast || TitleLast.length === 0 || TitleLast === "" || !/[^\s]/.test(TitleLast) || /^\s*$/.test(TitleLast) || TitleLast.replace(/\s/g,"") === ""){
- CopyTitle = byteLengthOf(Title, 250).trim()
- }
- else{
- Title = Title.split(TitleLast)[0].trim()
- Title = byteLengthOf(Title, 250 - (byteLengthOfCheck(TitleLast)))
- console.log('Title: ', Title, TitleLast)
- CopyTitle = (Title + TitleLast).trim()
- }
- }
- else CopyTitle = Title.trim()
- }
-
- else if(/top-modelz.org\/.+html/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.news-detalis h2')
- Title = CopyOffSetArea.textContent.trim()
- DownloadArea = document.querySelectorAll('div#content div#l-content div#dle-content div.news-block div.newspad')
- CoverImage = DownloadArea[0].querySelector('p img') ? DownloadArea[0].querySelector('p img').src : ''
- for (let i = 0; i < DownloadArea.length; i++) {
- InfoArea = DownloadArea[i].innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').split(/\n\n|\n/)
- }
- InfoArea = InfoArea.filter(function(e){return e})//빈 배열값 제거
- console.log(InfoArea)
- let Released
- for (let i = 0; i < InfoArea.length; i++) {
- if(!Released){
- Released = InfoArea[i].match(/\d+-\d+-\d+/) ? InfoArea[i].match(/\d+-\d+-\d+/) + ' ' : ''
- }
- if(Released){
- break
- }
- }
- CopyTitle = Released ? Released + Title : Title
- CopyTitle = CopyTitle
- CopyTitle = byteLengthOf(CopyTitle, 250)
- }
-
- else if(/(8kcosplay\.com|blogjav\.net|javfree\.me)\/\d+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.entry-title')
- if(/javfree\.me/.test(PageURL)){
- DownloadArea = document.querySelectorAll('.entry-content')
-
- //CoverImage = DownloadArea[0].querySelector('p img') ? DownloadArea[0].querySelector('p img').src : ''
- }
- else{
- DownloadArea = document.querySelectorAll('.entry-content > p')
- CoverImage = DownloadArea[0].querySelector('p img') ? DownloadArea[0].querySelector('p img').src : ''
- }
-
- Title = CopyOffSetArea.textContent.replace(/\[([a-zA-Z]{2,11}-?\d{2,6}[a-zA-Z]?|\d{2,4}[a-zA-Z]{2,7}-?\d{3,6}[a-zA-Z]?|[a-zA-Z]{1,2}-?\d{2}-?\d{2}|[a-zA-Z]{2,7}-?[a-zA-Z]{1,2}\d{2})\]/, '$1')
- ID = Title.match(SearchFC2ID) ? Title.match(SearchFC2ID)[1] : ''
- console.log('ID: ', ID)
- Title = Title.replace(ID, '').trim()
- Title = Title.split(/\s/).filter(function(e){return e})
- console.log('Title: ', Title)
- if(Title[0].match(/UNCENSORED/)){
- Title.shift()
- Title = Title.join(' ')
- }
- else{
- Title = Title.join(' ')
- }
- for (let i = 0; i < DownloadArea.length; i++) {
- InfoArea = DownloadArea[i].innerText.replace(/(?:(?:\r\n|\r|\n)\s*){2}/gm, '\n').split(/\n\n|\n/)
- }
-
- InfoArea = InfoArea.filter(function(e){return e})//빈 배열값 제거
- console.log('InfoArea: ', InfoArea)
- Series = InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)) ? InfoArea.find(InfoSearch => InfoSearch.match(/シリーズ:?.*/)).replace(/シリーズ:?/, '').trim() : ''
- console.log('Series: ', Series)
- Title = mbConvertKana(Title, 'rans')
- console.log(Title, ID)
- if(byteLengthOfCheck(Title) > 250 - byteLengthOfCheck(ID)){
- let TitleLast = getLastText(Title)
- if(typeof TitleLast == 'undefined' || !TitleLast || TitleLast.length === 0 || TitleLast === "" || !/[^\s]/.test(TitleLast) || /^\s*$/.test(TitleLast) || TitleLast.replace(/\s/g,"") === ""){
- CopyTitle = ID + byteLengthOf(Title, 250 - byteLengthOfCheck(ID)).trim()
- }
- else{
- Title = Title.split(TitleLast)[0].trim()
- Title = byteLengthOf(Title, 250 - (byteLengthOfCheck(ID) + byteLengthOfCheck(TitleLast)))
- CopyTitle = (ID + Title + TitleLast).trim()
- if(byteLengthOfCheck(CopyTitle) > 250){
- console.log('CopyTitle length: ', byteLengthOfCheck(CopyTitle))
- }
- }
- }
- else CopyTitle = ID + Title.trim()
- console.log('CopyTitle: ', CopyTitle)
- }
-
- else if(/wetholefans.com\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.post-title #news-title h1')
- console.log(parseFloat(window.getComputedStyle(CopyOffSetArea).fontSize))
- //console.log('CopyOffSetArea: ' + CopyOffSetArea)
- Resolution = !Resolution && CopyOffSetArea && CopyOffSetArea.innerText.match(/[0-9]{3,4}p/) ? ' ' + CopyOffSetArea.innerText.match(/[0-9]{3,4}p/)[0] : ''
- console.log(Resolution)
- CopyTitle = CopyOffSetArea.innerText.replace(/\((UltraHD|Full|HD|SD).+/, '').replace(/\s+/g, ' ').trim()
- CopyTitle = capitalize(CopyTitle)
- DownloadArea = CopyOffSetArea.closest('.story').querySelectorAll('.quote')
- let SearchLinks
- DownloadArea.forEach((LinkEntry) => {
- SearchLinks = LinkEntry.querySelectorAll('a')
- })
- console.log(SearchLinks)
- for (let i = 0; i < SearchLinks.length; i++) {
- if(!ReleaseDate){
- ReleaseDate = SearchLinks[i].textContent.match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/) ? SearchLinks[i].textContent.match(/(\.\d+\.\d+.\d+\.)/).pop() : ''
- }
- else{
- break
- }
- }
- let MatchWebPoint = CopyTitle.search(/\s-\s/)
- let MatchWeb = MatchWebPoint !== -1 ? CopyTitle.substr(0, MatchWebPoint).replace(/\s/g, '') : CopyTitle
- CopyTitle = ReleaseDate ? MatchWeb + ReleaseDate + CopyTitle.substr(MatchWebPoint+3) : CopyTitle
- console.log(CopyTitle)
- CopyTitle = CopyTitle.replace(/\*/g, '*').replace(/\?/g, '?')
- CopyTitle = byteLengthOf(CopyTitle, 250)
-
- }
-
- else{
- if(/(pornchil\.com\/)(?!$).*$/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.inside-article > .entry-content').querySelector('strong > span')
- DownloadArea = document.querySelectorAll('.inside-article > div.entry-content')
- console.log(CopyOffSetArea)
- }
- else if(/javarchive\.com\/\d{4,6}/.test(PageURL)){
- CopyOffSetArea = document.querySelector('div.news > div.first_des') || document.querySelector('.menudd > h1')
- DownloadArea = document.querySelectorAll('.link_archive_innew')
- CoverImage = document.querySelector('div.category_news_phai_chinh > div.news > div.fisrst_sc img:not([src^="data"])') ? document.querySelector('div.category_news_phai_chinh > div.news > div.fisrst_sc img').getAttribute('src') : document.querySelector('div.category_news_phai_chinh > div.news > div.fisrst_sc img').getAttribute('data-src')
- //console.log(CopyOffSetArea, DownloadArea, CoverImage)
- }
- else if(/kbjme\.com\/\d+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.article_container h1')
- DownloadArea = document.querySelectorAll('div.article_container div.context div#post_content')
- console.log(DownloadArea)
- document.querySelector('.article_container a').href = '#'
- document.querySelector('.article_container a').removeAttribute('target')
- }
- else if(/hpjav.tv\/(ja\/)?\d+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('section div ol li.active')
- CoverImage = document.querySelector('#JKDiv_0') ? GetBackGroundUrl(document.querySelector('#JKDiv_0')) : ''
- let AddElementArea = document.querySelector('div#down_server')
- let observer = new MutationObserver(function(mutations) {
- if (document.querySelector('ul.pricing-table')) {
- DownloadArea = document.querySelectorAll('ul.pricing-table')
- console.log('DownloadArea: ', DownloadArea)
- if(DownloadArea){
- observer.disconnect()
- window.scrollTo({ top: 0, behavior: 'auto' })
- DownloadArea.forEach((LinkEntry) => {
- LinkEntry.querySelectorAll('a').forEach((aEntry) => {
- if( RootDomain !== (extractRootDomain(aEntry.href))){
- aEntry.classList.remove("dbtn")
- aEntry.removeAttribute('type')
- aEntry.textContent = aEntry.href
- aEntry.insertAdjacentHTML('beforebegin', '<img src=https://www.google.com/s2/favicons?domain=' + extractRootDomain(aEntry.href) +' ></>')
- }
- })
- })
- keyvent.down('ctrl alt a')
- }
- }
- })
- observer.observe(AddElementArea, { attributes: true, childList: true, subtree: true });
- await sleep(1000)
- document.querySelector('#download_div.btn.btn-info').click()
- }
- else if(/0xxx\.ws\/articles\/\d+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('div.container table#detail-table tbody tr td.taj:not(.levo)')
- DownloadArea = document.querySelectorAll('div.container table#detail-table tbody tr td.dlinks.taj')
- console.log(DownloadArea)
- window.addEventListener('scroll', scrollToTop)
- }
- else if(/pornrips\.cc\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('div#dle-content article div.head h1.title')
- DownloadArea = document.querySelectorAll('div#dle-content article div.story_cont .screenshots, div#dle-content article div.story_cont div.links')
- console.log(DownloadArea)
- }
- else if(/(thotsgirls\.com)\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.entry-title')
- DownloadArea = document.querySelectorAll('div.entry-content')
- console.log(DownloadArea)
- }
- else if(/fhdporn\.video\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('h1.post-title')
- DownloadArea = document.querySelectorAll('div.post-content')
- console.log(DownloadArea)
- }
- else if(/av18plus\.com/.test(PageURL)){
- CopyOffSetArea = document.querySelector('article.post > h1#post-title')
- DownloadArea = CopyOffSetArea ? CopyOffSetArea.closest('article').querySelectorAll('p') : ''
- console.log(DownloadArea)
- }
- else if(/siteripbb\.org\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.entry-title')
- DownloadArea = document.querySelectorAll('div.entry-content')
- console.log(DownloadArea)
- }
- else if(/asianscan\.biz\/.*\.html/.test(PageURL)){
- CopyOffSetArea = document.querySelector('div div.content div#dle-content div.mainf3')
- DownloadArea = document.querySelectorAll('div.content div#dle-content div.sscn div.quote')
- console.log(DownloadArea)
- }
- else if(/adult-porno\.org\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('div.full-in h1')
- DownloadArea = document.querySelectorAll('div.quote')
- console.log(DownloadArea)
- Resolution = !Resolution && CopyOffSetArea && CopyOffSetArea.innerText.match(/[0-9]{3,4}p/) ? ' ' + CopyOffSetArea.innerText.match(/[0-9]{3,4}p/)[0] : ''
- }
- else if(/(sharepornlink\.com\/)(?!($|page))(.*)$/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.main-title.title')
- DownloadArea = document.querySelectorAll('div.text p')
- console.log(DownloadArea)
- Resolution = !Resolution && CopyOffSetArea && CopyOffSetArea.innerText.match(/[0-9]{3,4}p/) ? ' ' + CopyOffSetArea.innerText.match(/[0-9]{3,4}p/)[0] : ''
- }
- else if(/pornobunny\.org\/.+/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.titlesf')
- document.querySelector('a.quote-hider-trigger').click()
- let AddElementArea = document.querySelector('div.sstory')
- let observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- for (var i = 0; i < mutation.addedNodes.length; i++) {
- if (mutation.addedNodes[i].nodeType === Node.ELEMENT_NODE) {
- if (mutation.addedNodes[i].classList.contains('quote')) {
- DownloadArea = document.querySelectorAll('div.quote')
- console.log('DownloadArea: ', DownloadArea)
- if(DownloadArea){
- observer.disconnect()
- window.scrollTo({ top: 0, behavior: 'auto' })
- }
- }
- }
- }
- })
- });
- observer.observe(AddElementArea, { childList: true, subtree: true });
- Resolution = !Resolution && CopyOffSetArea && CopyOffSetArea.innerText.match(/[0-9]{3,4}p/) ? ' ' + CopyOffSetArea.innerText.match(/[0-9]{3,4}p/)[0] : ''
- }
- else if(/pornrip\.cc\/.+\.html/.test(PageURL)){
- CopyOffSetArea = document.querySelector('.title.ularge')
- let AddElementArea = document.querySelector('article.main-article section.post-content')
- let observer = new MutationObserver(function(mutations) {
- mutations.forEach(function(mutation) {
- for (var i = 0; i < mutation.addedNodes.length; i++) {
- console.log(mutation.addedNodes[i])
- if (mutation.addedNodes[i].nodeName === 'A') {
- DownloadArea = document.querySelectorAll('article.main-article > section.post-content > div > div.su-spoiler > div.su-spoiler-content')
- console.log('DownloadArea: ', DownloadArea)
- if(DownloadArea){
- observer.disconnect()
- window.scrollTo({ top: 0, behavior: 'auto' })
- document.querySelectorAll('a').forEach((aEntry) => {
- if(/\?site.+$/.test(aEntry.href)){
- aEntry.setAttribute('href', aEntry.href.replace(/\?site.+$/, ''))
- }
- })
- break
- }
- }
- }
- })
- });
- observer.observe(AddElementArea, { childList: true, subtree: true })
- Resolution = !Resolution && CopyOffSetArea && CopyOffSetArea.innerText.match(/[0-9]{3,4}p/) ? ' ' + CopyOffSetArea.innerText.match(/[0-9]{3,4}p/)[0] : ''
- }
- if(CopyOffSetArea){
- //console.log('InnerText: ', getDirectInnerText(CopyOffSetArea))
- CopyTitle = getDirectInnerText(CopyOffSetArea).replace('–', '-').replace(/\s+/g, ' ').replace(/\[(UltraHD|FullHD|HD).+\].*/, '').replace(/^Japanese porn -|6000Kbps FHD/, '').trim()
- CopyTitle = CopyTitle.match(/(–\sSiterip)\s–.+/) ? CopyTitle.match(/(.+Siterip)\s–.+/)[1] : CopyTitle
- CopyTitle = capitalize(CopyTitle)
- if(byteLengthOfCheck(CopyTitle) > 250){
- let TitleLast = getLastText(CopyTitle)
-
- if(typeof TitleLast == 'undefined' || !TitleLast || TitleLast.length === 0 || TitleLast === "" || !/[^\s]/.test(TitleLast) || /^\s*$/.test(TitleLast) || TitleLast.replace(/\s/g,"") === ""){
- Title = byteLengthOf(CopyTitle, 250).trim()
- }
- else{
- Title = CopyTitle.split(TitleLast)[0].trim()
- Title = byteLengthOf(Title, 250 - (byteLengthOfCheck(TitleLast)))
- console.log('Title: ', Title, TitleLast)
- Title = (Title + TitleLast).trim()
- }
- CopyTitle = Title.trim()
- }
- else CopyTitle = CopyTitle.trim()
- }
- }
- }
-
-
- document.addEventListener("DOMContentLoaded", async function(event) {
- if(!document.querySelector("div.CenterBox")){
- await Start()
- }
-
- document.addEventListener("click", async (event) => {
- //console.log(event.target)
- if(event.target.classList.contains('ClearButton')){
- event.preventDefault()
- await ClearUrls()
- }
- if(event.target.classList.contains('CopyButton')){
- event.preventDefault()
- await ClipPaste()
- }
- if(event.target.classList.contains('CopyIcon')){
- event.preventDefault()
- CopyGo()
- }
- if(event.target.classList.contains('CloseIcon')){
- window.close()
- }
- if(event.target.classList.contains('Minus')){
- event.preventDefault()
- event.target.style = "color: Orange !important;";
- RemoveDB(listToDo(DownloadArea))
- CheckDB(listToDo(DownloadArea))
- }
- })
-
- if(CopyOffSetArea && !document.querySelector(".IconSet")){
- CopyOffSetArea.insertAdjacentHTML('afterend', '<div class="IconSet" style="top: auto; left: auto; max-width: max-content; visibility:hidden; position: absolute;"></>')
- document.querySelector(".IconSet").insertAdjacentHTML('beforeend', '<i class="CopyIcon far fa-clone" style ="color: dodgerblue !important; visibility:hidden;"></>')
- document.querySelector(".IconSet").insertAdjacentHTML('beforeend', ' <i class="CloseIcon fa-solid fa-square-xmark" style ="color: dodgerblue !important; visibility:hidden"></>')
- document.querySelector(".IconSet").insertAdjacentHTML('beforeend', ' <i class="Minus fa-solid fa-magnifying-glass-minus" style ="color: dodgerblue !important; visibility:hidden;"></>')
- document.body.insertAdjacentHTML('beforeend', '<div class="CopyNotice" style="visibility:hidden;"></>')
- document.querySelector(".IconSet").style.visibility = "hidden"
- if(document.hidden){
- document.querySelector(".CopyIcon").style.visibility = "hidden"
- }
- let IconSetZIndex = MaxZIndexFromPoint('.IconSet') + 1
- let IconSetFontSize = Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem'
- //document.querySelector('.IconSet').style.cssText = `font-size: ${CneterBoxFontSize}; z-index: ${CenterBoxZIndex}; display: block;`
- Object.assign(document.querySelector('.IconSet').style, {fontSize: IconSetFontSize, zIndex: IconSetZIndex});
-
- }
-
- if(CopyOffSetArea){
- console.log('Make Icon')
- MakeIconTimer = setTimeout(() => MakeIcon(GetDPI), 2000)
- /*
- window.addEventListener("resize", function(e) {
- console.log(e.type)
- //GetDPI = window.devicePixelRatio
- //DefaultFontSize = getDefaultFontSize()
- //console.log('GetDPI: ', GetDPI, 'DefaultFontSize: ', DefaultFontSize)
- //document.querySelector('.CenterBox').style.setProperty('font-size', Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem', 'important');
- //document.querySelector('.State').style.setProperty('font-size', Number(((1/(GetDPI/1.5))*0.65*(16/DefaultFontSize)).toFixed(2)) + 'rem', 'important');
- //document.querySelector('.State').style.setProperty('line-height', Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem', 'important');
- //document.querySelector('.CenterBox').style.setProperty('z-index', getMaxZIndex() + 1)
- //document.querySelector(".IconSet").style.setProperty('z-index', MaxZIndexFromPoint('.IconSet') + 1)
- MakeIcon(GetDPI)
- })
- */
- }
-
- })
-
- document.addEventListener("visibilitychange", async function() {
- //console.log("window is active!" )
- RootDomainDB = JSON.parse(await GM_getValue(RootDomain, '[]'))
- GetState = RootDomainDB
- if(document.querySelector('.CenterBox')){
- document.querySelector('.State').textContent = ' ' + GetState.length
- document.querySelector('.ClearButton').style = "color: dodgerblue !important;";
- document.querySelector('.CopyButton').style = "color: dodgerblue !important;";
- }
- })
-
- async function CopyGo() {
- let TitlePostion = getElementOffset(CopyOffSetArea)
- let TitleHeight = Math.max(TitlePostion.height, parseFloat(window.getComputedStyle(CopyOffSetArea).fontSize))
- let FixTop = Number((TitlePostion.top + TitlePostion.height).toFixed(2))
- let FixLeft = Number((TitlePostion.left + 2).toFixed(2))
- if(/pornchil.com/.test(PageURL)){
- FixLeft = getElementOffset(document.querySelector(".entry-content > h6")).left
- }
- else if(/pornrips\.cc/.test(PageURL)){
- FixLeft = getElementOffset(document.querySelector(".meta_date > .masha_index")).left
- }
- else if(/naughtyblog/.test(PageURL)){
- FixTop = getElementOffset(document.querySelector(".post-title.entry-title")).top + getElementOffset(document.querySelector(".post-title.entry-title")).height
- }
- $('.CopyNotice').css({
- "fontSize": Number(((1/(GetDPI/1.5))*0.6*(16/DefaultFontSize)).toFixed(2)) + 'rem',
- "top": FixTop + window.scrollY
- ,"left": FixLeft + window.scrollX
- , "position": "absolute",
- "z-index": getMaxZIndex() + 1
- })
- event.target.style = "color: Orange !important;"
- await CopyLink()
- let container = document.querySelector('.CopyNotice')
- container.classList.add('active')
- container.style.height = 'auto'
- var height = container.clientHeight + 'px'
- container.style.height = '0px'
- setTimeout(function () {
- container.style.height = height;
- container.style.visibility = "visible"
- }, 0)
- await sleep(3000)
- container.style.height = '0px'
- container.addEventListener('transitionend', function () {
- container.classList.remove('active');
- }, {
- once: true
- });
- }
-
- function sleep(ms) {
- return new Promise(resolve => setTimeout(resolve, ms));
- }
-
- function getLastText(Text) {
- let byteCheck = '', SearchCharPoint, TitleLastTmp
- let ArrayDB = Text.split(/\s/).filter(function(e){return e})//빈 배열값 제거
- let SeriesExp = new RegExp(Series + '.*')
- let ModelNameExp = new RegExp(/\((?!.*\().*\)/)
- let ModelName
-
- //console.log(JapaneseChar.test([ArrayDB.length -1]) , ArrayDB[ArrayDB.length -1], ArrayDB[ArrayDB.length -2] + ' ' + ArrayDB[ArrayDB.length -1])
- if(ModelNameExp.test(Text)){
- console.log('Model Name: ', Text.match(ModelNameExp)[0])
- ModelName = Text.match(ModelNameExp) ? Text.match(ModelNameExp)[0] : ''
- Text = Text.replace(ModelNameExp, '').trim()
- console.log(Text)
- }
- if(Series && SeriesExp.test(Text)){
- console.log(Series, SeriesExp)
- //console.log(Text.match(SeriesExp))
- TitleLastTmp = Text.match(SeriesExp) ? Text.match(SeriesExp).pop() : ''
- }
- else if(/朝までハシゴ酒/.test(Text)){
- TitleLastTmp = Text.match(/朝までハシゴ酒.*/)[0]
- }
- else if(/\d+/.test(ArrayDB[ArrayDB.length -1])){
- console.log(ArrayDB[ArrayDB.length -1])
- if(/ファイル\d+/.test(ArrayDB[ArrayDB.length -1])){
- TitleLastTmp = ArrayDB[ArrayDB.length - 2] + ' ' + ArrayDB[ArrayDB.length - 1]
- console.log('1st Match:' , TitleLastTmp)
- }
- else if(JapaneseChar.test(ArrayDB[ArrayDB.length -1])){
- TitleLastTmp = ArrayDB[ArrayDB.length -1]
- console.log('2nd Match:' , TitleLastTmp)
- }
- else if(byteLengthOfCheck(ArrayDB[ArrayDB.length -1]) < 100) {
- TitleLastTmp = ArrayDB[ArrayDB.length - 2] + ' ' + ArrayDB[ArrayDB.length - 1]
- console.log('3th Match:' , TitleLastTmp)
- }
- }
- console.log('TitleLastTmp: ', TitleLastTmp, /\d+/.test(ArrayDB[ArrayDB.length -1]), byteLengthOfCheck(TitleLastTmp))
- if(typeof TitleLastTmp == 'undefined' || !TitleLastTmp || TitleLastTmp.length === 0 || TitleLastTmp === "" || !/[^\s]/.test(TitleLastTmp) || /^\s*$/.test(TitleLastTmp) || TitleLastTmp.replace(/\s/g,"") === ""){
- byteCheck = ''
- }
- else if(TitleLastTmp.match(/\d+/)){
- if(SearchChar(TitleLastTmp, '】')){
- SearchCharPoint = Text.lastIndexOf("【")
- TitleLastTmp = Text.substring(SearchCharPoint)
- console.log('TitleLastTmp: ', TitleLastTmp)
- }
- else if(SearchChar(TitleLastTmp, '、') && TitleLastTmp.length <= 10 ){
- SearchCharPoint = TitleLastTmp.lastIndexOf("、")
- TitleLastTmp = TitleLastTmp.substring(SearchCharPoint + 1)
- console.log('TitleLastTmp: ', TitleLastTmp)
- }
- byteCheck = TitleLastTmp
- console.log('byteCheck: ', byteCheck)
- let FlagPoint = getFlag(byteCheck)
- if (byteLengthOfCheck(byteCheck) >= 100){
- console.log('CheckFlag: ', byteCheck, byteLengthOfCheck(byteCheck))
- let byteCheckTmp = byteCheck.substring(FlagPoint[0])
- if(!JapaneseChar.test(byteCheckTmp)){
- byteCheckTmp = byteCheck.substring(FlagPoint[1])
- }
- if(byteLengthOfCheck(byteCheckTmp) > 250 - byteLengthOfCheck(ID)){
- byteCheckTmp = ''
- }
- byteCheck = byteCheckTmp
- }
- if(!/\d+|【.*】$/.test(byteCheck)){
- byteCheck = ''
- }
- console.log('TitleLast: ' , byteCheck)
- }
- if(ModelName) {
- byteCheck = byteCheck + ModelName
- }
- return byteCheck
- }
-
- async function CollectionCoverImage(CoverImage){
- RootDomainDB = JSON.parse(await GM_getValue(RootDomain, '[]'))
- if(CoverImage){
- await UpdateDB(CoverImage, FilenameConvert(CopyTitle) + Resolution)
- await GM_setValue(RootDomain, JSON.stringify(RootDomainDB))
- }
- GetState = RootDomainDB
- document.querySelector('.State').textContent = ' ' + GetState.length
- return CoverImage
- }
-
- async function CollectionLinks(DownloadArea){
- RootDomainDB = JSON.parse(await GM_getValue(RootDomain, '[]'))
- var CollectionATag = []
- DownloadArea.forEach((LinkEntry) => {
- LinkEntry.querySelectorAll('a').forEach((aEntry) => {
- if(/\?site.+$/.test(aEntry.href)){
- aEntry.setAttribute('href', aEntry.href.replace(/\?site.+$/, ''))
- }
- CollectionATag.push(aEntry)
- })
- })
- //console.log('CollectionATag: ', CollectionATag )
- CollectionATag = CollectionATag.filter(el => SkipClassNames.some(Skip => !el.classList.contains(Skip))) // SkipClass
-
- CollectionATag = CollectionATag.filter(el => !SkipFilter.test(el.href)) // SkipFilter
-
- CollectionATag = CollectionATag.filter(el => ![...el.children].some(e => e.matches('img'))) // LinkItemsChilren
-
-
- if(/blogjav/.test(RootDomain)){
- CollectionATag = CollectionATag.filter(el => !el.textContent.match(/\.(mp4|mkv)$/i)) // Skip mp4 mkv
- }
- else if(/javarchive/.test(RootDomain)){
- let RemainCount = CollectionATag.filter(el => !el.textContent.match(/k2s\.cc|part\d\.rar/i)) // Skip k2s part
- //console.log('RemainCount:', RemainCount?.length)
- if(RemainCount?.length){
- CollectionATag = CollectionATag.filter(el => !el.textContent.match(/k2s\.cc|part\d\.rar/i)) // Skip k2s part
- }
- else{
- CollectionATag = CollectionATag.filter(el => !el.textContent.match(/k2s\.cc/i)) // Skip k2s
- }
- }
- //console.log('CollectionATag: ', CollectionATag )
- let SkipLink, SkipClass, LinkItemsChilren
- for (let i = 0; i < CollectionATag.length; i++) {
- Target = CollectionATag[i].href
- if(/naughtyblog.org/.test(RootDomain)){
- if(CollectionATag[i].textContent.match(/SD\.mp4/gi)){
- continue
- }
- else if(!CopyTitle.match(/SITERIP|OnlyFans|Updates|Collection/)){
- Resolution = CollectionATag[i].textContent.match(/[0-9]{3,4}p/) ? '.XXX.' + CollectionATag[i].textContent.match(/[0-9]{3,4}p/)[0] : ''
- }
- }
- if(/blogjav.net/.test(RootDomain)){
- if(Target.match(/\.mp4(\.html)?$/gi)){
- continue
- }
- }
- if(Target){
- if(CopyTitle){
- CopyTitle = FilenameConvert(CopyTitle)
- //CopyLinks += Target + "#Title=" + encodeURI(CopyTitle) + Resolution + "\n"
- UrlTitle = CopyTitle + Resolution
- //console.log('RootDomainDB: ', RootDomainDB)
- //await GM_setValue(Target, "#Title=" + encodeURI(CopyTitle) + Resolution)
- }
- CopyLinks += Target + "\n"
-
- await UpdateDB(Target, UrlTitle)
- }
- }
- await GM_setValue(RootDomain, JSON.stringify(RootDomainDB))
- GetState = RootDomainDB
- document.querySelector('.State').textContent = ' ' + GetState.length
- console.log(CopyLinks)
- if(CopyLinks?.length){
- return CopyLinks.split("\n").filter((item, i, allItems) => { return i === allItems.indexOf(item)}).join("\n")
- }
- else return null
- }
-
-
- async function UpdateDB(Target, UrlTitle){
- if(Target.match(K2SRegExp)){
- Target = Target.match(K2SRegExp)[1] + Target.match(K2SRegExp)[2].slice(0, 18)
- }
- searchDB = RootDomainDB.find( ({ U }) => U === Target )
- //console.log(RootDomainDB, searchDB)
- if(searchDB){
- searchDB.T = UrlTitle
- }
- else{
- RootDomainDB.push({U : Target , T : UrlTitle})
- }
- //console.log(RootDomainDB)
- return RootDomainDB
- }
-
-
- async function RemoveDB(listToDelete){
- RootDomainDB = RootDomainDB.filter( item => (!listToDelete.includes(item.U)) );
- await GM_setValue(RootDomain, JSON.stringify(RootDomainDB))
- GetState = RootDomainDB
- document.querySelector('.State').textContent = ' ' + GetState.length
- }
-
- async function CheckDB(listTo){
- if(GetState.length > 0){
- let Check = RootDomainDB.some( item => (listTo.includes(item.U)))
- //console.log('CheckDB: ', RootDomainDB, listTo, Check)
- if(Check){
- document.querySelector('.Minus').style.visibility = "visible"
- }
- else{
- document.querySelector('.Minus').style.visibility = "hidden"
- }
- }
- }
-
- async function CopyLink(){
- var CopyNoticeData = ''
- //console.log('CopyLinks: ', CopyLinks, TmpLinksDB, !CopyLinks?.length, !TmpLinksDB?.length)
- if(!CopyLinks?.length && !TmpLinksDB?.length){
- CopyNoticeData = FilenameConvert(CopyTitle) + "\n"
- AllCopyLinks = await CollectionLinks(DownloadArea)
- //console.log('AllCopyLinks: ', AllCopyLinks)
- if(AllCopyLinks){
- if(CoverImage){
- AllCopyLinks += await CollectionCoverImage(CoverImage)
- }
- JDownloader(AllCopyLinks, FilenameConvert(CopyTitle) + Resolution)
- //updateClipboard(AllCopyLinks)
- CopyNoticeData += AllCopyLinks
- document.querySelector('.CopyNotice').textContent = CopyNoticeData
- }
- else{
- document.querySelector('.CopyNotice').textContent = 'Empty Links'
- }
- }
- else if(TmpLinksDB?.length > 0){
- //console.log('TmpLinksDB: ', TmpLinksDB)
-
- for (let i = 0; i < TmpLinksDB.length; i++) {
- UpdateDB(TmpLinksDB[i].U, TmpLinksDB[i].T)
- CopyLinks += TmpLinksDB[i].U + '\n'
- //await GM_setValue(TmpLinksDB[i].Key, TmpLinksDB[i].Value)
- }
- await GM_setValue(RootDomain, JSON.stringify(RootDomainDB))
- GetState = RootDomainDB
- //console.log(GetState)
- document.querySelector('.State').textContent = ' ' + GetState.length
- //console.log(TmpLinksDB)
- JDownloaderDB(TmpLinksDB)
- //console.log(JdownloaderData)
-
- //updateClipboard(CopyLinks)
- CopyNoticeData = CopyLinks
- document.querySelector('.CopyNotice').textContent = CopyNoticeData
- }
- await CheckDB(listToDo(DownloadArea))
- CopyLinks = []
- AllCopyLinks = []
- }
-
-
- function listToDo(Area) {
- let List = [], CheckList = []
- let Target
- try {
- Area.forEach((LinkEntry) => {
- LinkEntry.querySelectorAll('a').forEach((aEntry) => {
- if(CheckList.indexOf(aEntry) === -1){
- CheckList.push(aEntry)
- }
- })
- })
- for (let i = 0; i < CheckList.length; i++) {
- let SkipLink = SkipFilter.test(CheckList[i].href)
- let LinkItemsChilren = [...CheckList[i].children].filter(e => e.matches('img'))
- if(SkipLink || LinkItemsChilren?.length){
- continue
- }
- Target = CheckList[i].href.replace(/\?site.+/, '')
- if(Target.match(K2SRegExp)){
- Target = Target.match(K2SRegExp)[1] + Target.match(K2SRegExp)[2].slice(0, 18)
- }
- if(List.indexOf(Target) === -1){
- List.push(Target)
- }
- }
- if(CoverImage){
- List.push(CoverImage)
- }
- return List
- } catch (err){
- console.log(err)
- return List
- }
-
- }
-
- async function MutilSubTitle(MatchWeb, MatchWebPoint, InfoAreaCast, DownloadArea) {
- let AreadyAdd = [], CastName, CastNameDB = [], CastFirstTitle, CastLastTitle
- for (let i = 0; i < InfoAreaCast.length; i++) {
- let MatchPoint = InfoAreaCast[i].search(/\s?-\s/)
- console.log('MatchPoint: ', MatchPoint)
- console.log(MatchWeb, InfoAreaCast[i].substr(0, MatchPoint).replace(/\s/g, ''))
- if(MatchPoint !== -1 && MatchWeb !== InfoAreaCast[i].substr(0, MatchPoint).replace(/\s/g, '')){
- CastName = MatchPoint !== -1 ? InfoAreaCast[i].substr(0, MatchPoint).replace(/\s?(,|&|aka.*)\s?/gi, '&').replace(/\s{2}/g, ' ').trim().replace(/\s/g, '.') : ''
- console.log('CastName: ' , CastName)
- if(CastName.match(/&/)){
- CastNameDB = CastName.split('&')
- CastName = CastNameDB[0] + '(.+)\?' + CastNameDB.pop()
- }
- }
- else{
- CastName = ''
- }
- console.log('CastName: ' , CastName)
- console.log(MatchPoint, InfoAreaCast[i].lastIndexOf(' - '))
- CastFirstTitle = MatchPoint !== -1 ? InfoAreaCast[i].slice(MatchPoint + 1, InfoAreaCast[i].length).replace(/\s-\s.*/, '').split(' ') : []
- CastFirstTitle = CastFirstTitle?.length > 0 ? CastFirstTitle.filter((entry) => isNaN(entry)) : []//숫자 및 단일글자 제거
- CastFirstTitle = CastFirstTitle?.length > 0 ? CastFirstTitle.filter((entry) => entry.length > 1) : []//숫자 및 단일글자 제거
- CastFirstTitle = CastFirstTitle?.length > 0 ? CastFirstTitle.shift().trim() : ''
- CastLastTitle = MatchPoint !== -1 ? InfoAreaCast[i].slice(MatchPoint + 1, InfoAreaCast[i].length).replace(/\s-\s.*/, '').split(' ') : []
- //CastLastTitle = MatchPoint !== -1 ? InfoAreaCast[i].slice(MatchPoint + 1, InfoAreaCast[i].lastIndexOf(' - ')).replace(/\s-\s.*/, '').split(' ') : []
- CastLastTitle = CastLastTitle?.length > 0 ? CastLastTitle.filter((entry) => isNaN(entry)) : []//숫자 및 단일글자 제거
- CastLastTitle = CastLastTitle?.length > 0 ? CastLastTitle.filter((entry) => entry.length > 1) : []//숫자 및 단일글자 제거
- CastLastTitle = CastLastTitle?.length > 0 ? CastLastTitle.pop().trim() : ''
- console.log('Cast First & Last Title: ', CastFirstTitle, CastLastTitle)
- DownloadArea = document.querySelectorAll('div#download')
- DownloadArea.forEach((LinkEntry) => {
- let Links
- if(CastName){
- Links = MatchRegex(LinkEntry, new RegExp(CastName + '.*' + CastFirstTitle + '.*' + CastLastTitle, 'i'), 'href')
- if(!Links?.length){
- Links = MatchRegex(LinkEntry, new RegExp(CastName, 'i'), 'href')
- if(!Links?.length){
- console.log('Links Empty...')
- return
- }
- }
- }
- else{
- Links = MatchRegex(LinkEntry, new RegExp(CastFirstTitle + '.*' + CastLastTitle, 'i'), 'href')
- if(!Links?.length){
- Links = MatchRegex(LinkEntry, new RegExp(CastFirstTitle, 'i'), 'href')
- if(!Links?.length){
- console.log('Links Empty...')
- return
- }
- }
- }
- Links = Links.filter( ( el ) => !AreadyAdd.includes( el )) //이미 추가된 링크 제외
- // 링크가 6개 이상일때 짝수인덱스 값만 가져오기
- if(Links?.length >= 6){
- var filtered = Links.filter(function(element, index, array) {
- return (index % 2 === 0);
- });
- Links = filtered
- }
- console.log('Links: ', Links)
-
- for (let j = 0; j < Links.length; j++) {
- let LinkText = Links[j].innerText.search(MatchWebRegExp) ? Links[j].innerText.substr(Links[j].innerText.search(MatchWebRegExp)) : Links[j].innerText
- console.log('LinkText: ', LinkText)
-
- let Released = LinkText.match(/(.+)(\.\d+\.\d+.\d+\.)(.+)/) ? LinkText.match(/(\.\d+\.\d+.\d+\.)/).pop()
- : MatchWebPoint !== -1 && LinkText.match(new RegExp(MatchWeb + '\\.\\d{4}\\.')) ? LinkText.match(new RegExp(MatchWeb + '\(\\.\\d{4}\\.\)')).pop()
- : ''
- console.log('Released: ', Released)
- let Episode = LinkText.match(/E\d{2,5}/i) ? '.' + LinkText.match(/E\d{2,5}/i) + '.' : ''
- Resolution = LinkText.match(/[0-9]{3,4}p/) ? '.XXX.' + LinkText.match(/[0-9]{3,4}p/)[0] : ''
- let CastTitle = InfoAreaCast[i].substr(MatchPoint + 3) && Episode ? '- ' + InfoAreaCast[i].substr(MatchPoint + 3).replace(/-\sE\d{2,5}/i, '').trim()
- : InfoAreaCast[i].substr(MatchPoint + 3) && !Episode ? '- ' + InfoAreaCast[i].substr(MatchPoint + 3)
- : ''
- console.log('CastTitle: ', CastTitle)
- let CastRegExp = LinkText.match(CastFirstTitle) && LinkText.match(CastLastTitle) ? new RegExp(MatchWeb + Episode + Released + CastName + '.*(' + CastFirstTitle + ')?(.*' + CastLastTitle + ')?', 'i') : ''
- console.log('CastRegExp: ', CastRegExp)
- let Cast = LinkText.match(CastRegExp)
- console.log('Cast: ', Cast)
- Title = CastRegExp && Cast && Cast.length > 1 && Episode ? MatchWeb + Episode + Released + Cast.pop().replace(/\./g, ' ') + CastTitle
- : Episode || Released ? MatchWeb + Episode + Released + InfoAreaCast[i]
- : MatchWeb + ' ' + Released + InfoAreaCast[i]
- Title = Title.replace(/(S\d+):(E\d+)/i, '$1$2')
- Title = FilenameConvert(Title)
- //CopyLinks += Links[j].href + "\n"
- let U = Links[j].href
- let T = Title + Resolution
- console.log(Title, Links[j])
- TmpLinksDB.push({U, T})
- AreadyAdd.push(Links[j])
- }
- if(CoverImage){
- let U = CoverImage
- let T = FilenameConvert(CopyTitle) + Resolution
- TmpLinksDB.push({U, T})
- }
- })
- }
- }
-
- async function ClearUrls(){
- document.querySelector('.ClearButton').style = "color: White !important;";
- //document.querySelector('.ClearButton').style.setProperty('font-size', Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem', 'important');
- await GM_deleteValue(RootDomain)
- RootDomainDB = JSON.parse(await GM_getValue(RootDomain, '[]'))
- GetState = RootDomainDB
- //console.log(GetState)
- if(document.querySelector('.Minus')){
- document.querySelector('.Minus').style.visibility = "hidden"
- }
- document.querySelector('.State').textContent = ' ' + 0
- }
-
- async function ClipPaste(){
- document.querySelector('.CopyButton').style = "color: White !important;";
- //document.querySelector('.CopyButton').style.setProperty('font-size', Number(((1/(GetDPI/1.5))*(16/DefaultFontSize)).toFixed(2)) + 'rem', 'important');
- var ClipPasteData = JSON.parse(await GM_getValue(RootDomain, '[]'))
- JDownloaderDB(ClipPasteData)
- //updateClipboard(ClipPasteData)
- }
-
-
- function MakeIcon(GetDPI) {
- clearTimeout(MakeIconTimer)
- if(CopyOffSetArea){
- let ModArea = CopyOffSetArea
- let OffSetArea
- let IconSet = document.querySelector(".IconSet")
- //console.log(ModArea, ModArea.nodeType)
- if(/kbjme\.com/.test(RootDomain)){
- OffSetArea = ModArea.closest('.article_container')
- OffSetArea.style.setProperty('position', 'relative')
- }
- else if(/javarchive\.com/.test(RootDomain)){
- OffSetArea = ModArea.closest('.category_news_phai_chinh').querySelector('.menudd')
- OffSetArea.style.setProperty('position', 'relative')
- }
- else if(/pornchil\.com/.test(RootDomain)){
- OffSetArea = ModArea.closest('.entry-content')
- OffSetArea.style.setProperty('position', 'relative')
- }
- else if(/top-modelz\.org/.test(RootDomain)){
- OffSetArea = ModArea
- OffSetArea.parentElement.style.setProperty('position', 'relative')
- }
- else if(/pornrips\.cc/.test(RootDomain)){
- OffSetArea = ModArea
- OffSetArea.parentElement.style.setProperty('position', 'relative')
- }
- else{
- OffSetArea = ModArea
- OffSetArea.parentElement.style.setProperty('position', 'relative')
- }
- var GetViewProperty = window.document.defaultView.getComputedStyle(ModArea, null)
- var GetPadding = GetViewProperty.getPropertyValue('padding') || 0
- var verticalalign = GetViewProperty.getPropertyValue('vertical-align') || 'middle'
- var lineheight = GetViewProperty.getPropertyValue('line-height') || '1rem'
- var Top = GetViewProperty.getPropertyValue('top') || 'auto'
- var DisPlay = GetViewProperty.getPropertyValue('display') || 'auto'
- let IconHeight = parseFloat(window.getComputedStyle(IconSet).fontSize)
- let FontHeight = parseFloat(window.getComputedStyle(OffSetArea).fontSize)
- let OffSetAreaElementOffset = getRelativeOffset(OffSetArea)
- let OffSetAreatNodeTextElementOffset = getNodeTextElementOffset(OffSetArea)
- let IconSetElementOffset = getRelativeOffset(IconSet)
- //console.log(OffSetArea.offsetParent, GetPadding)
- if(/javfree|blogjav|javpink|wetholefans/.test(PageURL)){
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top - IconSetElementOffset.height ,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width/2
- })
- }
- else if(/naughtyblog|pornrip\.cc/.test(PageURL)) {
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width,
- "padding": GetPadding,
- })
- }
- else if(/pornrips\.cc/.test(PageURL)) {
- let MetaView = getRelativeOffset(OffSetArea.parentElement.querySelector('.meta > .meta_views'))
- $('.IconSet').css({
- "top": MetaView.top - IconSetElementOffset.height,
- "left": MetaView.left + IconSetElementOffset.width,
- })
- console.log(getRelativeOffset(MetaView))
- }
- else if(/javarchive/.test(PageURL)) {
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top + OffSetAreaElementOffset.height - IconSetElementOffset.height/2,
- "left": OffSetAreaElementOffset.left + OffSetAreaElementOffset.width - IconSetElementOffset.width
- })
- }
- else if(/kbjme\.com/.test(PageURL)) {
- $('.IconSet').css({
- "top": getElementOffset(IconSet).height*3/2,
- "left": OffSetAreaElementOffset.right - OffSetAreaElementOffset.width + IconSetElementOffset.width
- })
- //})
- }
- else if(/maxjav\.com/.test(PageURL)) {
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top + IconSetElementOffset.height/2,
- "left": OffSetAreaElementOffset.left + OffSetAreaElementOffset.width - IconSetElementOffset.width
- })
- }
- else if(/0xxx\.ws\/articles\/\d+/.test(PageURL)) {
- //console.log((getElementOffset(OffSetArea).top - getNodeTextElementOffset(OffSetArea).top)/2)
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top,
- "right": IconHeight,
- "padding": GetPadding,
- })
- }
- else if(/top-modelz\.org/.test(PageURL)) {
- //console.log((getElementOffset(OffSetArea).top - getNodeTextElementOffset(OffSetArea).top)/2)
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top,
- "right": IconHeight
- })
- }
- else if(/hpjav\.tv/.test(PageURL)) {
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top - Math.abs(FontHeight - IconHeight)/2,
- "left": OffSetAreaElementOffset.width + IconHeight
- })
- }
-
- else if(/8kcosplay\.com|fhdporn/.test(PageURL)){
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top - IconHeight,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width
- })
- }
- else if(/av18plus\.com/.test(PageURL)){
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top - IconHeight,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width
- })
- }
- else if(/pornchil\.com|asianscan/.test(PageURL)){
- $('.IconSet').css({
- "top": 0,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width
- })
- }
- else {
- $('.IconSet').css({
- "top": OffSetAreaElementOffset.top,
- "left": OffSetAreaElementOffset.width - IconSetElementOffset.width,
- })
- }
- IconSet.style.visibility = "visible"
- document.querySelector('.CopyIcon').style.visibility = "visible"
- document.querySelector(".CloseIcon").style.visibility = "visible"
- if(DownloadArea){
- CheckDB(listToDo(DownloadArea))
- }
- //console.log(getElementOffset(OffSetArea), getNodeTextElementOffset(OffSetArea), getElementOffset(IconSet), getRelativeOffset(OffSetArea), getRelativeOffset(IconSet), FontHeight, IconHeight )
- }
- }
-
-
- function JDownloader(JdownloaderData, PackageName){
- //console.log(PackageName + '\n' + JdownloaderData)
- if(JdownloaderData){
- let data = new URLSearchParams();
- data.append(`urls`, JdownloaderData);
- data.append(`referer`, PageURL)
- if(PackageName){
- data.append(`package`, PackageName)
- }
- fetch('http://127.0.0.1:9666/flash/add', {
- method: 'POST',
- //mode: 'cors',
- headers: {
- 'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
- },
- body: data
- })
- }
- }
-
- function JDownloaderDB(LinksDB){
- //console.log(LinksDB)
- let uniqueTitle = [...new Set(LinksDB.map( x => x.T ))]
- //console.log(uniqueTitle)
- uniqueTitle.forEach(x => JDownloader(GetMatchLinks(x, LinksDB), x))
- }
-
- function GetMatchLinks(text, LinksDB){
- try {
- return LinksDB.filter(u => text.includes(u.T)).map(l => l.U).join('\n')
- } catch(err) {
- console.log(err, text, LinksDB)
- }
- }
-
- function scrollToTop() {
- window.scrollTo({ top: 0, behavior: 'auto' })
- window.removeEventListener('scroll', scrollToTop)
- }
-
-
- function attrPromise(element, attributeName, attributeValue) {
- return new Promise((resolve,reject) => {
- const observerConfig = {attributes: true, childList: true, subtree: true,};
- const observer = new MutationObserver((mutations) => {
- mutations.forEach((mutation) => {
- if (mutation.attributeName == attributeName && mutation.getAttribute(attributeName) == attributeValue ) {
- observer.disconnect();
- resolve(element);
- }
- });
- });
-
- observer.observe(element, observerConfig);
- });
- }