Hello world!

Welcome to WordPress. This is your first post. Edit or delete it, then start writing!

// Instagram Downloader - WordPress Ready Version (function() { 'use strict'; function ready(fn) { if (document.readyState !== 'loading') { fn(); } else { document.addEventListener('DOMContentLoaded', fn); } } const API_BASE_URL = 'https://0vhlizcpd3k5.manus.space/api'; ready(function( ) { console.log('Instagram Downloader: Initializing...'); const urlInput = document.getElementById('instagram-url'); const downloadBtn = document.getElementById('download-btn'); const pasteBtn = document.getElementById('paste-btn'); if (!urlInput || !downloadBtn) { console.error('Instagram Downloader: Required elements not found'); return; } function showError(message, type = 'error') { const errorContainer = document.getElementById('error-container'); const errorText = document.getElementById('error-text'); if (errorContainer && errorText) { errorText.textContent = message; errorContainer.className = 'error-container'; if (type === 'success') { errorContainer.style.background = 'rgba(40, 167, 69, 0.1)'; errorContainer.style.color = '#28a745'; } else if (type === 'warning') { errorContainer.style.background = 'rgba(255, 193, 7, 0.1)'; errorContainer.style.color = '#856404'; } else { errorContainer.style.background = 'rgba(220, 53, 69, 0.1)'; errorContainer.style.color = '#dc3545'; } errorContainer.classList.remove('hidden'); if (type === 'success') { setTimeout(() => errorContainer.classList.add('hidden'), 5000); } } } function validateInstagramUrl(url) { const patterns = [ /^https?:\/\/(www\. )?instagram\.com\/(p|reel|stories|tv)\/[A-Za-z0-9_-]+\/?(\?.*)?$/, /^https?:\/\/(www\. )?instagram\.com\/[A-Za-z0-9_.]+\/?(\?.*)?$/ ]; return patterns.some(pattern => pattern.test(url)); } async function handleDownload() { const url = urlInput.value.trim(); if (!url) { showError('Please enter an Instagram URL', 'error'); return; } if (!validateInstagramUrl(url)) { showError('Please enter a valid Instagram URL', 'error'); return; } downloadBtn.disabled = true; downloadBtn.textContent = 'Processing...'; try { showError('Extracting media information...', 'warning'); const response = await fetch(`${API_BASE_URL}/extract`, { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ url: url }) }); if (!response.ok) { throw new Error(`HTTP ${response.status}: ${response.statusText}`); } const data = await response.json(); if (data.success) { showError('✅ Media found! Choose your download option below.', 'success'); displayResults(data); } else { throw new Error(data.error || 'Failed to extract media'); } } catch (error) { if (error.message.includes('Failed to fetch')) { showError('❌ Connection failed. Make sure your website uses HTTPS.', 'error'); } else { showError(`❌ Error: ${error.message}`, 'error'); } } finally { downloadBtn.disabled = false; downloadBtn.textContent = 'Download'; } } function displayResults(data) { const resultsContainer = document.getElementById('results-container'); const resultsContent = document.getElementById('results-content'); if (!resultsContainer || !resultsContent) return; resultsContainer.classList.remove('hidden'); const downloadUrl = data.data.image_url || data.data.video_url || data.data.thumbnail; const mediaType = data.data.type || 'media'; resultsContent.innerHTML = `
Media

Instagram ${mediaType.charAt(0).toUpperCase() + mediaType.slice(1)}

${data.data.caption || 'Media content'}

`; } window.downloadMedia = function(mediaUrl, filename) { try { const downloadUrl = `${API_BASE_URL}/download?url=${encodeURIComponent(mediaUrl)}&filename=${encodeURIComponent(filename)}`; const link = document.createElement('a'); link.href = downloadUrl; link.download = filename; link.target = '_blank'; document.body.appendChild(link); link.click(); document.body.removeChild(link); showError('✅ Download started! Check your downloads folder.', 'success'); } catch (error) { showError('❌ Download failed. Please try again.', 'error'); } }; if (pasteBtn) { pasteBtn.addEventListener('click', async function() { try { const text = await navigator.clipboard.readText(); urlInput.value = text; urlInput.focus(); } catch (err) { showError('Unable to access clipboard. Please paste manually.', 'warning'); } }); } downloadBtn.addEventListener('click', handleDownload); urlInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') handleDownload(); }); console.log('Instagram Downloader: Ready!'); }); })();