Advertisement
Guest User

Untitled

a guest
Jul 29th, 2019
48
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.82 KB | None | 0 0
  1. javascript:(function(){version="1.05";makeRedirect=surl=>{url=new URL(surl);return"http://pyokopyoko.php.xdomain.jp/redirect/?ssl="+(url.protocol==="https:"?"1":"0")+"&d="+url.host.replace(".","_")+"&p="+url.pathname.replace(/^\//,"")};getNodeByAttr=(node,q,attr,value)=>{return Array.from(node.querySelectorAll(q)).filter(x=>{return value?x.getAttribute(attr)===value:x.getAttribute(attr)})};getDateString=dateString=>{d=new Date(tweet.datestring.split(" · ")[1].replace(/[年月]/g,"/").replace(/日/,"")+" "+tweet.datestring.split(" · ")[0].replace(/午[前後]/,""));if(dateString.match(/午後/))d.setHours(d.getHours()+12);return d.getFullYear()+"/"+("0"+(d.getMonth()+1)).slice(-2)+"/"+("0"+(d.getDate())).slice(-2)+" "+("0"+(d.getHours())).slice(-2)+":"+("0"+(d.getMinutes())).slice(-2)};replaceurl=[/(https?:\/\/note\.mu\/[^\s]*)/g,/(https?:\/\/www\.amazon\.co\.jp\/[^\s]*)/g,/(https?:\/\/seed\.online\/[^\s]*)/g];tweet={};t=getNodeByAttr(document,"article","data-testid","tweetDetail")[0];u=getNodeByAttr(t,"li","data-testid","UserCell")[0];usercell=Array.from(u.querySelectorAll("a")[1].querySelectorAll(":scope > div > div"));tweet.name=usercell[0].textContent.replace(/\n/,"");tweet.id=usercell[1].textContent;checker={};checker.body={func:n=>{return n.getAttribute("lang")&&n.getAttribute("dir")}};checker.reply={func:n=>{return getNodeByAttr(n,":scope > div > div > a","role","link").length>0}};checker.imgs={func:n=>{return getNodeByAttr(n,"div","role","blockquote").length===0&&getNodeByAttr(n,":scope img","alt","画像").length>0}};checker.date={func:n=>{return n.querySelectorAll(":scope > div > span").length===2&&n.querySelectorAll(":scope > div > a").length===1&&n.querySelectorAll(":scope > div > a")[0].href.match("https://help.twitter.com")}};checker.url={func:n=>{return getNodeByAttr(n,":scope > div > div > div > a","target","_blank").length>0}};checker.anc={func:n=>{o=n.querySelectorAll(":scope > div > div > div > div");return o.length>=3&&o[o.length-1].textContent.match(/\d+票 · 残り/)}};checker.video={func:n=>{return getNodeByAttr(n,":scope > div > div > div > div > div","data-testid","previewInterstitial").length>0}};elements=Array.from(t.childNodes).slice(2);Object.keys(checker).map(x=>{el=elements.find(checker[x].func);if(el){checker[x].obj=el}});if(checker.reply.obj){tweet.replyTo=checker.reply.obj.textContent}
  2. if(checker.body.obj){tweet.isLinkExist=checker.body.obj.textContent.match(/\(link: ([^)]+)\) [^ \n]+/g);tweet.body=checker.body.obj.textContent.replace(/\(link: ([^)]+)\) [^ \n]+/g,"$1");replaceurl.forEach(x=>{urls=tweet.body.match(x);if(urls){urls.forEach(y=>{tweet.body=tweet.body.replace(y,makeRedirect(y))})}})}
  3. if(checker.url.obj){ul=getNodeByAttr(checker.url.obj,":scope > div > div > div > a","target","_blank");tweet.bodyurl=ul[0].href||ul[0].getAttribute("title");tweet.bodyurlimage=ul[0].querySelector("img").src;tweet.bodyurlTitle=ul[1].querySelector(":scope > div span").textContent}
  4. if(checker.anc.obj){arr=Array.from(checker.anc.obj.querySelectorAll(":scope > div > div > div > div"));tweet.anc=arr.slice(0,arr.length-1).map(x=>{return"・"+x.textContent}).join("\n");tweet.anc+="\n"+arr[arr.length-1].textContent.split(" · ").join(" / ")}
  5. if(checker.video.obj){obj=getNodeByAttr(checker.video.obj,":scope > div > div > div > div > div","data-testid","previewInterstitial")[0];tweet.videothumb=checker.video.obj.querySelector("img").src.replace(/\?format=([^&]+)&name=.*/,".$1");label=obj.querySelectorAll(":scope > div > div");tweet.videoduration=label[0].textContent;tweet.videocount=label[1].textContent}
  6. imgs=checker.imgs.obj?Array.from(checker.imgs.obj.querySelectorAll("img")):[];if(imgs.length>0){tweet.imgs=imgs.map(x=>{return x.src});tweet.imgs=tweet.imgs.map(x=>{return x.replace(/\?format=([^&]+)&name=.*/,".$1")});if(imgs.length===4){tmp=tweet.imgs[1];tweet.imgs[1]=tweet.imgs[2];tweet.imgs[2]=tmp}}
  7. tweet.datestring=checker.date.obj.querySelector("span > span").textContent;tweet.dateoutput=getDateString(tweet.datestring);tweet.url=location.origin+location.pathname;c=getNodeByAttr(t,"div","role","blockquote");c=c.length>0?c[0]:null;if(c){c_checker={};c_checker.body={func:n=>{return getNodeByAttr(n,"div","lang").length>0}};c_checker.imgs={func:n=>{return getNodeByAttr(n,"img","alt","画像").length>0}};c_checker.video={func:n=>{return getNodeByAttr(n,"div","data-testid","previewInterstitial").length>0}};tweet.child={};tweet.child.usercell=getNodeByAttr(c,"div","role","presentation")[0];tweet.child.name=Array.from(tweet.child.usercell.querySelectorAll(":scope > div > div"))[0].textContent.replace(/\n/,"");tweet.child.id=Array.from(tweet.child.usercell.querySelectorAll(":scope > div > div"))[1].textContent;elements=Array.from(c.querySelectorAll(":scope > div > div")).slice(1);Object.keys(c_checker).map(x=>{el=elements.find(c_checker[x].func);if(el){c_checker[x].obj=el}});if(c_checker.body.obj){b=getNodeByAttr(c_checker.body.obj,"div","lang")[0];tweet.child.body=b.textContent.replace(/\(link: ([^)]+)\) [^ \n]+/g,"$1");if(b.previousSibling){tweet.child.replyTo=b.previousSibling.textContent}}
  8. if(c_checker.video.obj){obj=getNodeByAttr(c_checker.video.obj,"div","data-testid","previewInterstitial")[0];tweet.child.videothumb=c_checker.video.obj.querySelector("img").src.replace(/\?format=([^&]+)&name=.*/,".$1");label=obj.querySelectorAll(":scope > div > div");tweet.child.videoduration=label[0].textContent;tweet.child.videocount=label[1].textContent}
  9. imgs=c_checker.imgs.obj?getNodeByAttr(c_checker.imgs.obj,"img","alt","画像"):[];if(imgs.length>0){tweet.child.imgs=imgs.map(x=>{return x.src});tweet.child.imgs=tweet.child.imgs.map(x=>{return x.replace(/\?format=([^&]+)&name=.*/,".$1")});if(imgs.length===4){tmp=tweet.child.imgs[1];tweet.child.imgs[1]=tweet.child.imgs[2];tweet.child.imgs[2]=tmp}}
  10. tweet.child.datestring=getNodeByAttr(c,":scope > div > div > div > span","title")[0].textContent;tweet.child.dateoutput=getDateString(tweet.child.datestring)}
  11. tweetToString=(tweet=>{return tweet.name+" "+tweet.id+" "+"("+tweet.dateoutput+")\n"+(tweet.replyTo?tweet.replyTo+"\n":"")+(tweet.body?tweet.body:"")+(tweet.anc?"\n"+tweet.anc:"")+(tweet.imgs?tweet.imgs.map(x=>{return"\n"+x}).join(""):"")+(tweet.isLinkExist?"":((tweet.bodyurlTitle?"\n"+tweet.bodyurlTitle:"")+(tweet.bodyurl?"\n"+makeRedirect(tweet.bodyurl):"")))+(tweet.videothumb?"\n[動画 "+tweet.videoduration+" / "+tweet.videocount+"] "+tweet.videothumb:"")+"\n"+tweet.url+(tweet.child?"\n[引用元] "+tweet.child.name+" "+tweet.child.id+" "+"("+tweet.child.dateoutput+")\n"+(tweet.child.replyTo?tweet.child.replyTo+"\n":"")+(tweet.child.body?tweet.child.body:"")+(tweet.child.imgs?tweet.child.imgs.map(x=>{return"\n"+x}).join("")+"\n":"")+(tweet.child.videothumb?"\n[動画 "+tweet.child.videoduration+" / "+tweet.child.videocount+"] "+tweet.child.videothumb:""):"")});str=tweetToString(tweet);if(str.split("\n").length>12){str=str.replace(/^\s*\n/gm,"")}
  12. navigator.clipboard.writeText(str)})()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement