better cards

This commit is contained in:
2026-02-10 02:34:25 -05:00
parent b63c62a732
commit 03df2b3a6c
24 changed files with 669 additions and 127 deletions

View File

@@ -1,11 +1,12 @@
{
"generatedAt": "2026-02-10T06:16:26.031Z",
"generatedAt": "2026-02-10T07:10:57.264Z",
"items": [
{
"id": "gPGbtfQdaw4",
"source": "youtube",
"url": "https://www.youtube.com/watch?v=gPGbtfQdaw4",
"title": "AI Agents Are Hiring HUMANS Now? RentAHuman.ai Explained",
"summary": "RentAHuman.ai is breaking the internet - a platform where AI agents can actually hire humans for physical-world tasks. In this video, I break down everything you need to know about this controversial new marketplace. 🤖 What is RentAHuman.…",
"publishedAt": "2026-02-08T19:57:08.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/gPGbtfQdaw4/hqdefault.jpg",
"metrics": {
@@ -17,6 +18,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=aesTuu2nS-I",
"title": "I will not die. Not today!!",
"summary": "I will not die. Not today! That's what this movie tells us. Sisu (Finnish) #movie #finnish #worldwar #gold",
"publishedAt": "2026-02-05T05:53:25.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/aesTuu2nS-I/hqdefault.jpg",
"metrics": {
@@ -28,10 +30,11 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=9t8cBpZLHUo",
"title": "I Cant Believe This Exists: ThePrimeagens Terminal.shop is INSANE",
"summary": "I was absolutely flabbergasted when I saw terminal.shop for the first time. Its a terminal-based online shopping experience by @ThePrimeTimeagen that proves we might have reached peak developer culture. In this video, were diving into th…",
"publishedAt": "2026-02-05T04:31:18.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/9t8cBpZLHUo/hqdefault.jpg",
"metrics": {
"views": 325
"views": 328
}
},
{
@@ -39,6 +42,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=71S5viSJG20",
"title": "Is This Real Life? ✈️ Ultra 4K Flight Over Europes Most Iconic Cities",
"summary": "Today we are exploring the stunningly detailed landscapes of Europe in Microsoft Flight Simulator 2024. From the historic streets of London to the romantic skyline of Paris, were pushing the new graphics engine to its absolute limits in 4…",
"publishedAt": "2026-01-29T13:54:28.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/71S5viSJG20/hqdefault.jpg",
"metrics": {
@@ -50,6 +54,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=SO-tjsB4ZJs",
"title": "16 OSCAR NOMINATIONS?! 🏆 This movie is Next Level.",
"summary": "I expected a good movie. I got a legendary one. Sinners just broke the record with 16 Academy Award nominations and honestly? It deserves more. This film is playing in a completely different league. 🎬🔥 #Sinners #Oscars #AcademyAwards #Mo…",
"publishedAt": "2026-01-28T06:30:50.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/SO-tjsB4ZJs/hqdefault.jpg",
"metrics": {
@@ -61,6 +66,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=FV30wjF1WQ4",
"title": "Can We Survive Winter Storm Fern? ❄️ (Northeast US Live Weather) ✈️ | MSFS 2020 (No Commentary)",
"summary": "Can a virtual plane handle a real-world monster storm? Today we are taking to the skies in Microsoft Flight Simulator 2024 to fly directly into the heart of Winter Storm Fern. With over 10,000 flights grounded in the real world, were the…",
"publishedAt": "2026-01-26T13:12:12.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/FV30wjF1WQ4/hqdefault.jpg",
"metrics": {
@@ -72,6 +78,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=_1-albWBfoc",
"title": "#Psychological #thriller #movie from #Indonesia",
"summary": "I never knew Indonesia had this good a movie industry! My bad! This one movie made me fan of Indonesian movies. Dendam Malam Kelam!!",
"publishedAt": "2026-01-25T16:55:51.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/_1-albWBfoc/hqdefault.jpg",
"metrics": {
@@ -83,6 +90,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=ts-DWD8F68Q",
"title": "Sleepless Skies: Finding Calm Above the Clouds ✈️ | MSFS 2024 (No Commentary)",
"summary": "For the night owls and the restless minds. 🌌✨ Its one of those nights where sleep wont come, so Im taking to the skies to find some stillness. Join me for a midnight tour of the worlds most iconic locations in Microsoft Flight Simulat…",
"publishedAt": "2026-01-24T18:12:01.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/ts-DWD8F68Q/hqdefault.jpg",
"metrics": {
@@ -94,6 +102,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=nlbkGnznzA8",
"title": "A #movie that will creep you out! #survival",
"summary": "Are you in a mood for a survival-thriller movie? I've a good suggestion. Deeply disturbing one though. Later learned that it was based on a real incident. #welcomehome #movie #indian #thriller",
"publishedAt": "2026-01-22T02:21:01.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/nlbkGnznzA8/hqdefault.jpg",
"metrics": {
@@ -105,6 +114,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=zR9Ey8DjG5s",
"title": "A Tour of the Worlds Most Iconic Cities 🌍✨✈️ | MSFS 2020",
"summary": "For the night owls and the restless minds. 🌌✨ Its one of those nights where sleep wont come, so Im taking to the skies to find some stillness. Join me for a midnight tour of the worlds most iconic locations in Microsoft Flight Simulat…",
"publishedAt": "2026-01-20T17:02:14.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/zR9Ey8DjG5s/hqdefault.jpg",
"metrics": {
@@ -116,6 +126,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=oerSPWeIy5k",
"title": "🎥 Dive into the quirky world of Kumiko",
"summary": "🎥 Dive into the quirky world of “Kumiko: The Treasure Hunter” a hidden gem inspired by Fargos wild tales! This offbeat adventure follows a Tokyo office worker on a surreal quest for buried treasure in Americas frozen Midwest. Perfect…",
"publishedAt": "2026-01-20T03:01:02.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/oerSPWeIy5k/hqdefault.jpg",
"metrics": {
@@ -127,6 +138,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=fzw7GUszgdQ",
"title": "RUSTY DRIVER RETURNS 🏎️ F1 25 Short Season Practice (Logitech G920)",
"summary": "Back in the cockpit! 🏁 Tonight, we are shaking off the rust in F1 25. Its been a long time since I hit the track, so I'm jumping into a short season career mode to practice and find the limit again. I'm playing on the Xbox Series S using…",
"publishedAt": "2026-01-18T17:36:36.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/fzw7GUszgdQ/hqdefault.jpg",
"metrics": {
@@ -138,6 +150,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=dlIADQOfXlQ",
"title": "Sleepless Skies: Finding Calm Above the Clouds ✈️ | MSFS 2020 (No Commentary)",
"summary": "For the night owls and the restless minds. 🌌✨ Its one of those nights where sleep wont come, so Im taking to the skies to find some stillness. Join me for a midnight tour of the worlds most iconic locations in Microsoft Flight Simulat…",
"publishedAt": "2026-01-16T18:00:30.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/dlIADQOfXlQ/hqdefault.jpg",
"metrics": {
@@ -149,6 +162,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=0-AX9KaJUSg",
"title": "💸 Your Daily Reset 🧘 Cities: Skylines | Billionaire Paradise Build | Lofi",
"summary": "Tired of the high-stakes pressure cooker? Me too. Today is about the \"Slow Game.\" Were trading the finish line for a skyline, building a tranquil billionaire's paradise where the only goal is beauty and peace. The Vibe: - Zero-stress envi…",
"publishedAt": "2026-01-16T01:07:06.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/0-AX9KaJUSg/hqdefault.jpg",
"metrics": {
@@ -160,6 +174,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=xiSka36EF5c",
"title": "Episode 41a (Recap) - US History Podcast CatchUp: From Colonization to the Early Civil Rights Mo...",
"summary": "Im back - and I owe you an apology. I went AWOL after September for personal reasons, but US History - Understanding This Country by Irregular Mind is back in the groove. In this recap episode, I quickly bring you up to speed on everythin…",
"publishedAt": "2026-01-15T16:58:14.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/xiSka36EF5c/hqdefault.jpg",
"metrics": {
@@ -171,6 +186,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=oBXH9VhnZCs",
"title": "No Mic, Just Silk: Finding My Way in Silksong | Stress-Busting Stream",
"summary": "Stepping into the unknown to find some peace. 🕯️✨ Today, Im putting down the flight controls and picking up the needle. Ive heard so much about Hollow Knight: Silksong, and as someone looking to bust some stress, Ive decided to dive in…",
"publishedAt": "2026-01-14T16:17:29.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/oBXH9VhnZCs/hqdefault.jpg",
"metrics": {
@@ -215,6 +231,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=mj5-oTVJ0AU",
"title": "America from Above: Iconic Landmarks & Relaxing Lofi Vibes | MSFS 2020",
"summary": "From the Statue of Liberty to the Golden Gate. 🏙️✨ Today, were crossing the ocean to navigate the most recognizable skylines in the world. Experience the towering skyscrapers of New York City, the historic monuments of Washington D.C., a…",
"publishedAt": "2026-01-13T16:35:38.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/mj5-oTVJ0AU/hqdefault.jpg",
"metrics": {
@@ -237,6 +254,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=zaQyRCujqk4",
"title": "No More Red Roads! 🛑 Fixing Yesterdays Traffic Mess in Cities: Skylines",
"summary": "Is your city's traffic turning red? 🛑 In this quick highlight from my latest stream, I take on one of the worst traffic bottlenecks in my city and fix it using professional road hierarchy and some clever lane management. If you've ever st…",
"publishedAt": "2026-01-12T10:26:54.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/zaQyRCujqk4/hqdefault.jpg",
"metrics": {
@@ -259,6 +277,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=m5OEtszkSyA",
"title": "Can an Introvert Build the Perfect City? | Cities: Skylines Zen Stream",
"summary": "Welcome to a quiet corner of the internet. Today, we are building, zoning, and managing traffic in Cities: Skylines. As an introverted creator, I find peace in the details of city planning. You won't find loud commentary or high-energy sho…",
"publishedAt": "2026-01-11T22:18:08.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/m5OEtszkSyA/hqdefault.jpg",
"metrics": {
@@ -270,6 +289,7 @@
"source": "youtube",
"url": "https://www.youtube.com/watch?v=XsJCIeqFWCY",
"title": "🚧 ZERO Traffic Jams in Cities: Skylines? My Impossible Build!",
"summary": "Is your city's traffic turning red? 🛑 In this quick highlight from my latest stream, I take on one of the worst traffic bottlenecks in my city and fix it using professional road hierarchy and some clever lane management. If you've ever st…",
"publishedAt": "2026-01-11T22:15:03.000Z",
"thumbnailUrl": "https://i.ytimg.com/vi/XsJCIeqFWCY/hqdefault.jpg",
"metrics": {
@@ -281,6 +301,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E43--US-History--Understanding-This-Country--Childrens-Crusade--the-Civil-Rights-Act-of-1964-Turning-Protest-into-Law-e3e3t94",
"title": "E43. US History Understanding This Country | Children's Crusade & the Civil Rights Act of 1964: Turning Protest into Law",
"summary": "Dive into the pivotal summer of 1963 in this episode of US History - Understanding This Country, hosted by Santhosh Janardhanan. Explore the Birmingham Campaign's bold Project C, where brave children faced fire hoses and police dogs in the…",
"publishedAt": "2026-01-24T03:17:34.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -289,6 +310,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E42--US-History--Understanding-This-Country--Civil-Rights-Movement-from-Courtrooms-to-the-Streets-e3doqu8",
"title": "E42. US History Understanding This Country | Civil Rights Movement from Courtrooms to the Streets",
"summary": "Episode 42 is where the Civil Rights Movement shifts from courtrooms to the streets. After legal wins like Brown v. Board of Education, activists and students push for real change in everyday life-at lunch counters, bus stations, and on in…",
"publishedAt": "2026-01-16T19:59:44.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -297,6 +319,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Episode-41a-Recap---US-History-Podcast-CatchUp-From-Colonization-to-the-Early-Civil-Rights-Movement-e3dmuli",
"title": "Episode 41a (Recap) - US History Podcast CatchUp: From Colonization to the Early Civil Rights Movement",
"summary": "Im back - and I owe you an apology. I went AWOL after September for personal reasons, but US History - Understanding This Country by Irregular Mind is back in the groove. In this recap episode, I quickly bring you up to speed on everythin…",
"publishedAt": "2026-01-15T16:24:16.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -305,6 +328,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E41--US-History--Understanding-This-Country--Civil-Rights-Beginnings-Brown--Parks--King-e38fi0r",
"title": "E41. US History Understanding This Country | Civil Rights Beginnings: Brown, Parks & King",
"summary": "Explore the early US civil rights movement: Brown v. Board of Education, Montgomery Bus Boycott, Little Rock Nine, Rosa Parks, Martin Luther King Jr., school integration, nonviolence, and resistance in the 1950s. Legal cases, social justic…",
"publishedAt": "2025-09-20T03:47:37.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -313,6 +337,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E40--US-History--Understanding-This-Country--Prosperity--TV--Rock-n-Roll-e387ogh",
"title": "E40. US History Understanding This Country | Prosperity, TV, Rock n Roll",
"summary": "Step into the 1950s: GI Bill-fueled growth, Levittown suburbs, TV in every living room, and rock n roll teens—alongside redlining, poverty, and early sparks of Civil Rights. Booming, but brittle. Listen now.",
"publishedAt": "2025-09-15T02:28:58.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -321,6 +346,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E39--US-History--Understanding-This-Country--The-Korean-War-Americas-First-Test-of-the-Cold-War-e37t0f5",
"title": "E39. US History Understanding This Country | The Korean War: Americas First Test of the Cold War",
"summary": "From the North Korean invasion to MacArthurs Inchon landing, Chinese intervention, and Trumans clash with his general — discover how the Korean War became the blueprint for Cold War conflicts and earned the name “The Forgotten War.”",
"publishedAt": "2025-09-07T04:58:14.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -329,6 +355,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E38--US-History--Understanding-This-Country--Victory-to-Cold-War-Tensions-e36tqu6",
"title": "E38. US History Understanding This Country | Victory to Cold War Tensions",
"summary": "In 1945, victory brought hope and change. From the GI Bill and baby boom to the UN, Marshall Plan, Berlin Airlift, and Trumans Fair Deal — discover how America emerged as a global leader while stepping into the Cold War.",
"publishedAt": "2025-08-16T03:52:22.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -337,6 +364,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E37--US-History--Understanding-This-Country--From-D-Day-to-Nagasaki-e36ks7j",
"title": "E37. US History Understanding This Country | From D-Day to Nagasaki",
"summary": "Coincidentally, on the anniversary of the bombing of Nagasaki, we retrace Americas path to victory in WWII — from D-Days stormed beaches and the Battle of the Bulge, to the Pacific war, the A-Bomb, and the dawn of a new world order.",
"publishedAt": "2025-08-09T04:15:45.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -345,6 +373,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E36--US-History--Understanding-This-Country--The-World-at-War--Again-How-the-US-stepped-into-WWII-e36bkih",
"title": "E36. US History Understanding This Country | The World at War, Again: How the US stepped into WWII",
"summary": "Before Normandy and D-Day, there was fear, fascism, and a world unraveling. In this episode, we trace the rise of totalitarian regimes in Europe and Asia, the blitzkrieg that stunned the West, and the slow but steady shift in American sent…",
"publishedAt": "2025-08-02T03:41:33.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -353,6 +382,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E35--US-History--Understanding-This-Country--The-Great-Depression-e361hrl",
"title": "E35. US History Understanding This Country | The Great Depression",
"summary": "When the Roaring Twenties crashed into economic ruin, America found itself spiraling into the Great Depression. In this episode, we explore the causes, the fallout, and the ambitious response—from Hoovers failure to FDRs New Deal. Escapi…",
"publishedAt": "2025-07-26T02:32:26.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -361,6 +391,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E34--US-History--Understanding-This-Country--The-Roaring-Twenties-e35o9s0",
"title": "E34. US History Understanding This Country | The Roaring Twenties",
"summary": "Explore the dazzling highs and hidden lows of 1920s America - from jazz clubs and cultural revolutions to rising nativism, fundamentalism, and an economy teetering on collapse. This episode dives deep into how the decade shaped modern Amer…",
"publishedAt": "2025-07-19T03:58:56.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -369,6 +400,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E33--US-History--Understanding-This-Country--The-Great-War-How-World-War-I-Transformed-America-and-the-World-e35eos4",
"title": "E33. US History Understanding This Country | The Great War: How World War I Transformed America and the World",
"summary": "Explore Americas entry into World War I, from trench warfare and propaganda to Wilsons Fourteen Points and the Treaty of Versailles. Discover how the Great War reshaped the U.S. and set the stage for the Roaring Twenties.",
"publishedAt": "2025-07-12T04:33:52.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -377,6 +409,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E32--US-History--Understanding-This-Country--American-Muscle-and-Presidents-of-Power-e354i1u",
"title": "E32. US History Understanding This Country | American Muscle and Presidents of Power",
"summary": "In this episode, we follow Americas bold stride into global influence and domestic reform through the eyes of Theodore Roosevelt, William Howard Taft, and Woodrow Wilson. From the Panama Canal to trust-busting, and from Dollar Diplomacy t…",
"publishedAt": "2025-07-05T03:30:53.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -385,6 +418,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E31--US-History--Understanding-This-Country--Expansionism-and-Imperialism-e34r500",
"title": "E31. US History Understanding This Country | Expansionism and Imperialism",
"summary": "Explore how the United States expanded its reach beyond its borders through imperial ambition, war, and diplomacy. From Hawaii to the Philippines, this episode traces Americas rise as a world power.",
"publishedAt": "2025-06-28T03:30:57.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -393,6 +427,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E30--US-History--Understanding-This-Country--Progressivism-in-America-e34es36",
"title": "E30. US History Understanding This Country | Progressivism in America",
"summary": "Explore the transformative Progressive Era in U.S. history — from trust-busting and muckraking journalism to child labor laws, womens suffrage, and civil rights movements. This episode dives into how reformers, activists, and everyday cit…",
"publishedAt": "2025-06-19T03:42:14.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -401,6 +436,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E29--US-History--Understanding-This-Country--Immigration-and-New-Cities-e347o88",
"title": "E29. US History Understanding This Country | Immigration and New Cities",
"summary": "In this episode, we explore the explosive rise of American cities during the late 1800s and early 1900s. From Ellis Island to ethnic neighborhoods, from nativist backlash to reform movements, discover how waves of new immigrants shaped the…",
"publishedAt": "2025-06-14T03:58:41.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -409,6 +445,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E28--US-History--Understanding-This-Country--Second-Industrial-Revolution-and-The-Age-of-Capitalism-e33togi",
"title": "E28. US History Understanding This Country | Second Industrial Revolution and The Age of Capitalism",
"summary": "In this episode, we explore the Second Industrial Revolution — a time of booming invention, corporate empires, and factory-floor struggles. From Edisons lightbulb to Fords assembly line, and from the rise of the corporation to the birth…",
"publishedAt": "2025-06-07T03:51:30.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -417,6 +454,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E27--US-History--Understanding-This-Country--Clash-of-Cultures-e33josn",
"title": "E27. US History Understanding This Country | Clash of Cultures",
"summary": "The American frontier was not an empty land — it was home. In this powerful episode, we uncover the story of the Lakota and other Plains tribes who resisted removal, reservations, and forced assimilation. From Custers Last Stand to the bo…",
"publishedAt": "2025-05-31T04:14:46.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -425,6 +463,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E26--US-History--Understanding-This-Country--Trains--Bonanzas-and-Cowboys-e339m68",
"title": "E26. US History Understanding This Country | Trains, Bonanzas and Cowboys",
"summary": "From steam engines to cattle drives, and from homesteads to populist rallies — this episode explores how the American West was won, worked, and mythologized. Discover how the Transcontinental Railroad changed everything, how farmers organi…",
"publishedAt": "2025-05-24T03:30:17.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -433,6 +472,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E25--US-History--Understanding-This-Country--Reconstruction-Redefining-Freedom-e32v9a2",
"title": "E25. US History Understanding This Country | Reconstruction: Redefining Freedom",
"summary": "After the Civil War, the United States faced its most difficult question yet: how do you rebuild a country that just tried to destroy itself? In this episode, we explore the highs and heartbreaks of Reconstruction — from the promise of fre…",
"publishedAt": "2025-05-17T04:35:58.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -441,6 +481,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E24--US-History--Understanding-This-Country--The-Civil-War-e32l3na",
"title": "E24. US History Understanding This Country | The Civil War",
"summary": "Dive deep into the American Civil War — a conflict that shattered the nation, ended slavery, and changed the course of U.S. history. This episode traces the path from secession to surrender, explores key battles like Gettysburg and Antieta…",
"publishedAt": "2025-05-10T04:07:23.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -449,6 +490,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E23--US-History--Understanding-This-Country--Prelude-to-Civil-War-e32al0g",
"title": "E23. US History Understanding This Country | Prelude to Civil War",
"summary": "In this gripping episode of US History Understanding This Country, we trace the volatile road to the American Civil War—from the Wilmot Proviso to Lincolns First Inaugural Address. Learn how heated debates over slavery, landmark legisla…",
"publishedAt": "2025-05-03T03:30:33.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -457,6 +499,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E22--US-History--Understanding-This-Country--The-Age-of-Reform-e3217aj",
"title": "E22. US History Understanding This Country | The Age of Reform",
"summary": "In this episode of US History Understanding This Country, explore the powerful movements that reshaped America in the mid-1800s. From immigration waves and city life challenges to the Second Great Awakening, the Temperance Movement, pris…",
"publishedAt": "2025-04-26T03:38:18.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -465,6 +508,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E21--US-History--Understanding-This-Country--The-Lone-Star-and-the-Borderlands-e31nkn1",
"title": "E21. US History Understanding This Country | The Lone Star and the Borderlands",
"summary": "In this episode of US History Understanding This Country, we explore how Texas went from Mexican territory to independent republic—and how that sparked the Mexican-American War. Learn about the Alamo, the Battle of San Jacinto, the Treat…",
"publishedAt": "2025-04-19T03:26:55.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -473,6 +517,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E20--US-History--Understanding-This-Country--The-Oregon-Trail-e31eh44",
"title": "E20. US History Understanding This Country | The Oregon Trail",
"summary": "In this immersive episode of US History Understanding This Country, we journey along the iconic Oregon Trail — the 2,000-mile route that carried Americas pioneer spirit westward. From river crossings and food shortages to the resilience…",
"publishedAt": "2025-04-12T04:39:58.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -481,6 +526,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E19--US-History--Understanding-This-Country--The-Wild-West-Journeys-e3139gh",
"title": "E19. US History Understanding This Country | The Wild West Journeys",
"summary": "In this gripping episode of US History Understanding This Country, we journey deep into the legendary Oregon Trail — the 2,000-mile path that turned ordinary families into pioneers and a young nation into a continental power. Discover wh…",
"publishedAt": "2025-04-04T23:00:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -489,6 +535,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E18--US-History--Understanding-This-Country--From-Corrupt-Bargains-to-the-Trail-of-Tears-e30ql0c",
"title": "E18. US History Understanding This Country | From Corrupt Bargains to the Trail of Tears",
"summary": "In this powerful episode of US History Understanding This Country, host Santhosh Janardhanan unpacks the pivotal elections of 1824, 1828, and 1832—revealing how political rivalries, populist movements, and bitter controversies shaped the…",
"publishedAt": "2025-03-29T04:10:39.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -497,6 +544,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E17--US-History--Understanding-This-Country--The-Era-of-Good-Feelings--Nationalism--Industry--Division-in-Early-America-e30fabn",
"title": "E17. US History Understanding This Country | The Era of Good Feelings? Nationalism, Industry & Division in Early America",
"summary": "Was the “Era of Good Feelings” truly a time of peace and progress—or a calm before the storm? In Episode 17 of US History Understanding This Country, we explore how the post-War of 1812 boom brought nationalism, innovation, and expansion…",
"publishedAt": "2025-03-22T01:00:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -505,6 +553,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E16--US-History--Understanding-This-Country--The-War-of-1812-and-Birth-of-the-Star-Spangled-Banner-e300cll",
"title": "E16. US History Understanding This Country | The War of 1812 and Birth of the Star Spangled Banner",
"summary": "The War of 1812 shaped Americas destiny—Tecumsehs confederation, the Battle of Tippecanoe, the burning of Washington D.C., the Star-Spangled Banner, and Andrew Jacksons victory at New Orleans. Discover how this war redefined U.S. indepe…",
"publishedAt": "2025-03-15T01:00:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -513,6 +562,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E15--US-History---Understanding-this-Country--Expansion--Power--and-Contradictions-e2vsbq8",
"title": "E15. US History - Understanding this Country | Expansion, Power, and Contradictions",
"summary": "Thomas Jeffersons presidency reshaped America—doubling its size with the Louisiana Purchase, battling the Supreme Court, and enforcing the disastrous Embargo Act. Explore his legacy in this episode!",
"publishedAt": "2025-03-08T05:43:34.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -521,6 +571,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E14--US-History---Understanding-this-Country--Presidents-setting-precedents-e2vhud8",
"title": "E14. US History - Understanding this Country | Presidents setting precedents",
"summary": "Dive into the transformative era of the first presidents as they laid the groundwork for the United States by setting precedents in early America. This episode traces George Washingtons historic election, the formation of his cabinet, and…",
"publishedAt": "2025-03-01T04:33:33.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -529,6 +580,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E13--US-History---Understanding-this-Country--Inside-the-U-S--Constitution-e2v887v",
"title": "E13. US History - Understanding this Country | Inside the U.S. Constitution",
"summary": "The U.S. Constitution was written—but could it survive the fight for approval? In this episode, we dive into the ratification debates, the clash between Federalists and Anti-Federalists, and the political deals that saved the Constitution.…",
"publishedAt": "2025-02-23T03:35:43.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -537,6 +589,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E12--US-History---Understanding-this-Country--Finding-the-Balance-e2uubvc",
"title": "E12. US History - Understanding this Country | Finding the Balance",
"summary": "The U.S. Constitution wasnt built overnight—it was shaped by intense debates and hard-fought compromises. In this episode, we dive into The Great Compromise, The Three-Fifths Compromise, and how these decisions created the foundation for…",
"publishedAt": "2025-02-16T04:57:29.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -545,6 +598,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E11--US-History---Understanding-this-Country--Building-a-nation-from-the-scratch-e2uk5j4",
"title": "E11. US History - Understanding this Country | Building a nation from the scratch",
"summary": "How did the U.S. go from revolution to a functioning government? Of course, it was not a cake walk. In this episode, we break down the period of Article of Confederation - the first government in the U.S, creation of the Constitution, the…",
"publishedAt": "2025-02-09T04:42:25.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -553,6 +607,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E10--US-History---Understanding-this-Country--The-Revolutions-Final-Stand-e2u63b1",
"title": "E10. US History - Understanding this Country | The Revolutions Final Stand",
"summary": "The American Revolution wasnt just won on battlefields—it was won through resilience, strategy, and unexpected allies. In this episode, we cover the final battles, the global impact of the war, and the unsung heroes who made independence…",
"publishedAt": "2025-02-01T02:00:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -561,6 +616,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E9--US-History---Understanding-this-Country--From-Declaration-to-Victory-e2u0336",
"title": "E9. US History - Understanding this Country | From Declaration to Victory",
"summary": "Explore the gritty journey from the Declaration of Independence to the early milestones of the American Revolution. In this episode, we cover the Battle of Long Island, Washingtons daring Delaware crossing, the turning point at Saratoga,…",
"publishedAt": "2025-01-26T04:01:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -569,6 +625,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E8--US-History---Understanding-this-Country--The-Road-to-Independence-e2tl8to",
"title": "E8. US History - Understanding this Country | The Road to Independence",
"summary": "Join us in Episode 8 of Irregular Mind as we explore the pivotal moments that shaped America's fight for freedom. From the Second Continental Congress to the bold stand at Bunker Hill, the Olive Branch Petition, and Washingtons victory in…",
"publishedAt": "2025-01-18T05:08:28.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -577,6 +634,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E7--US-History---Understanding-this-Country--The-British-Are-Coming-e2ta21g",
"title": "E7. US History - Understanding this Country | The British Are Coming",
"summary": "Dive into the electrifying moments that sparked the American Revolution in this episode of Irregular Mind. From the bold actions of the Sons of Liberty and Patrick Henrys fiery “Give me liberty or give me death” speech to the first shots…",
"publishedAt": "2025-01-10T04:14:48.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -585,6 +643,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E6--US-History---Understanding-this-Country--The-Spark-of-Revolution-e2svhfd",
"title": "E6. US History - Understanding this Country | The Spark of Revolution",
"summary": "In this episode of Irregular Mind, we trace the growing tensions that lit the fuse of the American Revolution. Explore the cries of “No Taxation Without Representation”, the defiance of the Stamp Act, and the fiery rhetoric of Patrick Henr…",
"publishedAt": "2025-01-04T14:12:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -593,6 +652,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E5--US-History---Understanding-this-Country--Colonial-America-The-Spark-Before-the-Revolution-e2sqg20",
"title": "E5. US History - Understanding this Country | Colonial America: The Spark Before the Revolution",
"summary": "Dive into the pivotal moments that set the stage for the American Revolution in this episode of Irregular Mind. Explore the impact of the English Bill of Rights, the Great Awakening, and the Intolerable Acts as tensions between Britain and…",
"publishedAt": "2024-12-28T03:46:34.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -601,6 +661,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E4--US-History---Understanding-this-Country--Colonial-America-Roots-of-a-New-Nation-e2sdvgp",
"title": "E4. US History - Understanding this Country | Colonial America: Roots of a New Nation",
"summary": "Explore the birth of Colonial America in this episode of Irregular Mind. Discover the rise of Virginia, the establishment of the Thirteen Colonies, and how regional differences shaped the early American identity. From Jamestowns struggles…",
"publishedAt": "2024-12-20T13:30:00.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -609,6 +670,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E3--US-History---Understanding-this-Country--Empires--Exploration--and-the-Birth-of-Colonies-e2s7mt6",
"title": "E3. US History - Understanding this Country | Empires, Exploration, and the Birth of Colonies",
"summary": "Discover the dramatic shifts in power as the Spanish Armada falls, the rise of tobacco in Virginia, and the relentless search for the Northwest Passage. Explore the early European settlements, trade networks, and cultural exchanges that sh…",
"publishedAt": "2024-12-17T04:34:51.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -617,6 +679,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E2--US-History---Understanding-this-Country--1492-and-Beyond-The-Atlantic-World-Unveiled-e2s2s85",
"title": "E2. US History - Understanding this Country | 1492 and Beyond: The Atlantic World Unveiled",
"summary": "Uncover the pivotal moments that reshaped history in Episode Two of Irregular Mind's U.S. history series, \"Understanding This Country.\" From Columbus' daring voyage and the race for riches in 15th-century Europe to the clash of cultures, t…",
"publishedAt": "2024-12-09T05:11:09.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -625,6 +688,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/E1--US-History---Understanding-this-Country-e2rojk0",
"title": "E1. US History - Understanding this Country",
"summary": "I came to the United States chasing opportunities, but I quickly realized that this land is more than just skyscrapers and Hollywood. The history of this place is layered, complicated, and, honestly, sometimes stranger than fiction. And th…",
"publishedAt": "2024-12-02T05:02:25.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded/7490178/7490178-1644680234566-cf5628ab210f1.jpg"
},
@@ -633,6 +697,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/One-Person---One-Relation-e1fkfab",
"title": "One Person - One Relation",
"summary": "A common issue faced by most of us - relationships. Just a wakeup call on it.",
"publishedAt": "2022-03-12T19:43:48.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded400/7490178/7490178-1644680237670-d15b3f1acda1b.jpg"
},
@@ -641,6 +706,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Dharmaraja---Conclusion-e1dvq6i",
"title": "Dharmaraja.- Conclusion",
"summary": "Conclusion and Aftermath of Yogi's plot.",
"publishedAt": "2022-02-05T19:28:44.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_episode/7490178/7490178-1644089311927-91c36cb8383e5.jpg"
},
@@ -649,6 +715,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Dharmaraja---Episode-28-e1dvpa3",
"title": "Dharmaraja - Episode 28",
"summary": "The final showdown. Major players face off. And Yogi does the undoable.",
"publishedAt": "2022-02-05T19:02:09.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_episode/7490178/7490178-1644087715926-5f708b8948277.jpg"
},
@@ -657,6 +724,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Dharmaraja---Episode-27-e1dvmg0",
"title": "Dharmaraja - Episode 27",
"summary": "Yogi is shocked with a surprise news. Relationship between brothers crack. Can Yogi see what kind of mess he is into?",
"publishedAt": "2022-02-05T17:52:55.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_episode/7490178/7490178-1644083569325-d4aaaf3e6d72.jpg"
},
@@ -665,6 +733,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Dharmaraja---Episode-26-e1duh8e",
"title": "Dharmaraja - Episode 26",
"summary": "Helplessness grasps Chandrakkaran. Thripurasundarikunjamma sees visions...",
"publishedAt": "2022-02-04T21:12:06.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_episode/7490178/7490178-1644083230812-bbcda04085e26.jpg"
},
@@ -673,6 +742,7 @@
"source": "podcast",
"url": "https://podcasters.spotify.com/pod/show/the-irregular-mind/episodes/Dharmaraja---Episode-25-e1dsusg",
"title": "Dharmaraja - Episode 25",
"summary": "Conflict comes to day light. Kesavan Kunju escapes. Padathalavan is all out beast mode after knowing what happened to Kuppassar.",
"publishedAt": "2022-02-03T21:23:34.000Z",
"thumbnailUrl": "https://d3t3ozftmdmh3i.cloudfront.net/production/podcast_uploaded_episode/7490178/7490178-1643923406877-eef4729d8dab5.jpg"
}

View File

@@ -114,46 +114,7 @@ a {
gap: 14px;
}
.blog-card {
border-radius: 16px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(255, 255, 255, 0.04);
overflow: hidden;
transition:
transform 120ms ease,
background 120ms ease;
}
.blog-card:hover {
transform: translateY(-2px);
background: rgba(255, 255, 255, 0.06);
}
.blog-card img {
width: 100%;
height: 180px;
object-fit: cover;
display: block;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.blog-card-body {
padding: 12px 12px 14px;
}
.blog-card-title {
margin: 0 0 8px;
font-size: 15px;
line-height: 1.25;
letter-spacing: -0.01em;
}
.blog-card-excerpt {
margin: 0;
color: var(--muted);
font-size: 13px;
line-height: 1.5;
}
/* blog cards are now rendered via the shared `.card` component styles */
.prose {
line-height: 1.75;
@@ -256,53 +217,88 @@ a {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 14px;
align-items: stretch;
}
.card {
display: grid;
grid-template-columns: 110px 1fr;
gap: 12px;
padding: 12px;
display: flex;
flex-direction: column;
height: 100%;
border-radius: 16px;
border: 1px solid rgba(255, 255, 255, 0.1);
background: rgba(255, 255, 255, 0.04);
overflow: hidden;
transition:
transform 120ms ease,
background 120ms ease;
}
.card-media {
flex: 0 0 auto;
}
.card:hover {
transform: translateY(-2px);
background: rgba(255, 255, 255, 0.06);
}
.card-media img {
width: 110px;
height: 70px;
border-radius: 10px;
width: 100%;
height: 180px;
object-fit: cover;
border: 1px solid rgba(255, 255, 255, 0.1);
display: block;
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.card-placeholder {
width: 110px;
height: 70px;
border-radius: 10px;
width: 100%;
height: 180px;
background: rgba(255, 255, 255, 0.06);
border: 1px solid rgba(255, 255, 255, 0.1);
border-bottom: 1px solid rgba(255, 255, 255, 0.08);
}
.card-meta {
.card-body {
display: flex;
gap: 10px;
align-items: center;
font-size: 12px;
flex: 1;
flex-direction: column;
padding: 0;
}
.card-content {
flex: 1;
padding: 12px 12px 12px;
background: linear-gradient(180deg, rgba(15, 27, 56, 0.75), rgba(11, 16, 32, 0.32));
}
.card-title {
margin: 8px 0 0;
font-size: 14px;
line-height: 1.35;
margin: 0 0 8px;
font-size: 15px;
line-height: 1.25;
letter-spacing: -0.01em;
}
.card-summary {
margin: 0;
color: var(--muted);
font-size: 13px;
line-height: 1.5;
}
.card-footer {
margin-top: auto;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 10px 12px;
border-top: 1px solid rgba(255, 255, 255, 0.08);
background: rgba(11, 16, 32, 0.45);
font-size: 12px;
}
.card-footer .card-views {
flex: 1;
text-align: center;
}
.pill {
@@ -326,6 +322,10 @@ a {
border-color: rgba(255, 205, 74, 0.35);
}
.pill-blog {
border-color: rgba(140, 88, 255, 0.35);
}
.empty {
padding: 16px;
border-radius: 14px;
@@ -351,12 +351,8 @@ a {
.blog-grid {
grid-template-columns: 1fr;
}
.card {
grid-template-columns: 90px 1fr;
}
.card-media img,
.card-placeholder {
width: 90px;
height: 60px;
height: 200px;
}
}

View File

@@ -1,5 +1,6 @@
---
import type { WordpressPost } from "../lib/content/types";
import StandardCard from "./StandardCard.astro";
type Props = {
post: WordpressPost;
@@ -10,26 +11,34 @@ type Props = {
const { post, placement, targetId } = Astro.props;
function truncate(s: string, n: number) {
if (!s) return "";
const t = s.trim();
const t = (s || "").trim();
if (!t) return "";
if (t.length <= n) return t;
return `${t.slice(0, Math.max(0, n - 1)).trimEnd()}…`;
}
const d = new Date(post.publishedAt);
const dateLabel = Number.isFinite(d.valueOf())
? d.toLocaleDateString(undefined, { year: "numeric", month: "short", day: "numeric" })
: "";
---
<a
class="blog-card"
<StandardCard
href={`/blog/post/${post.slug}`}
data-umami-event="click"
data-umami-event-target_id={targetId}
data-umami-event-placement={placement}
data-umami-event-target_url={`/blog/post/${post.slug}`}
data-umami-event-title={truncate(post.title || "", 160)}
data-umami-event-type="blog_post"
>
{post.featuredImageUrl ? <img src={post.featuredImageUrl} alt="" loading="lazy" /> : null}
<div class="blog-card-body">
<h3 class="blog-card-title">{post.title}</h3>
<p class="blog-card-excerpt">{truncate(post.excerpt || "", 180)}</p>
</div>
</a>
title={post.title}
summary={post.excerpt}
imageUrl={post.featuredImageUrl}
dateLabel={dateLabel}
viewsLabel={undefined}
sourceLabel="blog"
isExternal={false}
linkAttrs={{
"data-umami-event": "click",
"data-umami-event-target_id": targetId,
"data-umami-event-placement": placement,
"data-umami-event-target_url": `/blog/post/${post.slug}`,
"data-umami-event-title": truncate(post.title, 160),
"data-umami-event-type": "blog_post",
}}
/>

View File

@@ -1,5 +1,6 @@
---
import type { ContentItem } from "../lib/content/types";
import StandardCard from "./StandardCard.astro";
type Props = {
item: ContentItem;
@@ -36,40 +37,24 @@ const umamiType =
const umamiTitle = umamiType ? truncate(item.title, 160) : undefined;
---
<a
class="card"
<StandardCard
href={item.url}
target="_blank"
rel="noopener noreferrer"
data-umami-event="outbound_click"
data-umami-event-target_id={targetId}
data-umami-event-placement={placement}
data-umami-event-target_url={item.url}
data-umami-event-title={umamiTitle}
data-umami-event-type={umamiType}
data-umami-event-domain={domain || "unknown"}
data-umami-event-source={item.source}
data-umami-event-ui_placement="content_card"
>
<div class="card-media">
{
item.thumbnailUrl ? (
<img src={item.thumbnailUrl} alt="" loading="lazy" />
) : (
<div class="card-placeholder" />
)
}
</div>
<div class="card-body">
<div class="card-meta">
<span class={`pill pill-${item.source}`}>{item.source}</span>
{dateLabel ? <span class="muted">{dateLabel}</span> : null}
{
item.metrics?.views !== undefined ? (
<span class="muted">{item.metrics.views.toLocaleString()} views</span>
) : null
}
</div>
<h3 class="card-title">{item.title}</h3>
</div>
</a>
title={item.title}
summary={item.summary}
imageUrl={item.thumbnailUrl}
dateLabel={dateLabel}
viewsLabel={item.metrics?.views !== undefined ? `${item.metrics.views.toLocaleString()} views` : undefined}
sourceLabel={item.source}
isExternal={true}
linkAttrs={{
"data-umami-event": "outbound_click",
"data-umami-event-target_id": targetId,
"data-umami-event-placement": placement,
"data-umami-event-target_url": item.url,
"data-umami-event-title": umamiTitle,
"data-umami-event-type": umamiType,
"data-umami-event-domain": domain || "unknown",
"data-umami-event-source": item.source,
"data-umami-event-ui_placement": "content_card",
}}
/>

View File

@@ -0,0 +1,63 @@
---
type Props = {
href: string;
title: string;
summary?: string;
imageUrl?: string;
dateLabel?: string;
viewsLabel?: string;
sourceLabel: string;
isExternal?: boolean;
linkAttrs?: Record<string, any>;
};
const {
href,
title,
summary,
imageUrl,
dateLabel,
viewsLabel,
sourceLabel,
isExternal,
linkAttrs,
} = Astro.props;
function truncate(s: string, n: number) {
const t = (s || "").trim();
if (!t) return "";
if (t.length <= n) return t;
// ASCII ellipsis to avoid encoding issues in generated HTML.
return `${t.slice(0, Math.max(0, n - 3)).trimEnd()}...`;
}
const summaryText = truncate(summary || "", 180);
---
<a
class="card"
href={href}
target={isExternal ? "_blank" : undefined}
rel={isExternal ? "noopener noreferrer" : undefined}
{...(linkAttrs || {})}
>
<div class="card-media">
{imageUrl ? <img src={imageUrl} alt="" loading="lazy" /> : <div class="card-placeholder" />}
</div>
<div class="card-body">
<div class="card-content">
<h3 class="card-title">{title}</h3>
{summaryText ? <p class="card-summary">{summaryText}</p> : null}
</div>
<div class="card-footer">
<span class="muted card-date">{dateLabel || ""}</span>
<span class="muted card-views" aria-hidden={viewsLabel ? undefined : "true"}>
{viewsLabel || ""}
</span>
<span class={`pill pill-${sourceLabel}`}>{sourceLabel}</span>
</div>
</div>
</a>

View File

@@ -9,6 +9,7 @@ export type ContentItem = {
source: ContentSource;
url: string;
title: string;
summary?: string;
publishedAt: string; // ISO-8601
thumbnailUrl?: string;
metrics?: ContentMetrics;

View File

@@ -8,16 +8,40 @@ export async function fetchPodcastRss(rssUrl: string, limit = 50): Promise<Conte
return normalizePodcastFeedItems(feed.items || [], limit);
}
function stripHtml(s: string) {
return (s || "")
.replace(/<[^>]+>/g, " ")
.replace(/\s+/g, " ")
.trim();
}
function truncate(s: string, n: number) {
const t = stripHtml(s);
if (!t) return "";
if (t.length <= n) return t;
return `${t.slice(0, Math.max(0, n - 1)).trimEnd()}`;
}
export function normalizePodcastFeedItems(items: any[], limit: number): ContentItem[] {
const out = (items || []).slice(0, limit).map((it) => {
const url = it.link || "";
const id = (it.guid || it.id || url).toString();
const publishedAt = (it.isoDate || it.pubDate || new Date(0).toISOString()).toString();
const summary = truncate(
(it.contentSnippet ||
it.summary ||
it.content ||
it["content:encoded"] ||
it.itunes?.subtitle ||
"").toString(),
240,
);
return {
id,
source: "podcast" as const,
url,
title: (it.title || "").toString(),
summary: summary || undefined,
publishedAt: new Date(publishedAt).toISOString(),
thumbnailUrl: (it.itunes?.image || undefined) as string | undefined,
};

View File

@@ -6,11 +6,26 @@ type YoutubeApiVideo = {
id: string;
url: string;
title: string;
summary?: string;
publishedAt: string;
thumbnailUrl?: string;
views?: number;
};
function stripHtml(s: string) {
return (s || "")
.replace(/<[^>]+>/g, " ")
.replace(/\s+/g, " ")
.trim();
}
function truncate(s: string, n: number) {
const t = stripHtml(s);
if (!t) return "";
if (t.length <= n) return t;
return `${t.slice(0, Math.max(0, n - 1)).trimEnd()}`;
}
export async function fetchYoutubeViaRss(channelId: string, limit = 20): Promise<ContentItem[]> {
const feedUrl = `https://www.youtube.com/feeds/videos.xml?channel_id=${encodeURIComponent(channelId)}`;
const parser = new Parser();
@@ -32,11 +47,16 @@ export function normalizeYoutubeRssFeedItems(items: any[], limit: number): Conte
const url = it.link || "";
const id = (it.id || url).toString();
const publishedAt = (it.isoDate || it.pubDate || new Date(0).toISOString()).toString();
const summary = truncate(
(it.contentSnippet || it.summary || it.content || it["content:encoded"] || "").toString(),
240,
);
return {
id,
source: "youtube" as const,
url,
title: (it.title || "").toString(),
summary: summary || undefined,
publishedAt: new Date(publishedAt).toISOString(),
thumbnailUrl: (it.enclosure?.url || undefined) as string | undefined,
};
@@ -47,7 +67,12 @@ export function normalizeYoutubeRssFeedItems(items: any[], limit: number): Conte
export function normalizeYoutubeApiVideos(
items: Array<{
id: string;
snippet: { title: string; publishedAt: string; thumbnails?: Record<string, { url: string }> };
snippet: {
title: string;
description?: string;
publishedAt: string;
thumbnails?: Record<string, { url: string }>;
};
statistics?: { viewCount?: string };
}>,
): ContentItem[] {
@@ -55,6 +80,7 @@ export function normalizeYoutubeApiVideos(
id: v.id,
url: `https://www.youtube.com/watch?v=${encodeURIComponent(v.id)}`,
title: v.snippet.title,
summary: v.snippet.description ? truncate(v.snippet.description, 240) : undefined,
publishedAt: new Date(v.snippet.publishedAt).toISOString(),
thumbnailUrl: v.snippet.thumbnails?.high?.url || v.snippet.thumbnails?.default?.url,
views: v.statistics?.viewCount ? Number(v.statistics.viewCount) : undefined,
@@ -65,6 +91,7 @@ export function normalizeYoutubeApiVideos(
source: "youtube",
url: v.url,
title: v.title,
summary: v.summary,
publishedAt: v.publishedAt,
thumbnailUrl: v.thumbnailUrl,
metrics: v.views !== undefined ? { views: v.views } : undefined,

View File

@@ -22,9 +22,9 @@ describe("blog umami event attributes", () => {
it("instruments blog post cards with deterministic target_id and placement", async () => {
const src = await read("src/components/BlogPostCard.astro");
expect(src).toContain('data-umami-event="click"');
expect(src).toContain("data-umami-event-target_id={targetId}");
expect(src).toContain("data-umami-event-placement={placement}");
expect(src).toContain('"data-umami-event": "click"');
expect(src).toContain('"data-umami-event-target_id": targetId');
expect(src).toContain('"data-umami-event-placement": placement');
expect(src).toContain("data-umami-event-target_url");
});
@@ -61,4 +61,3 @@ describe("blog umami event attributes", () => {
expect(categorySrc).toContain("targetId={`blog.category.${activeCategory.slug}.card.post.${p.slug}`}");
});
});

View File

@@ -0,0 +1,29 @@
import { readFile } from "node:fs/promises";
import path from "node:path";
import { describe, expect, it } from "vitest";
async function read(rel: string) {
return await readFile(path.join(process.cwd(), rel), "utf8");
}
describe("card layout", () => {
it("uses a shared StandardCard component for content and blog cards", async () => {
const contentCard = await read("src/components/ContentCard.astro");
expect(contentCard).toContain('import StandardCard from "./StandardCard.astro";');
expect(contentCard).toContain("<StandardCard");
const blogPostCard = await read("src/components/BlogPostCard.astro");
expect(blogPostCard).toContain('import StandardCard from "./StandardCard.astro";');
expect(blogPostCard).toContain("<StandardCard");
});
it("defines standardized card CSS (content band + footer bar)", async () => {
const css = await read("public/styles/global.css");
expect(css).toContain(".card-content");
expect(css).toContain("justify-content: space-between");
expect(css).toContain(".card-footer");
expect(css).toContain(".card-summary");
});
});

View File

@@ -31,7 +31,7 @@ describe("content link umami title/type attributes", () => {
it("adds title/type on blog post cards and pages links", async () => {
const cardSrc = await read("src/components/BlogPostCard.astro");
expect(cardSrc).toContain('data-umami-event-type="blog_post"');
expect(cardSrc).toContain('"data-umami-event-type": "blog_post"');
expect(cardSrc).toContain("data-umami-event-title");
const blogIndexSrc = await read("src/pages/blog/index.astro");
@@ -43,4 +43,3 @@ describe("content link umami title/type attributes", () => {
expect(blogPagesSrc).toContain("data-umami-event-title={p.title}");
});
});

View File

@@ -24,7 +24,7 @@ describe("umami event attributes", () => {
it("instruments content cards using outbound_click", async () => {
const src = await read("src/components/ContentCard.astro");
expect(src).toContain('data-umami-event="outbound_click"');
expect(src).toContain('"data-umami-event": "outbound_click"');
expect(src).toContain("data-umami-event-target_id");
expect(src).toContain("data-umami-event-domain");
});