// main.js function jsonp(url, callbackName) { return new Promise((resolve) => { const script = document.createElement('script'); script.src = `${url}&callback=${callbackName}`; document.body.appendChild(script); window[callbackName] = (data) => { delete window[callbackName]; document.body.removeChild(script); resolve(data); }; }); } async function getGames(username, userAgents) { const gamesUrl = `https://api.chess.com/pub/player/${username}/games/archives`; try { const response = await jsonp(gamesUrl); // Extracting URLs const gameUrls = response.archives.map(url => `${url}/.pgn`); return gameUrls; } catch (error) { console.error('Error fetching game URLs:', error); throw error; } } async function fetchGames(url, userAgent) { const callbackName = `jsonp_callback_${Math.round(100000 * Math.random())}`; try { const response = await jsonp(url, callbackName); // Process the JSONP response as needed return response; } catch (error) { console.error(`Error fetching game from ${url}:`, error); throw error; } } function concatenateGames(gameResults) { // Customize how you want to concatenate the games return gameResults.join('\n\n'); } async function downloadGames() { const username = document.getElementById('username').value; // Function 1: Get game URLs const allUserAgents = await loadUserAgents(); const urls = await getGames(username, allUserAgents); // Function 2: Asynchronously fetch games const gamePromises = urls.map(async (url, index) => { const userAgent = allUserAgents[index % allUserAgents.length]; return await fetchGames(url, userAgent); }); try { // Function 3: Concatenate game results const gameResults = await Promise.all(gamePromises); const concatenatedGames = concatenateGames(gameResults); // Function 4: Trigger download download(concatenatedGames, 'chess_games.pgn', 'application/pgn'); } catch (error) { console.error('Error fetching games:', error); } } function download(content, fileName, contentType) { const a = document.createElement('a'); const file = new Blob([content], { type: contentType }); a.href = URL.createObjectURL(file); a.download = fileName; a.click(); } async function loadUserAgents() { try { const userAgentsModule = await import('./userAgents.js'); return userAgentsModule.default; } catch (error) { console.error('Error loading user agents:', error); throw error; } } document.addEventListener('DOMContentLoaded', function () { // Your initialization logic here... });