-
-
Save JuniorJPDJ/aa26d4c61bc1e78af039e9a17bc17907 to your computer and use it in GitHub Desktop.
function getSearchRSS(query){ | |
let results = YouTube.Search.list('id, snippet', { | |
q: query, | |
maxResults: 50, | |
order: 'date' | |
}); | |
let encoded_query = encodeURIComponent(query) | |
let rss_url = ScriptApp.getService().getUrl() + "?" + encoded_query; | |
let channel = XmlService.createElement("channel") | |
.addContent(XmlService.createElement("title").addContent(XmlService.createText("Youtube Search RSS Feed: " + query))) | |
.addContent(XmlService.createElement("link").addContent(XmlService.createText("https://www.youtube.com/results?search_query=" + encoded_query))) | |
.addContent(XmlService.createElement("description").addContent(XmlService.createText("Youtube Search RSS feed for search query '" + query + "' updated on " + (new Date())))) | |
.addContent(XmlService.createElement("link", XmlService.getNamespace("atom", "http://www.w3.org/2005/Atom")).setAttribute("rel", "self").setAttribute("href", rss_url)); | |
for(let i = 0; i < results.items.length; ++i){ | |
let video = results.items[i]; | |
let yt_url = "https://www.youtube.com/watch?v=" + video.id.videoId; | |
channel.addContent(XmlService.createElement("item") | |
.addContent( | |
XmlService.createElement("title").addContent(XmlService.createText(video.snippet.title)) | |
).addContent( | |
XmlService.createElement("link").addContent(XmlService.createText(yt_url)) | |
).addContent( | |
XmlService.createElement("description").addContent(XmlService.createText(video.snippet.description)) | |
).addContent( | |
XmlService.createElement("pubDate").addContent(XmlService.createText(Utilities.formatDate(new Date(video.snippet.publishedAt), "EDT", "EEE, dd MMM yyyy HH:mm:ss Z"))) | |
).addContent( | |
XmlService.createElement("guid").addContent(XmlService.createText(yt_url)) | |
)) | |
} | |
return XmlService.getPrettyFormat().format(XmlService.createDocument( | |
XmlService.createElement("rss").setAttribute("version", "2.0").addContent(channel) | |
)); | |
} | |
function doGet(req) { | |
let query = decodeURIComponent(req.queryString); | |
return ContentService.createTextOutput(getSearchRSS(query)) | |
.setMimeType(ContentService.MimeType.RSS) | |
} |
@wisdomtooth have you enabled YouTube Data API like I mentioned in first comment?
Used it in my Fraidycat. Had to execute once in Google Apps Scripts to enable Youtube authorization. Thanks a lot. Any idea of similar tools for LinkedIn thread ?
I'm sorry but I have no idea about any @adcousin ;/
Anyway - It's cool that it was helpful ;D
Awesome! Thank you so much. What an useful script!
Can you tell me how to incorporate a YouTube operator into the query? I would like to retrieve only videos longer than 20 minutes. I can´t get it running by adding ", long" to the query though.
EDIT:
I also tried adding the parameter videoDuration: 'long' to the results string (based on https://developers.google.com/youtube/v3/docs/search/list). However, it seems to have zero effect.
I get
ReferenceError: YouTube is not defined (line 2, file "Code")