Compare commits

..

No commits in common. "feature/itunes-rss" and "main" have entirely different histories.

4 changed files with 11 additions and 106 deletions

View File

@ -16,24 +16,21 @@ if string.find(ngx.var.host, "panamaracing.club") then
name = "Panama Racing Club Archive", name = "Panama Racing Club Archive",
url = "panamaracing.club", url = "panamaracing.club",
css = "panamaracing.css", css = "panamaracing.css",
header = "panamaracing.club_header.png", header = "panamaracing.club_header.png"
feed = "panamaracing.club"
} }
elseif string.find(ngx.var.host, "videohotmix.net") then elseif string.find(ngx.var.host, "videohotmix.net") then
page_titles = { page_titles = {
name = "Hotmix Video Archive", name = "Hotmix Video Archive",
url = "videohotmix.net", url = "videohotmix.net",
css = "videohotmix.css", css = "videohotmix.css",
header = "videohotmix.net-logo.png", header = "videohotmix.net-logo.png"
feed = "videohotmix"
} }
elseif string.find(ngx.var.host, "hotmixxx.com") then elseif string.find(ngx.var.host, "hotmixxx.com") then
page_titles = { page_titles = {
name = "Hotmix Video Archive", name = "Hotmix Video Archive",
url = "videohotmix.net", url = "videohotmix.net",
css = "videohotmix.css", css = "videohotmix.css",
header = "videohotmix.net-logo.png", header = "videohotmix.net-logo.png"
feed = "hotmixxx"
} }
else else
page_titles = { page_titles = {
@ -52,7 +49,7 @@ app:get("/latest.json", function(self)
return handlers.Latesthandler(self) return handlers.Latesthandler(self)
end) end)
app:get("/latest.rss", function(self) app:get("/latest.xml", function(self)
self.titles = page_titles self.titles = page_titles
return handlers.RSShandler(self) return handlers.RSShandler(self)
end) end)

View File

@ -7,15 +7,12 @@ local hotmixes = autoload("hotmixes")
local function RSShandler(self) local function RSShandler(self)
local path = config.get().mount .. self.titles.url local path = config.get().mount .. self.titles.url
local latest_path, latest_name, latest_size, latest_date = hotmixes.utils.rss_latest( path ) local latest_path, latest_name = hotmixes.utils.these_latest( path )
local host = self.req.parsed_url.scheme .. '://' .. self.req.parsed_url.host local host = self.req.parsed_url.scheme .. '://' .. self.req.parsed_url.host
self.datapath = host .. '/data/' .. self.titles.url .. '/' self.datapath = host .. '/data/' .. self.titles.url .. '/'
self.latestpath = latest_path self.latestpath = latest_path
self.latestname = latest_name self.latestname = latest_name
self.latestsize = latest_size
self.latestdate = latest_date
self.datenow = hotmixes.utils.rss_date_now()
return { content_type = "application/rss+xml", layout = require "views.rss" } return { content_type = "application/rss+xml", layout = require "views.rss" }
end end

View File

@ -26,7 +26,6 @@ local data_path = data_dir .. request_path
local type_image = { jpg=true, jpeg=true, png=true, gif=true } local type_image = { jpg=true, jpeg=true, png=true, gif=true }
local type_media = { mp3=true, flac=true, wav=true, mp4=true } local type_media = { mp3=true, flac=true, wav=true, mp4=true }
local type_audio = { mp3=true, flac=true, wav=true }
local type_allowed = { jpg=true, jpeg=true, png=true, gif=true, mp3=true, flac=true, wav=true, mp4=true } local type_allowed = { jpg=true, jpeg=true, png=true, gif=true, mp3=true, flac=true, wav=true, mp4=true }
local utils = {} local utils = {}
@ -61,19 +60,6 @@ utils['latest_files'] = function( directory )
return t return t
end end
utils['latest_audio'] = function( directory )
local i, t, popen = 0, {}, io.popen
local pfile = popen('find -L "'..directory..'" -type f ! -name \'*.filepart\' ! -name \'*.mp4\' ! -name \'*.png\' ! -name \'*.jpg\' ! -name \'*.jpeg\' ! -name \'*.gif\' -printf \'%C@ %p\n\'| sort -nr | head -7 | cut -f2- -d" "| sed s:"'..directory..'/"::')
for filename in pfile:lines() do
if utils.match_ext ( filename, type_audio ) then
i = i + 1
t[i] = filename
end
end
pfile:close()
return t
end
utils['these_files'] = function( path ) utils['these_files'] = function( path )
local files, dirs, images = {}, {}, {} local files, dirs, images = {}, {}, {}
for file in lfs.dir( path ) do for file in lfs.dir( path ) do
@ -134,51 +120,6 @@ utils['these_latest'] = function( path )
return latest_path, latest_name return latest_path, latest_name
end end
utils['rss_latest'] = function( path )
local latest_path, latest_name, latest_size, latest_date = {}, {}, {}, {}
for i, file_path in ipairs( utils.latest_audio( path ) ) do
local popen = io.popen
-- get the size of the file
local psize = popen('wc -c <'..path..'/'..file_path)
for size in psize:lines() do
ngx.log(ngx.INFO, size)
table.insert( latest_size, size)
end
psize:close()
-- get the date of the file
local pdate = popen('date -d @$(stat -c "%Y" '..path..'/'..file_path..') "+%a, %-d %b %Y %H:%M:%S %Z"')
for date in pdate:lines() do
table.insert( latest_date, date )
end
pdate:close()
local escpath = hotesc(file_path)
table.insert( latest_path, escpath )
local temp = ""
local result = ""
for i = file_path:len(), 1, -1 do
if file_path:sub(i,i) ~= "/" then
temp = temp..file_path:sub(i,i)
else
break
end
end
for j = temp:len(), 1, -1 do
result = result..temp:sub(j,j)
end
table.insert( latest_name, result )
end
return latest_path, latest_name, latest_size, latest_date
end
utils['total_files_dir'] = function( path ) utils['total_files_dir'] = function( path )
local i, t, popen = 0, {}, io.popen local i, t, popen = 0, {}, io.popen
local pfile = popen('find "'..path..'" -type f | wc -l') local pfile = popen('find "'..path..'" -type f | wc -l')
@ -190,13 +131,4 @@ utils['total_files_dir'] = function( path )
return t return t
end end
utils['rss_date_now'] = function()
local popen = io.popen
local pdate = popen('date "+%a, %-d %b %Y %H:%M:%S %Z"')
for date in pdate:lines() do
return date
end
pdate:close()
end
return utils return utils

View File

@ -1,38 +1,17 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="ISO-8859-1" ?>
<rss version="2.0" <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:content="http://purl.org/rss/1.0/modules/content/">
<channel> <channel>
<atom:link href="https://<%= titles['url'] %>/latest.rss" <atom:link href="https://<%= titles['url'] %>/latest.xml" rel="self" type="application/rss+xml" />
rel="self" type="application/rss+xml" />
<title><%= titles['name'] %></title> <title><%= titles['name'] %></title>
<link>https://<%= titles['url'] %></link> <link>https://<%= titles['url'] %></link>
<language>en-us</language> <description>Latest uploads</description>
<itunes:author>Intergalactic FM</itunes:author>
<itunes:owner>
<itunes:name>Intergalactic FM</itunes:name>
</itunes:owner>
<description>Latest audio uploads on <%= titles['name'] %></description>
<itunes:summary>Latest audio uploads on <%= titles['name'] %></itunes:summary>
<itunes:explicit>false</itunes:explicit>
<itunes:category text="Music">
<itunes:category text="Electronic"/>
</itunes:category>
<itunes:image href="https://intergalactic.fm/themes/custom/ifm/logo.svg"/>
<lastBuildDate><%= datenow %></lastBuildDate>
<podcast:guid>intergalactic-fm-<%= titles['feed'] %>-feed</podcast:guid>
<% for i, file in ipairs(latestpath) do %> <% for i, file in ipairs(latestpath) do %>
<item> <item>
<title><%= latestname[i] %></title> <title><%= latestname[i] %></title>
<enclosure url="<%= datapath .. file %>" length="<%= latestsize[i] %>" type="audio/mpeg"/> <link><%= datapath .. file:gsub("#", "%%23") %></link>
<guid><%= datapath .. file %></guid>
<pubDate><%= latestdate[i] %></pubDate>
<description><![CDATA[<%= latestname[i] %>]]></description> <description><![CDATA[<%= latestname[i] %>]]></description>
<itunes:explicit>false</itunes:explicit> <guid><%= datapath .. file:gsub("#", "%%23") %></guid>
</item> </item>
<% end %> <% end %>
</channel> </channel>