zap oaa
by
Nikola
06/23 [2024/06/23 21:54:25]
Zapされたらオアーッ!ってなる
/*
* @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 です。