old-twitter-image-search/dist/otis.user.js

31 lines
50 KiB
JavaScript
Raw Normal View History

2023-07-13 08:28:59 +02:00
// ==UserScript==
// @name Old Twitter Image Search
// @namespace vite-plugin-monkey
2023-07-19 13:10:32 +02:00
// @version 1.1.0
2023-07-13 08:28:59 +02:00
// @author SoberOatmeal
// @description otis
// @license MIT
// @match https://twitter.com/*
// @connect donmai.us
// @connect saucenao.com
// @connect twimg.com
// @connect api.twitter.com
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.xmlHttpRequest
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_xmlhttpRequest
// @run-at document-end
// ==/UserScript==
2023-07-19 13:10:32 +02:00
(i=>{const t=document.createElement("style");t.dataset.source="vite-plugin-monkey",t.textContent=i,document.head.append(t)})(' .otis-icon{width:16px;vertical-align:middle;margin-right:20px;margin-left:6px;margin-bottom:4px}.otis-icon:hover{opacity:.8}.otis-icon-loading{opacity:.6!important;animation-name:icon-spin;animation-duration:2s;animation-iteration-count:infinite;animation-timing-function:linear}.otis-icon-noresult{opacity:.3!important}.otis-danbo-icon{width:18px;vertical-align:middle;margin-bottom:2px}.danbo-text-link{color:var(--light-gray);font-weight:700;font-size:12px}.danbo-more-results{margin-left:250px}.danbo-item>img,.danbo-item>div{vertical-align:middle;display:inline-block}.danbo-item>div{margin-left:10px}.danbo-artist-name{font-size:13px;bottom:3px;position:relative;font-weight:700;display:inline-block;cursor:pointer}.danbo-artist-name>a{color:var(--light-gray)}.danbo-artist-banned{color:#f91880!important;text-decoration:line-through}.danbo-artist-name>img:hover{opacity:.8}.danbo-artist-name-tweetpage{display:block;width:fit-content;bottom:unset}.tweet-time:after{color:var(--light-gray)!important;content:"\xB7";margin:0 3px}@keyframes icon-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}} ');
2023-07-13 08:28:59 +02:00
(function () {
2023-07-19 13:10:32 +02:00
'use strict';
2023-07-13 08:28:59 +02:00
2023-07-19 13:10:32 +02:00
const yA=(A,t)=>A===t,TA=Symbol("solid-track"),E={equals:yA};let VA=uA;const O=1,k=2,rA={owned:null,cleanups:null,context:null,owner:null};var z=null;let Q=null,m=null,p=null,X=null,F=0;function B(A,t){const e=m,n=z,s=A.length===0,o=s?rA:{owned:null,cleanups:null,context:null,owner:t===void 0?n:t},l=s?A:()=>A(()=>U(()=>C(o)));z=o,m=null;try{return W(l,!0)}finally{m=e,z=n;}}function L(A,t){t=t?Object.assign({},E,t):E;const e={value:A,observers:null,observerSlots:null,comparator:t.equals||void 0},n=s=>(typeof s=="function"&&(s=s(e.value)),fA(e,s));return [lA.bind(e),n]}function N(A,t,e){const n=aA(A,t,!1,O);G(n);}function _(A,t,e){e=e?Object.assign({},E,e):E;const n=aA(A,t,!0,0);return n.observers=null,n.observerSlots=null,n.comparator=e.equals||void 0,G(n),lA.bind(n)}function U(A){if(m===null)return A();const t=m;m=null;try{return A()}finally{m=t;}}function oA(A){return z===null||(z.cleanups===null?z.cleanups=[A]:z.cleanups.push(A)),A}function lA(){if(this.sources&&this.state)if(this.state===O)G(this);else {const A=p;p=null,W(()=>I(this),!1),p=A;}if(m){const A=this.observers?this.observers.length:0;m.sources?(m.sources.push(this),m.sourceSlots.push(A)):(m.sources=[this],m.sourceSlots=[A]),this.observers?(this.observers.push(m),this.observerSlots.push(m.sources.length-1)):(this.observers=[m],this.observerSlots=[m.sources.length-1]);}return this.value}function fA(A,t,e){let n=A.value;return (!A.comparator||!A.comparator(n,t))&&(A.value=t,A.observers&&A.observers.length&&W(()=>{for(let s=0;s<A.observers.length;s+=1){const o=A.observers[s],l=Q&&Q.running;l&&Q.disposed.has(o),(l?!o.tState:!o.state)&&(o.pure?p.push(o):X.push(o),o.observers&&vA(o)),l||(o.state=O);}if(p.length>1e6)throw p=[],new Error},!1)),t}function G(A){if(!A.fn)return;C(A);const t=z,e=m,n=F;m=z=A,xA(A,A.value,n),m=e,z=t;}function xA(A,t,e){let n;try{n=A.fn(t);}catch(s){return A.pure&&(A.state=O,A.owned&&A.owned.forEach(C),A.owned=null),A.updatedAt=e+1,PA(s)}(!A.updatedAt||A.updatedAt<=e)&&(A.updatedAt!=null&&"observers"in A?fA(A,n):A.value=n,A.updatedAt=e);}function aA(A,t,e,n=O,s){const o={fn:A,state:n,updatedAt:null,owned:null,sources:null,sourceSlots:null,cleanups:null,value:t,owner:z,context:null,pure:e};return z===null||z!==rA&&(z.owned?z.owned.push(o):z.owned=[o]),o}function cA(A){if(A.state===0)return;if(A.state===k)return I(A);if(A.suspense&&U(A.suspense.inFallback))return A.suspense.effects.push(A);const t=[A];for(;(A=A.owner)&&(!A.updatedAt||A.updatedAt<F);)A.state&&t.push(A);for(let e=t.length-1;e>=0;e--)if(A=t[e],A.state===O)G(A);else if(A.state===k){const n=p;p=null,W(()=>I(A,t[0]),!1),p=n;}}function W(A,t){if(p)return A();let e=!1;t||(p=[]),X?e=!0:X=[],F++;try{const n=A();return wA(e),n}catch(n){e||(X=null),p=null,PA(n);}}function wA(A){if(p&&(uA(p),p=null),A)return;const t=X;X=null,t.length&&W(()=>VA(t),!1);}function uA(A){for(let t=0;t<A.length;t++)cA(A[t]);}function I(A,t){A.state=0;for(let e=0;e<A.sources.length;e+=1){const n=A.sources[e];if(n.sources){const s=n.state;s===O?n!==t&&(!n.updatedAt||n.updatedAt<F)&&cA(n):s===k&&I(n,t);}}}function vA(A){for(let t=0;t<A.observers.length;t+=1){const e=A.observers[t];e.state||(e.state=k,e.pure?p.push(e):X.push(e),e.observers&&vA(e));}}function C(A){let t;if(A.sources)for(;A.sources.length;){const e=A.sources.pop(),n=A.sourceSlots.pop(),s=e.observers;if(s&&s.length){const o=s.pop(),l=e.observerSlots.pop();n<s.length&&(o.sourceSlots[l]=n,s[n]=o,e.observerSlots[n]=l);}}if(A.owned){for(t=A.owned.length-1;t>=0;t--)C(A.owned[t]);A.owned=null;}if(A.cleanups){for(t=A.cleanups.length-1;t>=0;t--)A.cleanups[t]();A.cleanups=null;}A.state=0,A.context=null;}function SA(A){return A instanceof Error?A:new Error(typeof A=="string"?A:"Unknown error",{cause:A})}function PA(A,t=z){throw SA(A)}const NA=Symbol("fallback");function nA(A){for(let t=0;t<A.length;t++)A[t]();}function jA(A,t,e={}){let n=[],s=[],o=[],l=0,i=t.length>1?[]:null;return oA(()=>nA(o)),()=>{let a=A()||[],f,r;return a[TA],U(()=>{let P=a.length,u,v,d,w,V,h,g,y,x;if(P===0)l!==0&&(nA(o),o=[],n=[],s=[],l=0,i&&(i=[])),e.fallback&&(n=[NA],s[0]=B(Y=>(o[0]=
Go to Profile Menu > Settings to add it.`),[];const n=512,s=80,o="http://saucenao.com/search.php",l=new URL(o);l.searchParams.append("numres","5"),l.searchParams.append("output_type","2"),l.searchParams.append("dbmask",String(n)),l.searchParams.append("api_key",t),l.searchParams.append("url",A);const a=await new Promise((c,P)=>{K({url:l.toString(),method:"GET",responseType:"json",anonymous:!0,onload:u=>c(u.responseText),onerror:u=>P(u)});});return JSON.parse(a).results.filter(c=>Number(c.header.similarity)>=s).map(c=>{const P=c.data,u=c.header.thumbnail,v=new URL(P.source).hostname;return {id:P.danbooru_id,timestamp:"",source_domain:v,thumbnail:u,img_width:-1,img_height:-1}})}async function GA(A){const t=`${D}/artists.json`,e=`https://twitter.com/${A}`,n=new URL(t);n.searchParams.append("search[url_matches]",e),n.searchParams.append("only","id,name,urls,is_banned");const o=await new Promise((a,f)=>{K({url:n.toString(),method:"GET",responseType:"json",anonymous:!0,onload:r=>a(r.responseText),onerror:r=>f(r)});});let i=JSON.parse(o).shift();return i&&(i.urls=i.urls.filter(a=>a.is_active&&!(a.url.includes("twitter.com/intent/")||a.url.includes("pixiv.net/stacc/")))),i}const CA="data:image/x-icon;base64,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
2023-07-13 08:28:59 +02:00
})();