Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
The seymour
If you use GitLab, that platform already has RSS feeds for public repositories. GitHub users have to use either RSSHub or gh-feed to do the same (note that you can host your own instance of either of those tools).
If you have more than a few repos and want to have their issues shunted to Feedly you could go manually enter them into the Feedly UI but that could be a pain, especially if “more than a few” is in the dozens or hundreds. But, we have R and can automate this. I’m providing an example for GitHub (since most readers art still stuck on that legacy platform) via the gh
package but the same methods can be done for GitLab using the gitlabr
First, we need to get the list of public GitHub issues you own:
library(gh) library(purrr) library(seymour) # git.sr.ht/~hrbrmstr/seymour, git[la|hu]b/hrbrmstr/seymour gh::gh( "/user/repos", visibility = "public", affiliation = "owner", sort = "created", direction = "desc", .token = Sys.getenv("GITHUB_PAT") # see ?devtools::github_pat ) -> gh_repos
If you have more than 30 the gh
package has a gh_next()
function which will enable you to paginate through all your repos.
Now you need to choose between gh-feed or RSSHub and prepend a special URL prefix to a user/repo
string to create a usable RSS URL. These are the prefixes:
We’ll use RSSHub for the remainder of the example.
Let’s do this first in base R. feedly_subscribe()
takes an RSS/Atom URL as a parameter and optionally supports supplying a title and a vector of Feedly category names to help organize your new addition. The title will be automagically intuited by Feedly if not supplied. We’ll iterate over the return value of our call to the GitHub API and add subscribe to each repo.
do.call( rbind.data.frame, lapply(sapply(gh_repos, "[[", "name"), function(.x) { feedly_subscribe( feed_url = sprintf("https://rsshub.app/github/%s/%s", "hrbrmstr", .x), category = "github issues" ) }) ) -> res
The res
value is a data frame that just has the resultant metadata about feed ids and where they’re located.
Here’s the same thing tidyverse-style:
map_chr(repos, "name") %>% sprintf("https://rsshub.app/github/%s/%s", "hrbrmstr", .) %>% map_df(feedly_subscribe, category = "github issues") -> res
FIN
There are two other addition to the seymour
package: feedly_subscriptions()
. This convenience function just pulls a data frame of feeds you subscribe to. The same data could be retrieved via the existing “stream” functions but this new function is faster and more targeted. The other one is feedly_categories()
which you can use to identify the categories you have. The same data could be retrieved via the “collections” functions, but this function — again — is faster and more targeted.
As usual, kick the tyres and file issues/PRs as needed.
R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.