Radio show website: Full Astro build with 194 episodes imported
Complete website for The Computer Guru Show (radio.azcomputerguru.com): - Astro 6.0.4 static site with React islands - 194 episodes imported from gurushow.com RSS feed - Dark/light mode HSL design system - Persistent audio player with session persistence - Episode archive with search and season filtering - Home page with animated hero, stats, latest episodes - All pages: About, Subscribe, Community, Live, Contact, Blog, 404 - Podcast RSS feed with iTunes namespace - Session log updated Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
8
projects/radio-show/website/src/utils/episodeSlug.ts
Normal file
8
projects/radio-show/website/src/utils/episodeSlug.ts
Normal file
@@ -0,0 +1,8 @@
|
||||
export function episodeSlug(season: number, episode: number, title: string): string {
|
||||
const slug = title
|
||||
.toLowerCase()
|
||||
.replace(/[^a-z0-9]+/g, '-')
|
||||
.replace(/^-+|-+$/g, '')
|
||||
.substring(0, 60);
|
||||
return `s${String(season).padStart(2, '0')}e${String(episode).padStart(2, '0')}-${slug}`;
|
||||
}
|
||||
15
projects/radio-show/website/src/utils/formatDate.ts
Normal file
15
projects/radio-show/website/src/utils/formatDate.ts
Normal file
@@ -0,0 +1,15 @@
|
||||
export function formatDate(date: Date): string {
|
||||
return date.toLocaleDateString('en-US', {
|
||||
year: 'numeric',
|
||||
month: 'long',
|
||||
day: 'numeric',
|
||||
});
|
||||
}
|
||||
|
||||
export function formatShortDate(date: Date): string {
|
||||
return date.toLocaleDateString('en-US', {
|
||||
month: 'short',
|
||||
day: 'numeric',
|
||||
year: 'numeric',
|
||||
});
|
||||
}
|
||||
14
projects/radio-show/website/src/utils/formatDuration.ts
Normal file
14
projects/radio-show/website/src/utils/formatDuration.ts
Normal file
@@ -0,0 +1,14 @@
|
||||
export function formatDuration(duration: string): string {
|
||||
// Handle HH:MM:SS or MM:SS formats
|
||||
const parts = duration.split(':').map(Number);
|
||||
if (parts.length === 3) {
|
||||
const [h, m] = parts;
|
||||
if (h > 0) return `${h}h ${m}m`;
|
||||
return `${m}m`;
|
||||
}
|
||||
if (parts.length === 2) {
|
||||
const [m] = parts;
|
||||
return `${m}m`;
|
||||
}
|
||||
return duration;
|
||||
}
|
||||
Reference in New Issue
Block a user