This commit is contained in:
2025-08-01 18:36:16 +09:00
parent 2a25b49baa
commit 1272c91430
15 changed files with 1051 additions and 676 deletions
@@ -0,0 +1,13 @@
version: '3'
services:
couchdb:
image: couchdb:latest
container_name: couchdb
restart: always
ports:
- "5984:5984" # 외부접근: 5984포트
environment:
- COUCHDB_USER=obsidian
- COUCHDB_PASSWORD=HiVi88131921
volumes:
- ./data:/opt/couchdb/data
@@ -74,13 +74,7 @@ port.onMessage.addListener(response => {
}
break;
case "saveContent":{
sendMessage(
{
type: "SHOWVIEWER",
contents : document.documentElement.outerHTML
}
);
scrollToLazyImg()
}
default:
port.postMessage(`Received: ${JSON.stringify(response)}`);
@@ -121,11 +115,6 @@ if(document.querySelector("#html_encoder_div")) {
}
);
}
// else {
// sendMessage({type:"MSG",msg:"connected has Nothings"});
// loadComplete()
// }
function getList(children) {
// port.postMessage("Start of getList!" + children);
@@ -213,7 +202,7 @@ function scrollByPercent(current , max) {
const moveAmount = pageHeight / max;
window.scrollTo({ top: moveAmount * current, behavior: "smooth" });
}
document.querySelector(".header__inner")
function scrollByPercentUpDown(isToDown , max) {
const pageHeight = Math.max(
document.body.scrollHeight,
@@ -227,364 +216,68 @@ function scrollByPercentUpDown(isToDown , max) {
const moveAmount = Math.max(pageHeight / max,150);
window.scrollTo({ top: currentScroll + (moveAmount * isToDown) , behavior: "smooth" });
}
function loadComplete() {
// try {port.postMessage(JSON.stringify({type: "NotRegistered"}));}catch (e) {}
}
function sendMessage(msg) {
port.postMessage(JSON.stringify(msg));
}
function toast(msg) {
port.postMessage(JSON.stringify({type:"MSG",msg:msg}));
}
var time1 = null
var mainContentsEl = null
if (port) {
sendMessage({type: "MSG", msg:"connect prot"});
sendMessage({type: "MSG", msg: "connect prot"});
time1 = setTimeout(autoScrollAndSave(false), 2000)
}
function scrollToLazyImg() {
(function(autoScrollAndSave){
// 한 번에 이동할 픽셀
const step = 200;
// 반복 간격(ms) (느릴수록 로딩에 더 여유 생김)
const delay = 600;
// 스크롤 현재 위치 추적
let currentY = window.scrollY;
let maxY = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight
);
time1 = setTimeout(
function(){
if (location.hostname.search("clien") > -1 && document.querySelectorAll('[class^="view_top"]')) {
document.querySelectorAll('[class^="view_top"]').forEach(e => e.remove())
}
if (location.hostname.search("toki") > -1 && document.querySelectorAll('[id^="id_mbv"]')) {
document.querySelectorAll('[id^="id_mbv"]').forEach(e => e.remove())
}
if (location.hostname.search("toki") > -1 && document.querySelectorAll('[class^="basic-banner"]')) {
document.querySelectorAll('[class^="basic-banner"]').forEach(e => e.remove())
}
if (document.querySelector(".top_google_ad_space")) {
document.querySelector(".top_google_ad_space").remove()
}
if (document.querySelectorAll(".adv-group")) {
document.querySelectorAll(".adv-group").forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[id^="div-gpt-ad"]')) {
document.querySelectorAll('[id^="div-gpt-ad"]').forEach(e =>
e.remove()
)
}
if (document.location.href.search("reddit") > -1) {
if (document.querySelector('#xpromo-bottom-sheet')) {
document.querySelector('#xpromo-bottom-sheet').remove()
}
}
if (document.querySelectorAll('[id^="div_adnmore_area"]')) {
document.querySelectorAll('[id^="div_adnmore_area"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[id^="div_adnmore_area"]')) {
document.querySelectorAll('[id^="div_adnmore_area"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[class^="adv-groupno"]')) {
document.querySelectorAll('[class^="adv-groupno"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[class^="code-block"]')) {
document.querySelectorAll('[class^="code-block"]').forEach(e => e.remove())
}
if (document.querySelectorAll('.ad-template')) {
document.querySelectorAll('.ad-template').forEach(function (e) {
e.remove()
})
}
if (document.querySelectorAll('[class^="popupBanner_w popupOpen"]')) {
document.querySelectorAll('[class^="popupBanner_w popupOpen"]').forEach(function (e) {
e.remove()
})
}
if (document.querySelectorAll('iframe')) {
document.querySelectorAll('iframe').forEach(function (e) {
if (e.getAttribute("src") != null && (e.getAttribute("src").search("ads") > -1 || e.getAttribute("src").search("coupang") > -1)) {
e.remove()
function scrollStep() {
// 페이지 최대값(일정 margin 여유)
maxY = Math.max(
document.body.scrollHeight,
document.documentElement.scrollHeight
);
if (currentY + step < maxY - window.innerHeight) {
currentY += step;
window.scrollTo({ top: currentY, behavior: 'smooth' });
setTimeout(scrollStep, delay);
} else {
// 끝까지 도달하면 마지막으로 최하단 이동
window.scrollTo({ top: maxY, behavior: 'smooth' });
setTimeout(function() {
// == 여기에 저장 등 후처리 콜백 코드 호출 ==
if (typeof autoScrollAndSave === 'function') {
autoScrollAndSave(true);
} else {
// 직접 메시지 보내거나, 원하는 최종 동작 실행
// 예: window.postMessage('saveToObsidian', '*');
}
})
}, 800);
}
if (location.href.search("x.com") > -1) {
var mainClass = document.querySelector('section').className
document.querySelector('section').querySelectorAll('div[class="'+ mainClass +'"]').forEach(function (e) {
if (e.hasAttribute("data-testid") && e.querySelector('video')) {
e.querySelectorAll('[poster]').forEach(function (e) {
})
console.log(e.innerHTML)
}
})
}
if (document.querySelectorAll('[data-banner^="coupang-"]')) {
document.querySelectorAll('[data-banner^="coupang-"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[id^="mobonDivBanner"]')) {
document.querySelectorAll('[id^="mobonDivBanner"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[id^="pnlTopAd"]')) {
document.querySelectorAll('[id^="pnlTopAd"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[class^="ad-tag"]')) {
document.querySelectorAll('[class^="ad-tag"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[class^="science-banner-area"]')) {
document.querySelectorAll('[class^="science-banner-area"]').forEach(e=> e.remove())
}
if (location.href.search("torrentzota") > -1 && document.querySelectorAll('a')) {
document.querySelectorAll('a').forEach(function (e) {
if (e.getAttribute('href') != null && e.getAttribute('href').startsWith("/adver-")) {
e.remove()
}
}
)
if(document.querySelectorAll('[class^="py-4 flex flex-row border-b topic-item"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="py-4 flex flex-row border-b topic-item"]').forEach(function (e) {
var title = ""
var link = ""
e.querySelectorAll("a").forEach(function (e){
if(e.getAttribute("class") === "item-link"){
title = e.getAttribute('title')
}
if(e.getAttribute("class") === "item-link"){
link = e.getAttribute('href')
if (link.length > 0) {
link = location.protocol + '//' + location.hostname + link
}
}
})
var description = e.querySelector('.flex-none w-16 text-center').textContent + e.querySelector('.badge badge-third w-auto px-1 flex-none mr-2 float-left').textContent
var md = e.querySelector(".flex-none w-14 text-center hidden md:block").textContent
let todayYear = new Date().getFullYear();
let now = new Date();
let hh = String(now.getHours()).padStart(2, '0'); // 시 (2자리)
let mm = String(now.getMinutes()).padStart(2, '0'); // 분 (2자리)
let ss = String(now.getSeconds()).padStart(2, '0'); // 초 (2자리)
let time = `${hh}:${mm}:${ss}`;
let combinedStr = todayYear + "-" + md + " " + time;
let dateObj = new Date(combinedStr);
datas.push({
"title" : title,
"description" : description,
"originPage" : link,
"pubDate" : dateObj.getTime(),
"category" : "TORRENT"
});
})
if(datas.length > 0) {
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage : location.href
}
);
}
}
if (document.querySelectorAll('[class^="w-full flex"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="w-full flex"]').forEach(function (e) {
var thumbnail = ""
e.querySelectorAll("img").forEach(function (e){
if(e.getAttribute("class") === "border"){
thumbnail = e.getAttribute('src')
}
})
var title = ""
var link = ""
e.querySelectorAll("a").forEach(function (e){
if(e.getAttribute("class") === "item-link"){
title = e.getAttribute('title')
}
if(e.getAttribute("class") === "item-link"){
link = e.getAttribute('href')
if (link.length > 0) {
link = location.protocol + '//' + location.hostname + link
}
}
})
var description = ""
var time = ""
var md = ""
if(e.querySelector('[class^="pb-2 w-100 text-gray-500"]')){
description = e.querySelector('[class^="pb-2 w-100 text-gray-500"]').textContent.replace(/\s+/g, ' ').trim();
md = description.split(" ")[1].trim();
time = description.split(" ")[2].trim();
description = description.split(" ")[0].trim();
}
console.log(link)
console.log(thumbnail)
console.log(title)
console.log(description)
console.log(md)
console.log(time)
let todayYear = new Date().getFullYear();
let combinedStr = todayYear + "-" + md + " " + time;
let dateObj = new Date(combinedStr);
datas.push({
"title" : title,
"description" : description,
"originPage" : link,
"thumbnail" : thumbnail,
"pubDate" : dateObj.getTime(),
"category" : "TORRENT"
});
})
if(datas.length > 0) {
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage : location.href
}
);
}
}
}
if (document.querySelectorAll('[class^="col-md-4 mb-4 video-item"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="col-md-4 mb-4 video-item"]').forEach(function (e) {
var date = 0
try {
const dateString = e.querySelector('[class^="mb-2"]').querySelector("a").textContent.trim();
const [day, month, year] = dateString.split("/").map(Number);
date = new Date(year, month - 1, day).getTime();
}catch (e) {
}
var actor = ""
try {
actor = e.querySelector('[class^="mb-1"]').getAttribute("alt").trim()
}catch (e) {
}
var desc = ""
try {
e.querySelectorAll('[class^="badge badge-"]').forEach(function (e) {
try {
if (Number(e.textContent) > 0) {
}else {
if (desc.length > 0) {
desc += ","
}
desc += e.textContent.trim()
}
}catch (e) {}
}
)
}catch (e) {
}
var thumb = ""
try {
thumb = e.querySelector("td").querySelector("a").getAttribute('data-link')
try {
var sets = e.querySelector("td").querySelector("img").getAttribute('srcset')
if(sets.search(",") > -1) {
var srcSet = sets.split(",")
var newT = srcSet[srcSet.length - 1]
if (newT != null && newT.length > 5) {
thumb = newT
}
}
} catch (e) {}
}catch (e) {}
var magnet = ""
try {
e.querySelectorAll("td").forEach(function (e) {
e.querySelectorAll("a").forEach(function (e) {
if(e.getAttribute("href").startsWith("magnet")) {
magnet = e.getAttribute("href").replaceAll("&amp;", "&");
}
})
})
}catch (e) {
}
var title = "";
try {
e.querySelector(".name").querySelector("a").querySelectorAll("span").forEach(function (e) {
if (e.hasAttribute("class") == false) {
title = e.textContent.trim();
}
})
}catch (e) {
}
var originPage = ""
try {
originPage = location.protocol + "//" + location.hostname + e.querySelector(".name").querySelector("a").getAttribute("href");
}catch (e) {
}
var screenshots = ""
try {
e.querySelectorAll("a").forEach(function (e) {
if(e.getAttribute("href").search("screenshots") > -1) {
screenshots = e.getAttribute("href");
}
})
}catch (e) {
}
if (thumb.length > 0 || screenshots.length > 0) {}
datas.push({
"title" : title,
"description" : desc,
"originPage" : originPage,
"magnet_link" : magnet,
"thumbnail" : thumb,
"pubDate" : date,
"screenshotsUrl" : screenshots,
"chosung" : "",
"category" : "PRIVATE"
});
})
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage : location.href
}
);
gotoNext()
}
},1500)
}
// 시작(로드 이벤트 이후 실행 권장)
scrollStep();
})(autoScrollAndSave);
}
var targetUrl = ""
var time2 = null
var time1 = null
function gotoNext() {
clearTimeout(time1)
try{
@@ -614,4 +307,484 @@ function gotoNext() {
} catch (e) {
}
}
function isNewerThanOneDay(dateStr) {
if (!dateStr) return false;
const date = new Date(dateStr);
if (isNaN(date)) return false;
const now = new Date();
const oneDayMs = 24 * 60 * 60 * 1000;
return (now - date) < oneDayMs;
}
function autoScrollAndSave(senContents) {
if (location.hostname.search("theqoo.net") > -1 && document.querySelectorAll('[class^="m-list m-element"]')) {
document.querySelectorAll('[class^="m-list m-element"]').forEach(e => e.remove())
document.querySelectorAll('[class^="button_area"]').forEach(e => e.remove())
document.querySelectorAll('[class^="board_content_google_ad"]').forEach(e => e.remove())
document.querySelectorAll('[class^="clearfix list-header"]').forEach(e => e.remove())
document.querySelectorAll('[class^="clearfix list-footer"]').forEach(e => e.remove())
document.querySelectorAll('[class^="main-footer"]').forEach(e => e.remove())
document.querySelectorAll('ins[class^="adsbygoogle"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[id="grid-content"]')
}
if (location.hostname.search("dcinside.com") > -1 && document.querySelectorAll('[class^="container"]')) {
document.querySelectorAll('[id^="view_btn_area"]').forEach(e => e.remove())
document.querySelectorAll('[class^="trend-rank"]').forEach(e => e.remove())
document.querySelectorAll('[class^="view-btm-con"]').forEach(e => e.remove())
document.querySelectorAll('[class^="md-tit-box"]').forEach(e => e.remove())
document.querySelectorAll('[class^="gall-detail-lst"]').forEach(e => e.remove())
document.querySelectorAll('[class^="outside-search-box"]').forEach(e => e.remove())
document.querySelectorAll('[class^="footer ftlong"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[class="container"]')
}
if (location.hostname.search("fmkorea.com") > -1 && document.querySelectorAll('[class^="bd bd_mobile"]')) {
document.querySelectorAll('[class^="fmad_wrapper fmad_naver_power_link"]').forEach(e => e.remove())
document.querySelectorAll('[class^="ad ad_wrapper"]').forEach(e => e.remove())
document.querySelectorAll('[class^="bd_lst_wrp"]').forEach(e => e.remove())
document.querySelectorAll('[class^="m_top_hotdeal"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[class="bd bd_mobile"]')
}
if (location.hostname.search("acrofan.com") > -1 && document.querySelectorAll('[id^="wide"]')) {
document.querySelectorAll('[class^="header"]').forEach(e => e.remove())
document.querySelectorAll('[class^="footer"]').forEach(e => e.remove())
document.querySelectorAll('[id^="tabmenu"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[class="wide"]')
}
if (location.hostname.search("yna.co.kr") > -1 && document.querySelectorAll('[class^="wrapper"]')) {
document.querySelectorAll('[class^="aside-box426 sticky"]').forEach(e => e.remove())
document.querySelectorAll('aside[class^="aside-box"]').forEach(e => e.remove())
document.querySelectorAll('[class^="section02"]').forEach(e => e.remove())
document.querySelectorAll('[class^="content03 wide"]').forEach(e => e.remove())
document.querySelectorAll('[id="footer"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[id="container"]')
}
if (location.hostname.search("clien") > -1 && document.querySelectorAll('[class^="content_view"]')) {
document.querySelectorAll('[class^="view_top"]').forEach(e => e.remove())
document.querySelectorAll('[id^="naverAd"]').forEach(e => e.remove())
document.querySelectorAll('[class^="content_view_list"]').forEach(e => e.remove())
document.querySelectorAll('[class^="footer_wrap"]').forEach(e => e.remove())
mainContentsEl = document.querySelector('div[id="content_view"]')
}
if (location.hostname.search("toki") > -1 && document.querySelectorAll('[id^="id_mbv"]')) {
document.querySelectorAll('[id^="id_mbv"]').forEach(e => e.remove())
}
if (location.hostname.search("toki") > -1 && document.querySelectorAll('[class^="basic-banner"]')) {
document.querySelectorAll('[class^="basic-banner"]').forEach(e => e.remove())
}
if (document.querySelector(".top_google_ad_space")) {
document.querySelector(".top_google_ad_space").remove()
}
if (document.querySelectorAll(".adv-group")) {
document.querySelectorAll(".adv-group").forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[id^="div-gpt-ad"]')) {
document.querySelectorAll('[id^="div-gpt-ad"]').forEach(e =>
e.remove()
)
}
if (document.location.href.search("reddit") > -1) {
if (document.querySelector('#xpromo-bottom-sheet')) {
document.querySelector('#xpromo-bottom-sheet').remove()
}
}
if (document.querySelectorAll('[id^="div_adnmore_area"]')) {
document.querySelectorAll('[id^="div_adnmore_area"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[id^="div_adnmore_area"]')) {
document.querySelectorAll('[id^="div_adnmore_area"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[class^="adv-groupno"]')) {
document.querySelectorAll('[class^="adv-groupno"]').forEach(e =>
e.remove()
)
}
if (document.querySelectorAll('[class^="code-block"]')) {
document.querySelectorAll('[class^="code-block"]').forEach(e => e.remove())
}
if (document.querySelectorAll('.ad-template')) {
document.querySelectorAll('.ad-template').forEach(function (e) {
e.remove()
})
}
if (location.href.search("arca.live") > -1 && document.querySelectorAll('[class^="vrow hybrid"]')) {
const tempArray = [];
document.querySelectorAll('[class^="vrow hybrid"]').forEach(function (aracaLi) {
if (aracaLi.innerHTML.search("title ") > -1) {
// title.hybrid-title 클래스가 붙은 첫 번째 요소 텍스트 추출
let titleEl = aracaLi.querySelector('.title.hybrid-title');
let title = titleEl ? titleEl.textContent.trim() : '';
// badge 클래스 텍스트와 user-info 클래스 텍스트 합치기
let descBadge = aracaLi.querySelector('.badge');
let descUserInfo = aracaLi.querySelector('.user-info');
let desc = (descBadge ? descBadge.textContent.trim() : '')
if (desc.length > 0) {
desc = desc + ","
}
desc = desc + (descUserInfo ? descUserInfo.textContent.trim() : '');
if (descUserInfo) {
desc = desc + ","
}
// time 태그 datetime 속성 값
let timeEl = aracaLi.querySelector('time');
let dateTime = timeEl ? timeEl.getAttribute('datetime') : '';
// console.log("dateTime >>> "+ dateTime)
// const dateObj = new Date(dateTime);
// console.log(dateObj.getFullYear()); // 2025
// console.log(dateObj.getMonth() + 1); // 7 (월은 0부터 시작하므로 +1)
// console.log(dateObj.getDate()); // 30
// console.log(dateObj.getHours()); // 13 (현지 시간 기준)
// console.log(dateObj.getMinutes()); // 45
// console.log(dateObj.getSeconds());
// console.log(dateObj);
// img 태그 src 값
let imgEl = aracaLi.querySelector('img');
let thumbnail = imgEl ? imgEl.getAttribute('src') : '';
// 링크 만들기
let link = 'https://arca.live';
if (titleEl && titleEl.getAttribute('href')) {
link += titleEl.getAttribute('href');
} else {
let aEl = aracaLi.querySelector('a');
if (aEl && aEl.getAttribute('href')) {
link += aEl.getAttribute('href');
}
}
if (title.length > 0 && link.length > 20) {
// thumbnail 절대경로 처리 (프로토콜이 없는 경우 https: 붙이기)
if (thumbnail.startsWith('//')) {
thumbnail = 'https:' + thumbnail;
}
// 날짜가 하루 이내인지 확인하는 함수 사용
tempArray.push({
title: title.replace(/\s+/g, ' ').trim(),
description: desc.replace(/\s+/g, ' ').trim() + "ARCA",
pubDate: new Date(dateTime).getTime(),
originPage: link,
"category": "ARCA",
thumbnail: thumbnail
});
}
}
})
if (tempArray.length > 0) {
console.log(tempArray);
sendMessage(
{
type: "PRIVATES",
privates: tempArray,
currentPage: location.href
}
);
location.href = "about:blank;"
}
}
if (document.querySelectorAll('[class^="popupBanner_w popupOpen"]')) {
document.querySelectorAll('[class^="popupBanner_w popupOpen"]').forEach(function (e) {
e.remove()
})
}
if (document.querySelectorAll('iframe')) {
document.querySelectorAll('iframe').forEach(function (e) {
if (e.getAttribute("src") != null && (e.getAttribute("src").search("ads") > -1 || e.getAttribute("src").search("coupang") > -1)) {
e.remove()
}
})
}
if (location.href.search("x.com") > -1) {
var mainClass = document.querySelector('section').className
document.querySelector('section').querySelectorAll('div[class="' + mainClass + '"]').forEach(function (e) {
if (e.hasAttribute("data-testid") && e.querySelector('video')) {
e.querySelectorAll('[poster]').forEach(function (e) {
})
console.log(e.innerHTML)
}
})
}
if (document.querySelectorAll('[data-banner^="coupang-"]')) {
document.querySelectorAll('[data-banner^="coupang-"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[id^="mobonDivBanner"]')) {
document.querySelectorAll('[id^="mobonDivBanner"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[id^="pnlTopAd"]')) {
document.querySelectorAll('[id^="pnlTopAd"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[class^="ad-tag"]')) {
document.querySelectorAll('[class^="ad-tag"]').forEach(e => e.remove())
}
if (document.querySelectorAll('[class^="science-banner-area"]')) {
document.querySelectorAll('[class^="science-banner-area"]').forEach(e => e.remove())
}
if (location.href.search("torrentzota") > -1 && document.querySelectorAll('a')) {
document.querySelectorAll('a').forEach(function (e) {
if (e.getAttribute('href') != null && e.getAttribute('href').startsWith("/adver-")) {
e.remove()
}
}
)
if (document.querySelectorAll('[class^="py-4 flex flex-row border-b topic-item"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="py-4 flex flex-row border-b topic-item"]').forEach(function (e) {
var title = ""
var link = ""
e.querySelectorAll("a").forEach(function (e) {
if (e.getAttribute("class") === "item-link") {
title = e.getAttribute('title')
}
if (e.getAttribute("class") === "item-link") {
link = e.getAttribute('href')
if (link.length > 0) {
link = location.protocol + '//' + location.hostname + link
}
}
})
var description = e.querySelector('.flex-none w-16 text-center').textContent + e.querySelector('.badge badge-third w-auto px-1 flex-none mr-2 float-left').textContent
var md = e.querySelector(".flex-none w-14 text-center hidden md:block").textContent
let todayYear = new Date().getFullYear();
let now = new Date();
let hh = String(now.getHours()).padStart(2, '0'); // 시 (2자리)
let mm = String(now.getMinutes()).padStart(2, '0'); // 분 (2자리)
let ss = String(now.getSeconds()).padStart(2, '0'); // 초 (2자리)
let time = `${hh}:${mm}:${ss}`;
let combinedStr = todayYear + "-" + md + " " + time;
let dateObj = new Date(combinedStr);
datas.push({
"title": title,
"description": description,
"originPage": link,
"pubDate": dateObj.getTime(),
"category": "TORRENT"
});
})
if (datas.length > 0) {
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage: location.href
}
);
}
}
if (document.querySelectorAll('[class^="w-full flex"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="w-full flex"]').forEach(function (e) {
var thumbnail = ""
e.querySelectorAll("img").forEach(function (e) {
if (e.getAttribute("class") === "border") {
thumbnail = e.getAttribute('src')
}
})
var title = ""
var link = ""
e.querySelectorAll("a").forEach(function (e) {
if (e.getAttribute("class") === "item-link") {
title = e.getAttribute('title')
}
if (e.getAttribute("class") === "item-link") {
link = e.getAttribute('href')
if (link.length > 0) {
link = location.protocol + '//' + location.hostname + link
}
}
})
var description = ""
var time = ""
var md = ""
if (e.querySelector('[class^="pb-2 w-100 text-gray-500"]')) {
description = e.querySelector('[class^="pb-2 w-100 text-gray-500"]').textContent.replace(/\s+/g, ' ').trim();
md = description.split(" ")[1].trim();
time = description.split(" ")[2].trim();
description = description.split(" ")[0].trim();
}
console.log(link)
console.log(thumbnail)
console.log(title)
console.log(description)
console.log(md)
console.log(time)
let todayYear = new Date().getFullYear();
let combinedStr = todayYear + "-" + md + " " + time;
let dateObj = new Date(combinedStr);
datas.push({
"title": title,
"description": description,
"originPage": link,
"thumbnail": thumbnail,
"pubDate": dateObj.getTime(),
"category": "TORRENT"
});
})
if (datas.length > 0) {
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage: location.href
}
);
}
}
}
if (document.querySelectorAll('[class^="col-md-4 mb-4 video-item"]').length > 1) {
var datas = []
document.querySelectorAll('[class^="col-md-4 mb-4 video-item"]').forEach(function (e) {
var date = 0
try {
const dateString = e.querySelector('[class^="mb-2"]').querySelector("a").textContent.trim();
const [day, month, year] = dateString.split("/").map(Number);
date = new Date(year, month - 1, day).getTime();
} catch (e) {
}
var actor = ""
try {
actor = e.querySelector('[class^="mb-1"]').getAttribute("alt").trim()
} catch (e) {
}
var desc = ""
try {
e.querySelectorAll('[class^="badge badge-"]').forEach(function (e) {
try {
if (Number(e.textContent) > 0) {
} else {
if (desc.length > 0) {
desc += ","
}
desc += e.textContent.trim()
}
} catch (e) {
}
}
)
} catch (e) {
}
var thumb = ""
try {
thumb = e.querySelector("td").querySelector("a").getAttribute('data-link')
try {
var sets = e.querySelector("td").querySelector("img").getAttribute('srcset')
if (sets.search(",") > -1) {
var srcSet = sets.split(",")
var newT = srcSet[srcSet.length - 1]
if (newT != null && newT.length > 5) {
thumb = newT
}
}
} catch (e) {
}
} catch (e) {
}
var magnet = ""
try {
e.querySelectorAll("td").forEach(function (e) {
e.querySelectorAll("a").forEach(function (e) {
if (e.getAttribute("href").startsWith("magnet")) {
magnet = e.getAttribute("href").replaceAll("&amp;", "&");
}
})
})
} catch (e) {
}
var title = "";
try {
e.querySelector(".name").querySelector("a").querySelectorAll("span").forEach(function (e) {
if (e.hasAttribute("class") == false) {
title = e.textContent.trim();
}
})
} catch (e) {
}
var originPage = ""
try {
originPage = location.protocol + "//" + location.hostname + e.querySelector(".name").querySelector("a").getAttribute("href");
} catch (e) {
}
var screenshots = ""
try {
e.querySelectorAll("a").forEach(function (e) {
if (e.getAttribute("href").search("screenshots") > -1) {
screenshots = e.getAttribute("href");
}
})
} catch (e) {
}
if (thumb.length > 0 || screenshots.length > 0) {
}
datas.push({
"title": title,
"description": desc,
"originPage": originPage,
"magnet_link": magnet,
"thumbnail": thumb,
"pubDate": date,
"screenshotsUrl": screenshots,
"chosung": "",
"category": "PRIVATE"
});
})
sendMessage(
{
type: "PRIVATES",
privates: datas,
currentPage: location.href
}
);
gotoNext()
}
window.scrollTo({ top: 10, behavior: 'smooth' });
if (senContents) {
sendMessage({type: "MainContentsEl", contents: mainContentsEl.outerHTML, currentPage: location.href});
}
}