From 3e81e576d0740e1e728c1a1d12aa579656a93f19 Mon Sep 17 00:00:00 2001 From: avahoffman Date: Thu, 21 May 2026 13:26:51 -0400 Subject: [PATCH 1/5] Accommodate posit updates --- .Rbuildignore | 2 ++ .gitignore | 1 + 2 files changed, 3 insertions(+) diff --git a/.Rbuildignore b/.Rbuildignore index 91114bf2..ea84996b 100644 --- a/.Rbuildignore +++ b/.Rbuildignore @@ -1,2 +1,4 @@ ^.*\.Rproj$ ^\.Rproj\.user$ +^\.positai$ +^\.claude$ diff --git a/.gitignore b/.gitignore index 094bf0cb..3250893c 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ spell_check_results.tsv .httr-oauth docker/git_token.txt .Rproj.user +.positai From 39f027f5aa0f469b6d12ea279ea9b1197a38d2d1 Mon Sep 17 00:00:00 2001 From: avahoffman Date: Thu, 21 May 2026 13:47:05 -0400 Subject: [PATCH 2/5] Add date functionality --- index.Rmd | 8 ++++++++ scripts/query_youtube.R | 2 ++ scripts/render_youtube_list.R | 11 ++++++++--- 3 files changed, 18 insertions(+), 3 deletions(-) diff --git a/index.Rmd b/index.Rmd index 1943a3d9..23fd6cd3 100644 --- a/index.Rmd +++ b/index.Rmd @@ -61,6 +61,14 @@ source("scripts/render_youtube_list.R") knitr::kable(make_youtube_table("resources/youtube_demos_data.csv"), format = "html") ``` +### AnVIL Workshops {-} + +```{r, echo = FALSE, message = FALSE, warning = FALSE} +source("scripts/render_youtube_list.R") + +knitr::kable(make_youtube_table("resources/youtube_workshop_data.csv"), format = "html") +``` + ### AnVIL WDL {-} ```{r, echo = FALSE, message = FALSE, warning = FALSE} diff --git a/scripts/query_youtube.R b/scripts/query_youtube.R index d3cab0b0..9175b238 100644 --- a/scripts/query_youtube.R +++ b/scripts/query_youtube.R @@ -34,6 +34,7 @@ shorts_playlist_id <- "PL6aYJ_0zJ4uCABkMngSYjPo_3c-nUUmio" demos_playlist_id <- "PL6aYJ_0zJ4uC978C57P3TgAAfB38uy58E" getting_started_playlist_id <- "PL6aYJ_0zJ4uD6SSVIuES9b79-00qvecHb" wdl_playlist_id <- "PL6aYJ_0zJ4uB1dXNWtmisnX51hMSxrE_j" +virtual_workshops_id <- "PL6aYJ_0zJ4uBbLD-Yf5QOcQMMVY_XuftY" gdscn_sars_playlist_id <- "PLzgm426KgvriINOUpgrBjTZXHIDZXOOz0" gdscn_soil_project_playlist_id <- "PLzgm426KgvrhheloBdlSWshM9v2VvJEcX" @@ -159,6 +160,7 @@ write_playlist_details(playlist_id = shorts_playlist_id, outfile = "youtube_shor write_playlist_details(playlist_id = demos_playlist_id, outfile = "youtube_demos_data.csv") write_playlist_details(playlist_id = getting_started_playlist_id, outfile = "youtube_getting_started_data.csv") write_playlist_details(playlist_id = wdl_playlist_id, outfile = "youtube_anvil_wdl_data.csv") +write_playlist_details(playlist_id = virtual_workshops_id, outfile = "youtube_workshop_data.csv") write_playlist_details(playlist_id = gdscn_sars_playlist_id, outfile = "youtube_gdscn_sars_data.csv") write_playlist_details(playlist_id = gdscn_soil_project_playlist_id, outfile = "youtube_gdscn_soil_project_data.csv") \ No newline at end of file diff --git a/scripts/render_youtube_list.R b/scripts/render_youtube_list.R index ed08a7a9..7f1405cb 100644 --- a/scripts/render_youtube_list.R +++ b/scripts/render_youtube_list.R @@ -20,11 +20,15 @@ make_youtube_table <- function(infile) { df <- df %>% filter(status.privacyStatus == "public") %>% # Don't print unlisted videos - select(snippet.title, snippet.description, snippet.playlistId, snippet.resourceId.videoId) + select(snippet.title, snippet.publishedAt, snippet.description, snippet.playlistId, snippet.resourceId.videoId) # Create actual url of video df <- df %>% mutate(`Video` = paste0("[",snippet.title,"](https://www.youtube.com/watch?v=", snippet.resourceId.videoId, "&list=", snippet.playlistId, ")")) + + # Create date posted + df <- df %>% + mutate(Date = format(snippet.publishedAt, "%Y-%m-%d")) # Extract slides link df$`Google Slides` <- @@ -35,13 +39,14 @@ make_youtube_table <- function(infile) { # Create Google Slides link w/ markdown magic df <- df %>% mutate(`Google Slides` = paste0("[Go to slides](", `Google Slides`, ")")) %>% - select(Video, `Google Slides`) %>% + select(Video, Date, `Google Slides`) %>% mutate(`Google Slides` = case_when(`Google Slides` == "[Go to slides](character(0))" ~ "N/A", # Often, there are no slides on the video description `Google Slides` == "[Go to slides](NA)" ~ "N/A", TRUE ~ `Google Slides`)) # Remove duplicates if necessary - df <- distinct(df) + df <- distinct(df) %>% + arrange(desc(Date)) return(df) }, From 1c7ecea06d2dd5069591784e1f6d9f007bb61d2b Mon Sep 17 00:00:00 2001 From: avahoffman Date: Thu, 21 May 2026 13:53:56 -0400 Subject: [PATCH 3/5] Update GDSCN yt link --- index.Rmd | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/index.Rmd b/index.Rmd index 23fd6cd3..9b8099c4 100644 --- a/index.Rmd +++ b/index.Rmd @@ -79,7 +79,7 @@ knitr::kable(make_youtube_table("resources/youtube_anvil_wdl_data.csv"), format ## GDSCN {-} -Check out the GDSCN YouTube channel: https://www.youtube.com/@genomicdatasciencecommunit2514 +Check out the GDSCN YouTube channel: https://www.youtube.com/@genomicDScommunity ### SARS with Galaxy on AnVIL {-} From 5ef56c950844a311ec66ef74cf8838fe562d4f9b Mon Sep 17 00:00:00 2001 From: avahoffman Date: Thu, 21 May 2026 13:57:44 -0400 Subject: [PATCH 4/5] Switch to pub date --- scripts/render_youtube_list.R | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/scripts/render_youtube_list.R b/scripts/render_youtube_list.R index 7f1405cb..90a3622a 100644 --- a/scripts/render_youtube_list.R +++ b/scripts/render_youtube_list.R @@ -20,7 +20,7 @@ make_youtube_table <- function(infile) { df <- df %>% filter(status.privacyStatus == "public") %>% # Don't print unlisted videos - select(snippet.title, snippet.publishedAt, snippet.description, snippet.playlistId, snippet.resourceId.videoId) + select(snippet.title, contentDetails.videoPublishedAt, snippet.description, snippet.playlistId, snippet.resourceId.videoId) # Create actual url of video df <- df %>% @@ -28,7 +28,7 @@ make_youtube_table <- function(infile) { # Create date posted df <- df %>% - mutate(Date = format(snippet.publishedAt, "%Y-%m-%d")) + mutate(Date = format(contentDetails.videoPublishedAt, "%Y-%m-%d")) # Extract slides link df$`Google Slides` <- From 3335e7a09b01d434d4042aa8dbd81076192cca41 Mon Sep 17 00:00:00 2001 From: avahoffman Date: Thu, 21 May 2026 14:14:25 -0400 Subject: [PATCH 5/5] Rename to slides, and allow drive pdf links --- scripts/render_youtube_list.R | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/scripts/render_youtube_list.R b/scripts/render_youtube_list.R index 90a3622a..00bcc41c 100644 --- a/scripts/render_youtube_list.R +++ b/scripts/render_youtube_list.R @@ -31,18 +31,18 @@ make_youtube_table <- function(infile) { mutate(Date = format(contentDetails.videoPublishedAt, "%Y-%m-%d")) # Extract slides link - df$`Google Slides` <- + df$Slides <- df$snippet.description %>% - str_extract_all("https://docs.google.com/presentation/d/.*") %>% + str_extract_all("https://docs.google.com/presentation/d/.*|https://drive.google.com/file/d/.*") %>% str_remove_all("\\.$") # Remove trailing period # Create Google Slides link w/ markdown magic df <- df %>% - mutate(`Google Slides` = paste0("[Go to slides](", `Google Slides`, ")")) %>% - select(Video, Date, `Google Slides`) %>% - mutate(`Google Slides` = case_when(`Google Slides` == "[Go to slides](character(0))" ~ "N/A", # Often, there are no slides on the video description - `Google Slides` == "[Go to slides](NA)" ~ "N/A", - TRUE ~ `Google Slides`)) + mutate(Slides = paste0("[Go to slides](", Slides, ")")) %>% + select(Video, Date, Slides) %>% + mutate(Slides = case_when(Slides == "[Go to slides](character(0))" ~ "N/A", # Often, there are no slides on the video description + Slides == "[Go to slides](NA)" ~ "N/A", + TRUE ~ Slides)) # Remove duplicates if necessary df <- distinct(df) %>%