document.addEventListener('DOMContentLoaded', () => { const BLUESKY_DID = 'did:plc:4qjpcixqrc3b2qmbce76sm7k'; const MUSIC_DID = 'did:plc:l37td5yhxl2irrzrgvei4qay'; async function fetchMusicStatus() { const url = `https://rose.madebydanny.uk/xrpc/com.atproto.repo.getRecord?repo=${MUSIC_DID}&collection=fm.teal.alpha.actor.status&rkey=self`; try { const response = await fetch(url); if (!response.ok) { console.error('Music API error:', response.status, response.statusText); throw new Error('Network response was not ok'); } const data = await response.json(); console.log('Music data:', data); if (data && data.value && data.value.item) { const item = data.value.item; const artists = item.artists.map(a => a.artistName).join(', '); const trackUrl = item.originUrl || '#'; document.getElementById('music-link-icon').innerHTML = ``; document.getElementById('music-ui-content').innerHTML = ` ${item.trackName}
by ${artists}
`; document.getElementById('music-status-card').style.display = 'block'; } else { console.warn('No music data found'); } } catch (error) { console.error('Error fetching music:', error); // Show card anyway with error message document.getElementById('music-ui-content').innerHTML = 'No recent music activity'; document.getElementById('music-status-card').style.display = 'block'; } } async function fetchLatestPost() { const url = `https://public.api.bsky.app/xrpc/app.bsky.feed.getAuthorFeed?actor=${BLUESKY_DID}&limit=1`; try { console.log('Fetching post from:', url); const response = await fetch(url); if (!response.ok) { console.error('Post API error:', response.status, response.statusText); const errorText = await response.text(); console.error('Error response:', errorText); throw new Error(`HTTP ${response.status}`); } const data = await response.json(); console.log('Post data:', data); if (data.feed && data.feed.length > 0) { const latest = data.feed[0].post; const record = latest.record; const rkey = latest.uri.split('/').pop(); const postUrl = `https://bsky.app/profile/madebydanny.uk/post/${rkey}`; // Set Text and Date document.getElementById('post-content').innerText = record.text || ""; document.getElementById('post-date').innerText = new Date(record.createdAt).toLocaleString(); document.getElementById('post-link-icon').innerHTML = ``; // Handle Images (Embeds) const mediaContainer = document.getElementById('post-media'); mediaContainer.innerHTML = ''; // Clear previous if (record.embed && record.embed.$type === 'app.bsky.embed.images') { record.embed.images.forEach(img => { const imgRef = img.image.ref.$link; const imgSrc = `https://cdn.bsky.app/img/feed_fullsize/plain/${BLUESKY_DID}/${imgRef}@jpeg`; const imgElement = document.createElement('img'); imgElement.src = imgSrc; imgElement.alt = img.alt || "Bluesky post image"; imgElement.className = 'post-image'; mediaContainer.appendChild(imgElement); }); } document.getElementById('latest-post-card').style.display = 'block'; } else { console.warn('No posts found in feed'); document.getElementById('post-content').innerHTML = 'No posts found'; document.getElementById('latest-post-card').style.display = 'block'; } } catch (error) { console.error('Error fetching post:', error); document.getElementById('post-content').innerHTML = `Error loading post: ${error.message}`; document.getElementById('latest-post-card').style.display = 'block'; } } fetchMusicStatus(); fetchLatestPost(); });