RSS: create rss.xml, for wip, or www server with "X" ready items

This commit is contained in:
Cyrille L 2022-12-03 14:21:25 +01:00
parent 4e864d0d1e
commit 9483f72170
6 changed files with 121 additions and 6 deletions

View File

@ -34,7 +34,7 @@ Directories that must be writeable by Tyto
# Import needed libs and tyto's libs # Import needed libs and tyto's libs
import sys import sys
sys.path.insert(0, '/var/lib/tyto/program') sys.path.insert(0, '/var/lib/tyto/program')
import check, wip, domain, log, sidebar import check, wip, domain, log, sidebar, publish
#=======# #=======#
# Tools # # Tools #
@ -54,7 +54,8 @@ def tyto_args(ta):
'wip' : wip.manage_wip, 'wip' : wip.manage_wip,
'domain' : domain.manage_domain, 'domain' : domain.manage_domain,
'log' : log.manage_log, 'log' : log.manage_log,
'sidebar' : sidebar.manage_sidebar 'sidebar' : sidebar.manage_sidebar,
'publish' : publish.manage_publish
} }
# Dict for Options # Dict for Options

View File

@ -55,6 +55,9 @@ def post_IDs(file_post):
print(':< Unused argument file') print(':< Unused argument file')
sys.exit(1) sys.exit(1)
global post_srv
post_srv = file_post.replace('.tyto','.html')
# Check if file exists or exit # Check if file exists or exit
global post_uri global post_uri
post_uri = '%s%s'%(domain.domain_articles, file_post) post_uri = '%s%s'%(domain.domain_articles, file_post)
@ -73,7 +76,7 @@ def post_IDs(file_post):
post_url = '%s%s/%s'%( post_url = '%s%s/%s'%(
domain.domain_protocol, domain.domain_name, file_html domain.domain_protocol, domain.domain_name, file_html
) )
# From argument file_post # From argument file_post
# Set WEB link prefix. Count / in uri # Set WEB link prefix. Count / in uri
global weburi global weburi
@ -1223,6 +1226,7 @@ def create_DB(post_db):
'post_db = "%s"'%post_db, 'post_db = "%s"'%post_db,
'post_tmp = "%s"'%post_tmp, 'post_tmp = "%s"'%post_tmp,
'post_url = "%s"'%post_url, 'post_url = "%s"'%post_url,
'post_srv = "%s"'%post_srv,
'\n# Article Status', '\n# Article Status',
'post_chk = (\'%s\', \'%s\')'%(hash_chk,time_chk), 'post_chk = (\'%s\', \'%s\')'%(hash_chk,time_chk),
'post_wip = (\'%s\', \'%s\')'%(hash_wip,time_wip), 'post_wip = (\'%s\', \'%s\')'%(hash_wip,time_wip),

View File

@ -0,0 +1,9 @@
#!/usr/bin/env python3
import rss, domain
def manage_publish(file_post, Force):
# At ending process...
# Create rss.xml for www
rss.find_www(domain.srv_www, 'www')

View File

@ -0,0 +1,102 @@
#!/usr/bin/env python3
# Name: Tyto - Littérateur
# Type: Global functions for HTML page
# Description: Create RSS for wip, publish
# file: rss.py
# Folder: /var/lib/tyto/programs/
# By echolib (XMPP: im@echolib.re)
# License: GNU AFFERO GENERAL PUBLIC LICENSE Version 3, 19 November 2007
#------------
# funny stats
#------------
# lines:
# functions:
# comments:
#----------------------------------------------------------------------
#**********************************************************************
import os, glob
import domain, html, log
rss_headers = '<?xml version="1.0" encoding="utf-8"?>\n' + \
'<rss version="2.0">\n' + \
' <channel>\n' + \
' <title>%s %s %s %s Flux RSS 2.0</title>\n'%(
domain.domain_title,
domain.sep_titles,
domain.domain_name,
domain.sep_titles
) + \
' <link>%s</link>\n'%domain.domain_url + \
' <description>%s</description>\n'%domain.domain_about + \
' <language>%s</language>\n'%domain.domain_lang + \
' <lastBuildDate>%s</lastBuildDate>\n'%log.nowdate() + \
' <copyright>%s</copyright>\n'%domain.domain_license + \
' <webMaster>%s</webMaster>\n'%domain.domain_mail + \
' <generator>Tyto - Littérateur</generator>\n'
#==================================#
# Create RSS.xmp at ending process #
# srv: srv_www or srv_wip #
#----------------------------------#
def find_www(srv, srv_type):
# Create sidebar.html
rss_file = srv + 'rss.xml'
file = open(rss_file, 'w')
file.write(rss_headers)
file.close()
# Get conf file, sort by ctime, and reverse
files = glob.glob("%s*.conf"%domain.domain_db)
files.sort(key=lambda x: os.path.getctime(x))
files.reverse() # last created first
# Check db_file if article is in www
rss_item = 0
for db_file in files:
exec(open(db_file).read(),globals())
# Check srv_type (www or wip)
if srv_type == 'www': hash_srv = post_www
elif srv_type == 'wip': hash_srv = post_wip
post_uri_www = '%s%s'%(srv, post_srv)
if not hash_srv[0]:
continue
if not os.path.exists('%s%s'%(srv, post_srv)):
msg_log = 'RSS > Unused Article in www: %s'%post_uri_www
log.append_f(domain.tyto_logs, msg_log, 1)
continue
rss_item += 1
rss_post = ' <item>\n' + \
' <title>%s</title>\n'%post_title + \
' <link>%s</link>\n'%post_url + \
' <guid>%s</guid>\n'%post_url + \
' <pubDate>%s</pubDate>'%hash_srv[1] + \
' <description>%s</description>\n'%post_about + \
' <author>%s</author>\n' + \
' </item>'
file = open(rss_file, 'a')
file.write(rss_post)
file.close()
# Close tags
file = open(rss_file, 'a')
file.write(' </channel>\n</rss>')
file.close()
# Log
msg_log = 'RSS > Create file with %s items in www: %s'%(
rss_item, rss_file
)
log.append_f(domain.tyto_logs, msg_log, 0)

View File

@ -1,7 +1,7 @@
#!/usr/bin/env python3 #!/usr/bin/env python3
# Name: Tyto - Littérateur # Name: Tyto - Littérateur
# Type: Global functions for HTML page # Type: Global functions for HTML page
# Description: Create final HTML Page # Description: Create sidebar from file tyto.sidebar
# file: sidebar.py # file: sidebar.py
# Folder: /var/lib/tyto/programs/ # Folder: /var/lib/tyto/programs/
# By echolib (XMPP: im@echolib.re) # By echolib (XMPP: im@echolib.re)

View File

@ -17,7 +17,7 @@
#********************************************************************** #**********************************************************************
import sys, os, re import sys, os, re
import check, log, domain, html import check, log, domain, html, rss
Post_Err = False Post_Err = False
@ -153,7 +153,6 @@ def manage_wip(file_post, Force):
msg_log = 'Edit Database: %s'%check.post_db msg_log = 'Edit Database: %s'%check.post_db
log.append_f(check.post_logs, msg_log, 0) log.append_f(check.post_logs, msg_log, 0)
#============================# #============================#
# HTML CONVERTERS # # HTML CONVERTERS #
# wip_tmp: new replacedlines # # wip_tmp: new replacedlines #