mirror of
https://github.com/neocities/neocities.git
synced 2025-04-24 17:22:35 +02:00
use nokogiri for rss, return better results, index for speed
This commit is contained in:
parent
7788437c33
commit
fd15fd6856
5 changed files with 32 additions and 22 deletions
1
Gemfile
1
Gemfile
|
@ -52,7 +52,6 @@ gem 'facter', require: nil
|
||||||
gem 'maxmind-db'
|
gem 'maxmind-db'
|
||||||
gem 'json', '>= 2.3.0'
|
gem 'json', '>= 2.3.0'
|
||||||
gem 'nokogiri'
|
gem 'nokogiri'
|
||||||
gem 'rss'
|
|
||||||
gem 'webp-ffi'
|
gem 'webp-ffi'
|
||||||
gem 'rszr'
|
gem 'rszr'
|
||||||
gem 'zip_tricks'
|
gem 'zip_tricks'
|
||||||
|
|
|
@ -254,8 +254,6 @@ GEM
|
||||||
netrc (~> 0.8)
|
netrc (~> 0.8)
|
||||||
rexml (3.2.6)
|
rexml (3.2.6)
|
||||||
rinku (2.0.6)
|
rinku (2.0.6)
|
||||||
rss (0.3.0)
|
|
||||||
rexml
|
|
||||||
rszr (1.3.0)
|
rszr (1.3.0)
|
||||||
ruby-progressbar (1.13.0)
|
ruby-progressbar (1.13.0)
|
||||||
ruby2_keywords (0.0.5)
|
ruby2_keywords (0.0.5)
|
||||||
|
@ -403,7 +401,6 @@ DEPENDENCIES
|
||||||
redis-namespace
|
redis-namespace
|
||||||
rest-client
|
rest-client
|
||||||
rinku
|
rinku
|
||||||
rss
|
|
||||||
rszr
|
rszr
|
||||||
rubyzip
|
rubyzip
|
||||||
sanitize
|
sanitize
|
||||||
|
|
|
@ -2,7 +2,7 @@ get '/site/:username.rss' do |username|
|
||||||
site = Site[username: username]
|
site = Site[username: username]
|
||||||
halt 404 if site.nil?
|
halt 404 if site.nil?
|
||||||
content_type :xml
|
content_type :xml
|
||||||
site.to_rss.to_xml
|
site.to_rss
|
||||||
end
|
end
|
||||||
|
|
||||||
get '/site/:username/?' do |username|
|
get '/site/:username/?' do |username|
|
||||||
|
@ -374,4 +374,4 @@ post '/site/:username/confirm_phone' do
|
||||||
|
|
||||||
# Will redirect to / automagically if phone was verified
|
# Will redirect to / automagically if phone was verified
|
||||||
redirect "/site/#{current_site.username}/confirm_phone"
|
redirect "/site/#{current_site.username}/confirm_phone"
|
||||||
end
|
end
|
||||||
|
|
9
migrations/123_events_rss_index.rb
Normal file
9
migrations/123_events_rss_index.rb
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
Sequel.migration do
|
||||||
|
up {
|
||||||
|
DB.add_index :events, [:created_at, :site_id, :site_change_id, :is_deleted], name: :events_rss_index, order: {created_at: :desc}
|
||||||
|
}
|
||||||
|
|
||||||
|
down {
|
||||||
|
DB.drop_index :events, :rss
|
||||||
|
}
|
||||||
|
end
|
|
@ -1,6 +1,5 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
require 'tilt'
|
require 'tilt'
|
||||||
require 'rss'
|
|
||||||
require 'nokogiri'
|
require 'nokogiri'
|
||||||
require 'pathname'
|
require 'pathname'
|
||||||
require 'zlib'
|
require 'zlib'
|
||||||
|
@ -1526,24 +1525,30 @@ class Site < Sequel::Model
|
||||||
end
|
end
|
||||||
|
|
||||||
def to_rss
|
def to_rss
|
||||||
RSS::Maker.make("2.0") do |m|
|
site_change_events = events_dataset.exclude(is_deleted: true).exclude(site_change_id: nil).order(:created_at.desc).limit(10).all
|
||||||
m.channel.title = title
|
|
||||||
m.channel.link = uri
|
|
||||||
m.channel.description = "Site feed for #{title}"
|
|
||||||
m.image.url = sharing_screenshot_url
|
|
||||||
m.image.title = title
|
|
||||||
|
|
||||||
|
Nokogiri::XML::Builder.new(encoding: 'UTF-8') do |xml|
|
||||||
|
xml.rss('version' => '2.0') {
|
||||||
|
xml.channel {
|
||||||
|
xml.title title
|
||||||
|
xml.link uri
|
||||||
|
xml.description "Site feed for #{title}"
|
||||||
|
xml.image {
|
||||||
|
xml.url sharing_screenshot_url
|
||||||
|
xml.title title
|
||||||
|
}
|
||||||
|
|
||||||
latest_events.each do |event|
|
site_change_events.each do |event|
|
||||||
if event.site_change_id
|
xml.item {
|
||||||
m.items.new_item do |i|
|
xml.title "#{title} has been updated."
|
||||||
i.title = "#{title} has been updated."
|
xml.link "https://neocities.org/site/#{username}?event_id=#{event.id.to_s}"
|
||||||
i.link = "https://neocities.org/site/#{username}?event_id=#{event.id.to_s}"
|
xml.pubDate event.created_at.rfc822
|
||||||
i.pubDate = event.created_at
|
xml.guid event.id.to_s
|
||||||
|
}
|
||||||
end
|
end
|
||||||
end
|
}
|
||||||
end
|
}
|
||||||
end
|
end.to_xml
|
||||||
end
|
end
|
||||||
|
|
||||||
def empty_index?
|
def empty_index?
|
||||||
|
|
Loading…
Add table
Reference in a new issue