#!/usr/bin/env ruby require 'date' require 'json' MEDIA = '/srv/media/' SOCIAL = '/srv/social/outbox/object/note/' WWW = '/srv/www/pdp8-test/' items = [] %w[music videos].each do |cat| Dir[File.join(MEDIA, cat, '*')].each do |dir| next unless File.basename(dir).match(/^\d/) date = File.basename(dir).split('_')[0] updated = Date.parse(date) items << { title: File.basename(dir).split('_')[1..-1].join(' '), link: File.join('https://pdp8.info', cat + '.html#' + date), guid: File.join('https://pdp8.info', cat + '.html#' + date), description: '', pubDate: updated.httpdate } end end # duplication of music/video posts? # Dir[File.join(SOCIAL, '*.json')].each do |json| # note = JSON.parse(File.read(json)) # next unless note['attributedTo'] == 'https://social.pdp8.info/pdp8' and note['to'].include?('https://www.w3.org/ns/activitystreams#Public') # # # TODO: add enclosures for attachments # # tags # items << { # title: note['published'], # link: 'https://pdp8.info/social/create.html#' + note['published'], # guid: note['id'], # description: '', # pubDate: Date.parse(note['published']).httpdate # } # end date = Dir[File.join(MEDIA, 'pictures', '*.jpeg')].last.split('_')[0] updated = Date.parse(date) items << { title: 'pictures', link: 'https://pdp8.info/pictures.html', guid: 'https://pdp8.info/pictures.html', pubDate: updated.httpdate } xml = [' pdp8 https://pdp8.info music, pictures and videos en '] date = DateTime.now xml << " #{date.httpdate}" items.sort_by { |i| i['pubDate'] }.each do |item| xml << ' ' item.each do |k, v| xml << " <#{k}>#{v}" end xml << ' ' end xml << ' ' File.open(File.join(WWW, 'rss.xml'), 'w+') { |f| f.puts xml.join("\n") }