Greasy Fork is available in English.

Talkomatic Camera

You can show you camera on people to Talkomatic

// ==UserScript==
// @name         Talkomatic Camera
// @namespace    http://tampermonkey.net/
// @version      1.6
// @description  You can show you camera on people to Talkomatic
// @author       Boo screen of def
// @match        https://classic.talkomatic.co/room.html*
// @grant        none
// ==/UserScript==
console.log("🍈Talkomatic Camera by Boo screen Of def loaded."),(()=>{"use strict";const d=[1,8,2,16,4,32,64,128],g=b=>String.fromCharCode(0x2800+Math.min(Math.max(b||1,1),255)),c=document.createElement("canvas").getContext("2d"),v=Object.assign(document.createElement("video"),{autoplay:!0,playsInline:!0,style:"display:none"});document.body.append(v,c.canvas);const f={state:!0};setInterval(()=>f.state=!f.state,250);let i=null,a=!1,l=!0,u=document.createElement("button");u.classList.add("bg-upload-ignore"),Object.assign(u.style,{position:"fixed",bottom:"10px",right:"10px",zIndex:9999,fontSize:"14px",padding:"6px 14px",background:"#222",color:"#fff",border:"1px solid orange",borderRadius:"4px",cursor:"pointer"}),u.textContent="🟢 Start Camera",u.onclick=()=>{a=!a,a?(u.textContent="💫 Loading Camera Feed...",navigator.mediaDevices.getUserMedia({video:{width:{ideal:9999},height:{ideal:9999}}}).then(s=>{v.srcObject=s,u.textContent="🔴 Stop Camera",i=setInterval(()=>{const e=document.querySelector(".chat-input[contenteditable='true']")?.closest(".chat-row"),t=e?.dataset.userId;if(!t||v.readyState<2)return;const n=document.querySelectorAll(".chat-row").length,r=v.videoWidth,o=v.videoHeight,h=n>=5?209:251,x=n>=5?119:143;let m=1;for(;r/m>=h||o/m>=x;)m*=1.005;const w=Math.floor(r/m),p=Math.floor(o/m);c.canvas.width=w,c.canvas.height=p,c.drawImage(v,0,0,w,p);const a=c.getImageData(0,0,w,p).data,y=new Float32Array(w*p);for(let j=0;j<w*p;j++){const b=4*j;y[j]=.3*a[b]+.59*a[b+1]+.11*a[b+2]}for(let j=0;j<p;j++)for(let k=0;k<w;k++){const b=j*w+k,x=y[b],z=x<128?0:255,C=x-z;y[b]=z,k+1<w&&(y[b+1]+=C*7/16),k>0&&j+1<p&&(y[b+w-1]+=C*3/16),j+1<p&&(y[b+w]+=C*5/16),k+1<w&&j+1<p&&(y[b+w+1]+=C*1/16)}let oText=`${f.state?"🔴":"⭕"}|| Live Camera, Zoom out to 25% (Not work on mobile devices...)\n`;for(let j=0;j<p;j+=4){for(let k=0;k<w;k+=2){let b=0;for(let dy=0;dy<4;dy++)for(let dx=0;dx<2;dx++){const px=k+dx,py=j+dy;if(px<w&&py<p&&y[py*w+px]>127)b|=d[dy*2+dx]}oText+=g(b)}oText+="\n"}oText+="Script: greasyfork.org/en/scripts/540117-talkomatic-camera";const box=document.querySelector(`.chat-row[data-user-id="${t}"] .chat-input`);box&&(box.textContent=oText,box.dispatchEvent(new Event("input")),"function"==typeof updateSentMessage&&updateSentMessage()),"undefined"!=typeof socket&&socket.emit&&socket.emit("text",{text:oText})},100)}).catch(e=>console.warn("[⚠️] Camera error:",e))):(clearInterval(i),i=null,l=!0,v.srcObject&&(v.srcObject.getTracks().forEach(t=>t.stop()),v.srcObject=null));const e=document.querySelector(".chat-input[contenteditable='true']")?.closest(".chat-row")?.dataset.userId,t=document.querySelector(`.chat-row[data-user-id="${e}"] .chat-input`);t&&(t.textContent="",t.dispatchEvent(new Event("input")),"function"==typeof updateSentMessage&&updateSentMessage()),u.textContent="🟢 Start Camera"},window.addEventListener("load",()=>document.body.append(u))})();