const puppeteer = require('puppeteer'); // PushbulletのAPIキー const ACCESS_TOKEN = 'o.3XaeWgYySjWXiDT5kRrKT6VOJ1nELHns'; // ここにPushbulletのAPIキーを入力 // 通知を送信する関数 async function sendPushbulletNotification(title, message) { const url = 'https://api.pushbullet.com/v2/pushes'; const payload = { type: 'note', // 通知のタイプ(note: 通常の通知) title: title, // 通知のタイトル body: message, // 通知の本文 }; try { const response = await fetch(url, { method: 'POST', headers: { 'Access-Token': ACCESS_TOKEN, 'Content-Type': 'application/json', }, body: JSON.stringify(payload), }); if (!response.ok) { throw new Error(`HTTPエラー: ${response.status}`); } const data = await response.json(); console.log('通知が送信されました:', data); } catch (error) { console.error('通知の送信中にエラーが発生しました:', error.message); } } (async () => { // ブラウザを起動 const browser = await puppeteer.launch({ headless: true, executablePath: '/usr/bin/chromium-browser' }); const page = await browser.newPage(); // チャットサイトにアクセス await page.goto('https://chat.luvul.net/ChatRoom?room_id=401175'); //await page.goto('https://chat.luvul.net/ChatRoom?room_id=131694'); // チャットコンテナのセレクタ const chatContainerSelector = '#chatlogarea'; // 適切なセレクタに置き換え // チャットコンテナがロードされるまで待機 await page.waitForSelector(chatContainerSelector); console.log('チャットの監視を開始します'); // 以前のメッセージを追跡するためのセット const previousMessages = new Set(); // チャットの監視 await page.exposeFunction('onNewMessage', (message) => { let r = message.search(/しました/); console.log(r); if (message.search(/しました/) !== -1) { // 通知を送信 sendPushbulletNotification('通知タイトル', message); } console.log('新しいメッセージ:', message); }); await page.evaluate((chatContainerSelector) => { const chatContainer = document.querySelector(chatContainerSelector); if (chatContainer) { const previousMessages = new Set(); // MutationObserverを設定 const observer = new MutationObserver((mutationsList) => { for (const mutation of mutationsList) { if (mutation.type === 'childList') { mutation.addedNodes.forEach((node) => { if (node.nodeType === Node.ELEMENT_NODE) { const messageText = node.textContent.trim(); if (!previousMessages.has(messageText)) { previousMessages.add(messageText); window.onNewMessage(messageText); // 新しいメッセージを通知 } } }); } } }); // 監視を開始 observer.observe(chatContainer, { childList: true, subtree: true }); } }, chatContainerSelector); // スクリプトを終了しないように待機 await new Promise(() => {}); })();