Today I did a live stream on how to build a Power Platform Youtube Library app using Power Apps Canvas App.

Recording of the live stream is here: Canvas App in 45 minutes - Recording

You can find all the formulas for the app below

/*** Screen OnVisible - Data sources *********************************************************************************************/
// Collect data sources - Youtube Channels https://www.youtube.com/channel/UCGfWR2ekfRFckLjev6eQYLg/channels
Concurrent(
    ClearCollect(colPowerAppsVideos, RSS.ListFeedItems("https://www.youtube.com/feeds/videos.xml?channel_id=UCGfWR2ekfRFckLjev6eQYLg")),
    ClearCollect(colPowerAutomateVideos, RSS.ListFeedItems("https://www.youtube.com/feeds/videos.xml?channel_id=UCG98S4lL7nwlN8dxSF322bA")),
    ClearCollect(colPowerBIVideos, RSS.ListFeedItems("https://www.youtube.com/feeds/videos.xml?channel_id=UCy--PYvwBwAeuYaR8JLmrfg")),
    ClearCollect(colPowerVAVideos, RSS.ListFeedItems("https://www.youtube.com/feeds/videos.xml?channel_id=UCn8PsBlVsGUt8J3tZCKsMPA"))
);

// Create Videos collection
Clear(colVideos);
ForAll(colPowerAppsVideos, Collect(colVideos,{ url: primaryLink, date: publishDate, image: PowerAppsLogo.Image, title: title, cat: "Power Apps", age: DateDiff(DateValue(publishDate), Now(), Hours) }));
ForAll(colPowerAutomateVideos, Collect(colVideos,{ url: primaryLink, date: publishDate, image: PowerAutomateLogo.Image, title: title, cat: "Power Automate", age: DateDiff(DateValue(publishDate), Now(), Hours) }));
ForAll(colPowerBIVideos, Collect(colVideos,{ url: primaryLink, date: publishDate, image: PowerBILogo.Image, title: title, cat: "Power BI", age: DateDiff(DateValue(publishDate), Now(), Hours) }));
ForAll(colPowerVAVideos, Collect(colVideos,{ url: primaryLink, date: publishDate, image: PowerVALogo.Image, title: title, cat: "Power VA", age: DateDiff(DateValue(publishDate), Now(), Hours) }));

/*** Screen OnVisible - Filters **************************************************************************************************/
// Filter collection for Gallery
ClearCollect(filter, { cat: "Power Apps" },{ cat: "Power Automate" },{ cat: "Power BI" },{ cat: "Power VA" });

/*** Screen OnVisible - Variables ************************************************************************************************/
// Variables for Buttons
Set(PowerApps, true);
Set(PowerAutomate, true);
Set(PowerBI, true);
Set(PowerVA, true);

/*** Gallery *********************************************************************************************************************/
// Items
Sort(Filter(colVideos, cat in Concat(filter, cat, ",")), date, Descending)
Sort(Filter(colVideos, date, Descending)

// Image - Logo
ThisItem.image

// Label - Category
ThisItem.cat

// Videos
ThisItem.url

// Label - title
Substitute(ThisItem.title, "%20", " ")

// Label - Age
If(ThisItem.age < 24, ThisItem.age & " hours ago", If(ThisItem.age < 365 * 24, Round(ThisItem.age / 24, 0) & " days ago", Round(ThisItem.age / 24 / 365, 1) & " years ago"))

/*** Buttons *********************************************************************************************************************/
// Power Apps - OnSelect
If(PowerApps, Remove(filter, { cat: "Power Apps" }),Collect(filter, { cat: "Power Apps" }));
Set(PowerApps, !PowerApps);

// Power Apps - Transparency
If(PowerApps, 0, 0.6)

// Power Automate - OnSelect
If(PowerAutomate, Remove(filter, { cat: "Power Automate" }),Collect(filter, { cat: "Power Automate" }));
Set(PowerAutomate, !PowerAutomate);

// Power Automate - Transparency
If(PowerAutomate, 0, 0.6)

// Power BI - OnSelect
If(PowerBI, Remove(filter, { cat: "Power BI" }),Collect(filter, { cat: "Power BI" }));
Set(PowerBI, !PowerBI);

// Power BI - Transparency
If(PowerBI, 0, 0.6)

// Power Virtual Agent
If(PowerVA, Remove(filter, { cat: "Power VA" }),Collect(filter, { cat: "Power VA" }));
Set(PowerVA, !PowerVA);

// Power VA - Transparency
If(PowerVA, 0, 0.6)