Advertisement
Guest User

Untitled

a guest
Jan 24th, 2017
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /* Credit: https://gist.github.com/thinkAmi */
  2.  
  3. function doGet() {
  4.  
  5.   var request = UrlFetchApp.fetch('http://radio.openstreetmap.club/podcast/');
  6.   var re = /http:\/\/radio.openstreetmap.club\/podcast\/2017\/(osmclub-\d+\.ogg)/mg;
  7.   var href = request.toString().match(re);
  8.  
  9.  
  10.   var rss = makeRss();
  11.  
  12.   rss.setTitle('RSS 2.0 Feed with Google Apps Script');
  13.   rss.setLink('http://example.com');
  14.   rss.setDescription('RSS 2.0 Feed');
  15.   rss.setLanguage('en');
  16.   rss.setAtomlink('http://example.com/rss');
  17.  
  18.   for (var i=0; i < href.length ; i++) {
  19.     var itemdate = /(\d{2})(\d{2})(\d{2})/.exec(href[i]);
  20.        
  21.     rss.addItem({title: 'Выпуск от ' + itemdate[3] + '.' + itemdate[2]  + '.20' + itemdate[1],
  22.                  link: href[i],
  23.                  //description: 'DESCRIPTION: ' + href[i],
  24.                  pubDate: new Date('20'+itemdate[1],itemdate[2] - 1,itemdate[3])
  25.                 })
  26.   }
  27.  
  28.   return ContentService.createTextOutput(rss.toString())
  29.   .setMimeType(ContentService.MimeType.RSS);
  30. }
  31.  
  32. var makeRss = function(){
  33.   var channel = XmlService.createElement('channel');
  34.   var root = XmlService.createElement('rss')
  35.   .setAttribute('version', '2.0')
  36.   .setAttribute('xmlnsatom', "http://www.w3.org/2005/Atom")
  37.   .addContent(channel);
  38.  
  39.   var title = '';
  40.   var link = '';
  41.   var description = '';
  42.   var language = '';
  43.   var atomlink = '';
  44.   var items = {};
  45.  
  46.   var createElement = function(element, text){
  47.     return XmlService.createElement(element).setText(text);
  48.   };
  49.  
  50.  
  51.   return {
  52.     setTitle: function(value){ title = value; },
  53.     setLink: function(value){ link = value; },
  54.     setDescription: function(value){ description = value; },
  55.     setLanguage: function(value){ language = value; },
  56.     setAtomlink: function(value){ atomlink = value; },
  57.    
  58.     addItem: function(args){
  59.       if (typeof args.title === 'undefined') { args.title = ''; }
  60.       if (typeof args.link === 'undefined') { args.link = ''; }
  61.       if (typeof args.description === 'undefined') { args.description = ''; }
  62.       if (!(args.pubDate instanceof Date)) { throw 'pubDate Missing'; }
  63.       if (typeof args.timezone === 'undefined') { args.timezone = "GMT"; }
  64.       if (typeof args.guid === 'undefined' && typeof args.link === 'undefined') { throw 'GUID ERROR'; }
  65.      
  66.      
  67.       var item = {
  68.         title: args.title,
  69.         link: args.link,
  70.         description: args.description,
  71.         pubDate: Utilities.formatDate(args.pubDate, args.timezone, "EEE, dd MMM yyyy HH:mm:ss Z"),
  72.         guid: args.guid === 'undefined' ? args.link : args.link
  73.       }
  74.      
  75.       items[item.guid] = item;
  76.     },
  77.    
  78.     toString: function(){
  79.       channel.addContent(XmlService.createElement("atomlink")
  80.                          .setAttribute('href', atomlink)
  81.                          .setAttribute('rel', 'self')
  82.                          .setAttribute('type', 'application/rss+xml')
  83.                         );
  84.      
  85.       channel.addContent(createElement('title', title));
  86.       channel.addContent(createElement('link', link));
  87.       channel.addContent(createElement('description', description));
  88.       channel.addContent(createElement('language', language));
  89.      
  90.      
  91.       for (var i in items) {
  92.         channel.addContent(
  93.           XmlService
  94.           .createElement('item')
  95.           .addContent(createElement('title', items[i].title))
  96.           .addContent(createElement('link', items[i].link))
  97.           .addContent(createElement('description', items[i].description))
  98.           .addContent(createElement('pubDate', items[i].pubDate))
  99.           .addContent(createElement('guid', items[i].guid))
  100.         );
  101.       }
  102.      
  103.       var document = XmlService.createDocument(root);
  104.       var xml = XmlService.getPrettyFormat().format(document)
  105.      
  106.       var result = xml.replace('xmlnsatom', 'xmlns:atom')
  107.       .replace('<atomlink href=','<atom:link href=');
  108.      
  109.       return result;
  110.     }
  111.   };
  112. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement