1
0
forked from HPR/hpr_generator

18 Commits

Author SHA1 Message Date
Paul Jewell
50bcdf7c60 Remove references to local use of MySQL
Preferred option is to use SQLite, as it is simpler to set up
2025-04-03 03:50:08 +01:00
Paul Jewell
65c2d972e8 Merge branch 'main' into recommend_sqlite 2025-04-03 03:38:21 +01:00
dcd05d0e9b Merge pull request 'Update donation URL for AnHonestHost' (#258) from i254-Update_AnHonestHost_donation_link into main
Reviewed-on: HPR/hpr_generator#258
2025-03-18 03:08:01 +00:00
6d59372077 Update donation URL for AnHonestHost 2025-03-17 23:04:47 -04:00
beb5814d5d Merge pull request 'I256 maillist in the footer expands to current path' (#257) from I256_maillist_in_the_footer_expands_to_current_path into main
Reviewed-on: HPR/hpr_generator#257
2025-03-16 12:34:37 +00:00
6c7712be71 Fixed link to mail list 2025-03-16 13:33:42 +01:00
Ken Fallon
09f69164d0 Merge pull request 'Remove notes from the home page' (#255) from I253_Remove_the_shownotes_from_the_main_landing_page_again into main
Reviewed-on: https://127.0.0.1:3000/HPR/hpr_generator/pulls/255
2025-02-10 16:09:56 +00:00
bf7178b79f Remove notes from the home page 2025-02-10 16:16:39 +01:00
Ken Fallon
c4e875548c revert b1afd4fda8ac2eb2b39cf6fc98a84c021109b971
revert Removed the shownotes from the homepage
2025-02-10 13:53:58 +00:00
ed85c81396 Image for Shane 2025-02-09 22:36:06 +01:00
6f8c5c7141 Image for Sem Luz em Saint Louis 2025-02-09 21:45:57 +01:00
Ken Fallon
0ebc67addb Merge pull request 'I248 - Name of database update utility updated in GETTING_STARTED.md' (#247) from paulj/hpr_generator:getting-started-update into main
Reviewed-on: HPR/hpr_generator#247
2025-02-04 08:43:13 +00:00
Paul Jewell
01a1e72f6a WIP - working on README.md 2025-01-30 23:01:32 +00:00
Ken Fallon
808386bccc Merge pull request 'fix entity escape for xml data' (#252) from rho_n/hpr_generator_dev:i232_Comments-feed-not-producing-valid-xml into main
Reviewed-on: HPR/hpr_generator#252
2025-01-29 08:10:53 +00:00
Paul Jewell
d617cf01d3 I250 - Clarify local SQL database setup.
- Add MySQL information to GETTING_STARTED.md.
- Recommend SQLite over MySQL for local processing.
2025-01-28 09:36:40 +00:00
28af8900a3 fix entity escape for xml data
For title and other xml data replace &, <, >, ', and " with
corresponding escape entities. Also use http_baseurl so
complete urls will be generated.
2025-01-27 22:26:32 -05:00
Paul Jewell
713c2e6394 I250 - remove mySQL instructions from README.md 2025-01-27 10:56:22 +00:00
Paul Jewell
65e6464add Name change on database update utility reflected in GETTING_STARTED.md 2025-01-26 21:58:13 +00:00
9 changed files with 47 additions and 86 deletions

View File

@@ -81,6 +81,7 @@ or
`wget --directory-prefix=./ https://www.hackerpublicradio.org/hpr.sql`
You can process the file using SQLite:
## Creating an SQLite database file
The SQL of the hpr.sql file must be converted from MySQL specific statements to
@@ -95,11 +96,11 @@ program which creates the hpr.db file:
`./utils/mysql2sqlite ./hpr-sqlite.sql | sqlite3 ./hpr.db`
For convenience, the update-sqlite-db.sh script in the utils directory
For convenience, the update-hpr-db.sh script in the utils directory
automates the above steps (including downloading the hpr.sql file).
From the root of the local hpr_generator repository run:
`./utils/update-sqlite-db.sh`
`./utils/update-hpr-db.sh`
# Configure the site-generator
@@ -111,7 +112,7 @@ file are found in the comments within the file.
Any database supported by the Perl:DBI and Perl::DBD modules can be used with
the site-generator program. Currently the hpr_generator project works with
a MySQL or SQLite database.
an SQLite database.
Find the [DBI] section of the file. It should look like the following
@@ -122,15 +123,8 @@ Find the [DBI] section of the file. It should look like the following
#driver: dbi:SQLite:hpr.db
#user: (not used - leave blank)
#password: (not used - leave blank)
# Configuration settings for MySQL
#database: mysql
#driver: dbi:mysql:database=hpr_hpr:hostname=localhost
#user: hpr-generator (Suggested user with read-only privileges)
#password: ********* (Password for user)
```
### SQLite
Remove the comment character from the start of the database and driver
option lines:
@@ -146,26 +140,6 @@ The hpr.db section of the driver option `dbi:SQLite:hpr.db` is the path
to the sqlite file. The default assumes the hpr.db file is located in the same
directory as the site-generator.
### MySQL
Remove the comment character from the start of the database, driver,
user, and password option lines:
```
# Configuration settings for MySQL
database: mysql
driver: dbi:mysql:database=hpr_hpr:hostname=localhost
user: hpr-generator
password: *********
```
This assumes that the MySQL database service is available at the localhost
hostname, that the database name (hpr_hpr) is the database created from
the hpr.sql dump file or manually created by you, that the user (hpr-generator)
was added by you and has read rights to the hpr_hpr database, and that the
password (replace ********* with the actual password) matches the password set
for the hpr-generator database user.
## Configuring the website for viewing locally
For HTML links to work when viewing the files on your local machine using the

View File

@@ -1,65 +1,47 @@
# hpr_generator
Static web page generator for the Hacker Public Radio website.
## Installation
Steps necessary to install this generator locally:
* Clone or download this repository
* With SQLite
* Create the sqlite3 database from the hpr.sql MySQL dump file available on
hackerpublicradio.org. The default name for the database file is "hpr.db"
and should be located in the root of the project directory. The name and
location can be set in the site.cfg file.
* An "update-hpr.sh" helper script is available in the utils directory. This
script will download the hpr.sql file, convert it to the SQLite hpr.db file,
and regenerate the website using the site-generator.
1. `cd` into the root of the project directory
2. Run `./utils/update-hpr.sh`
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries. Must convert WITH
clauses to sub-queries when using earlier versions of SQLite.
* With MySQL
* Create database hpr_hpr in the MySQL server from HPR dump file.
- ``sudo mysql --host=localhost < hpr.sql``
* Create a user that will be used by the site-generator.
- Suggested username: hpr-generator
- ``CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';``
* Limit the user's privileges to EXECUTE and SELECT
- ``GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';``
- ``GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';``
* Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
* Getopt::Long
* Pod::Usage
* Config::Std
* Template
* Template::Plugin::File
* Template::Plugin::DBI
* Template::Plugin::Date
* Template::Plugin::HTML::Strip
* DBI
* Tie::DBI
* DBD::SQLite or DBD::mysql
* Date::Calc
* Text::CSV_XS
* HTML::Entities
* See the [Getting Started](GETTING_STARTED.md) tutorial for more details on
installing the HPR generator.
* Install the needed Perl modules using your preferred method (distribution
packages, CPAN, etc.)
## Usage
Generate two specific pages:
`site-generator index about`
The following utilities are provided to support the process of
generating the website:
* `utils/update-hpr-db.sh` - Download the database and transform it
into the hpr.db SQLite database.
* `utils/update-hpr.sh` - Download HPR.sql and create the SQLite database
using `update-hpr-db.sh`, then run `site-generator` to create the
website.
* `./site-generator` - Using the information in the templates
directory and the show information in the database, generate the
website. Without parameters, the whole site will be generated.
Generate the whole site:
`site-generator --all`
If you need to generate specific pages (in this example, index and about):
`site-generator index about`
Having downloaded the database, you can also regenerate the whole site:
`site-generator --all`
Generate pages based on the same template:
`site-generator correspondent=1,3,5..10`
## More Information
* See the [Getting Started](GETTING_STARTED.md) tutorial for more details on
installing and using the HPR generator.
## Support
Please [submit an Issue](https://repo.anhonesthost.net/HPR/hpr_generator/issues),
and add the label "**Help Request**" for help running or installing the site-generator.
For discussing HPR site generation in general, please [submit an Issue](https://repo.anhonesthost.net/HPR/hpr_generator/issues) and add the label "**General Discussion**".
## Contributing
Happy to take any contributions or suggestions.
To contribute code or documentation, please create a fork of the project and [submit a pull request](https://repo.anhonesthost.net/HPR/hpr_generator/pulls) or send a patch. If an issue exists that is related to your patch, please assign the issue to yourself, or if it is already assigned to someone else, please coordinate with them to minimize duplicated efforts.
@@ -71,9 +53,13 @@ To make a suggestion, please [submit an Issue](https://repo.anhonesthost.net/HPR
and add the label "**Feature Request**".
## Authors and acknowledgment
* Roan "Rho`n" Horning
* Dave Morriss
* gordons
* Ken Fallon
* norrist
* Paul Jewell (paulj)

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

View File

@@ -80,7 +80,7 @@
<p>
Our hosting is kindly provided by <a href="<!--% absolute_url(baseurl) %-->correspondents/0174.html">Josh</a> from
<a href="https://anhonesthost.com/shared-hosting/">AnHonestHost.com</a>.
We would appreciate it if you could <a href="https://secure.anhonesthost.com/cart.php?gid=17">donate</a> to help
We would appreciate it if you could <a href="https://secure.anhonesthost.com/store/hpr-hosting-cost-donations">donate</a> to help
reduce his costs in funding the hosting. He is also accepting bitcoins to <em>1KsxJr9HtsdaUeU7yaV9bk9bQi21UPBtUq</em>
</p>
<p>

View File

@@ -62,7 +62,7 @@
<!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %-->
</p>
</header>
<!--% tidy_notes(latest_episodes.notes) %-->
<p>See <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">episode show notes</a> for more information.</p>
</article>
<!--% host_cnt = host_cnt + 1 %-->
<!--% END %-->

View File

@@ -81,7 +81,7 @@
<nav class="column">
<h2>Social</h2>
<ul>
<li><a href="<!--% absolute_url(baseurl,'/maillist') %-->" >Mailing list</a></li>
<li><a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" >Mailing list</a></li>
<li><a rel="me" href="https://infosec.exchange/@hpr" >Mastodon</a></li>
<li><a href="https://matrix.to/#/#hpr:matrix.org" >Matrix</a></li>
<li><a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0" >Mumble</a></li>

View File

@@ -3,9 +3,10 @@
<!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% USE date %-->
<!--% USE HTML.Strip emit_spaces = 0 %-->
<channel>
<title>Hacker Public Radio ~ Comment Feed</title>
<link><!--% baseurl %-->about.html</link>
<link><!--% absolute_url(http_baseurl) %-->about.html</link>
<description>Comments Feed: Hacker Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to hackers and hobbyists.</description>
<language>en-us</language>
<copyright>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License</copyright>
@@ -15,14 +16,14 @@
<docs>https://www.rssboard.org/rss-specification</docs>
<ttl>600</ttl>
<image>
<url><!--% baseurl %-->images/hpr_feed_small.png</url>
<url><!--% absolute_url(http_baseurl) %-->images/hpr_feed_small.png</url>
<title>Hacker Public Radio ~ Comment Feed</title>
<link><!--% baseurl %-->about.html</link>
<link><!--% absolute_url(http_baseurl) %-->about.html</link>
<description>The Hacker Public Radio Old Microphone Logo</description>
<height>164</height>
<width>144</width>
</image>
<atom:link href="<!--% baseurl %-->comments.rss" rel="self" type="application/rss+xml" />
<atom:link href="<!--% absolute_url(http_baseurl) %-->comments.rss" rel="self" type="application/rss+xml" />
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% FOREACH response IN DBI.query('SELECT max( comment_timestamp) AS latest_update FROM comments') %-->
@@ -49,15 +50,15 @@
%-->
<item>
<title><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></title>
<author>feedback.nospam@nospam.hackerpublicradio.org (<!--% item.comment_author_name %-->)</author>
<link><!--% baseurl %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comments</link>
<title><!--% item.comment_author_name | html_strip | xml_entity %--> says: <!--% item.comment_title | html_strip | xml_entity %--></title>
<author>feedback.nospam@nospam.hackerpublicradio.org (<!--% item.comment_author_name | html_strip | xml_entity %-->)</author>
<link><!--% absolute_url(http_baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comments</link>
<description><![CDATA[<strong>
RE: hpr<!--% zero_pad_left(item.eps_id) %-->::<!--% item.episode_date %--> <em><!--% item.episode_title %--></em> by <a href="<!--% baseurl %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a></strong><!--% rss_show_series(item.series_name, item.series_id) %--><br />
RE: hpr<!--% zero_pad_left(item.eps_id) %-->::<!--% item.episode_date %--> <em><!--% item.episode_title | html_strip | xml_entity %--></em> by <a href="<!--% absolute_url(http_baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a></strong><!--% rss_show_series(item.series_name, item.series_id) | html_strip | xml_entity %--><br />
<!--% display_episode_duration(item.episode_duration) %--><!--% display_listen_in(item.eps_id) %--><br /><!--% item.comment_text FILTER html_line_break %-->
]]></description>
<pubDate><!--% format_feed_date(item.comment_timestamp) %--></pubDate>
<guid isPermaLink="false"><!--% baseurl %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comment_<!--% item.id %--></guid>
<guid isPermaLink="false"><!--% absolute_url(http_baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comment_<!--% item.id %--></guid>
</item>
<!--% END %-->
</channel>

View File

@@ -132,7 +132,7 @@ function make_hpr_sqlite_db {
return 1
fi
local MYSQL2SQLITE=`which mysql2sqlite 2>/dev/null`
local MYSQL2SQLITE=`which mysql2sqlite`
local BIN_PATH=""
if [ "$MYSQL2SQLITE" = "" ];