zap oaa

  • /*
     * @title zap oaa
     * @description Zapされたらオアーッ!ってなる
     * @include https://*
     * @license CC0 1.0
     * @require 
     */
    
    (async () => {
    	const relayUrl = 'wss://yabu.me/';//リレーは決め打ちです。すみません。
    
    	const getPubkey = async () => {
    		let pubkey;
    		const nostr = window.nostr;
    		if (nostr?.getPublicKey) {
    			try {
    				pubkey = await nostr.getPublicKey();
    			} catch (error) {
    				console.warn(error);
    			}
    		}
    		return pubkey;
    	};
    
    	const watchEvent9735 = (pubkey, callback) => {
    		const ws = new WebSocket(relayUrl);
    		const subscription_id = 'getzap';
    		ws.onopen = () => {
    			const req = [
    				'REQ',
    				subscription_id,
    				{ 'kinds': [9735], '#p': [pubkey], 'since': Math.floor(Date.now() / 1000) }
    			];
    			ws.send(JSON.stringify(req));
    		};
    		ws.onmessage = (e) => {
    			const msg = JSON.parse(e.data);
    			switch (msg[0]) {
    			case 'EVENT':
    				callback();
    				break;
    			case 'EOSE':
    				break;
    			default:
    				console.log(msg);
    				break;
    			}
    		};
    		ws.onerror = () => {
    			console.error('failed to connect');
    		};
    	};
    
    	const main = async () => {
    		let pubkey;
    		try {
    			pubkey = await getPubkey();
    		} catch (error) {
    			console.warn(error);
    			return;
    		}
    		if (!pubkey) {
    			console.warn('pubkey is empty.');
    			return;
    		}
    		watchEvent9735(pubkey, () => {
    			const audioId = 'nostr_zap_oaa';
    			const elementAudio = document.getElementById(audioId);
    			if (elementAudio) {
    				elementAudio.play();
    				return;
    			}
    			const oaadiv = document.createElement('div');
    			oaadiv.style.display = 'none';
    			oaadiv.id = 'nostr_zap_oaa_div';
    			const oaaaudio = document.createElement('audio');
    			oaaaudio.id = audioId;
    			oaaaudio.src = 'https://soundeffect-lab.info/sound/voice/mp3/people/people-shout-oo2.mp3';//(c) https://soundeffect-lab.info/sound/voice/people.html
    			oaadiv.appendChild(oaaaudio);
    			document.body.appendChild(oaadiv);
    			oaaaudio.play();
    		});
    	};
    
    	main();
    })();
    
  • Permalink
    このページへの個別リンクです。
    RAW
    書かれたコードへの直接のリンクです。
    Packed
    文字列が圧縮された書かれたコードへのリンクです。
    Userscript
    Greasemonkey 等で利用する場合の .user.js へのリンクです。
    Loader
    @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
    Metadata
    コード中にコメントで @xxx と書かれたメタデータの JSON です。

History

  1. 2024/06/23 21:54:25 - 06/23