104 Commits

Author SHA1 Message Date
fc1dedf4b2 Allow for generation of Hobby Public Radio 2025-09-11 12:55:24 -04:00
2e43f79d52 Merge pull request '#267 update-dependencies' (#268) from update-dependencies into main
Reviewed-on: #268
Reviewed-by: Roan Horning <rho_n@josh@dao-mail.com>
2025-07-26 20:40:01 +00:00
Paul Jewell
00ab3b3065 #267 - Remove mysql instructions from site-generator 2025-07-24 08:27:39 +01:00
Paul Jewell
4af0c021eb #267 - Remove mysql instructions from GETTING_STARTED.md 2025-07-24 08:25:58 +01:00
Paul Jewell
3abeb25b03 #267 - Remove references to mysql from README.md 2025-07-24 08:21:50 +01:00
Paul Jewell
e2fd890669 #267 - remove dependency check for DBD::mysql 2025-07-24 08:18:51 +01:00
e21f434c2a Merge pull request 'Add Container file and build script (button_hpr_container.sh) to repo.' (#263) from sgoti/hpr_generator:main into main
Reviewed-on: #263
2025-06-19 17:04:05 +00:00
e2c591edff Merge branch 'main' into main 2025-06-19 17:03:56 +00:00
28a75efe1b Merge pull request 'about-page-html-submit' (#264) from norrist/hpr_generator:about-page-html-submit into main
Reviewed-on: #264
Reviewed-by: Roan Horning <rho_n@josh@dao-mail.com>
2025-06-06 01:53:33 +00:00
94baef679f rm line break 2025-06-05 17:00:16 -05:00
11738f5052 Replace old instructions for shownotes 2025-06-05 16:58:20 -05:00
Sgoti
c9e1446f1f Tiny human distraction.
I cp the files over but the 'git rm' failed and I didn't noticed.  Just a clean
    up job.
2025-05-30 17:46:02 -04:00
Sgoti
bbf5c26dab Moved 'Containerfile' and build script to hpr-tools/
Ken asked that files be placed into 'hpr-tools/'.  The build script is named
    'button_hpr_container.sh' currently; this will change too.  Maybe
    'hpr_email_shownotes.sh'.  Taking suggestions (as of 2025/05/30-2025/12/31).
2025-05-30 17:40:11 -04:00
Sgoti
2ca4d32282 Changed image tag from 'testing' to current perl version '5.40.1'
removed a few unused variables then shift the 'local' scoped unsets to global
2025-05-29 13:04:14 -04:00
Sgoti
cbe3dd4e0d Add Container file and build script (button_hpr_container.sh) to repo. The
build script can also run new containers after building images.  Build
    properties such as "${conternerBuildProperties[containerFile]}" must be
    assigned before building/running new containers.  Build script is "work
    in progress".

On branch dev
Changes to be committed:
    new file:   Containerfile
    new file:   button_hpr_container.sh
2025-05-29 11:25:06 -04:00
a8b205ed2c Typo reported to Archer72 2025-04-25 11:38:01 +00:00
013beca3c0 Merge pull request 'Issue #259 - Remove MySQL specific code from site generation code' (#261) from paulj/hpr_generator:remove_mysql_code into main
Reviewed-on: #261
Reviewed-by: Roan Horning <rho_n@josh@dao-mail.com>
2025-04-07 16:47:15 +00:00
Paul Jewell
86e1d73085 Remove MySQL specific code from site generation code
- site-generator is generic, so no changes.
 - removed mysql information from site.cfg.
 - Updated template files to call sqlite queries directly.
 - Renamed the query files - remove sqlite from file names.
 - Deleted MySQL specific template files.
2025-04-04 10:28:31 +01:00
dcd05d0e9b Merge pull request 'Update donation URL for AnHonestHost' (#258) from i254-Update_AnHonestHost_donation_link into main
Reviewed-on: #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: #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: #247
2025-02-04 08:43:13 +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: #252
2025-01-29 08:10:53 +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
54ed57fd1a RadCom article 2025-01-27 11:39:28 +01:00
Paul Jewell
65e6464add Name change on database update utility reflected in GETTING_STARTED.md 2025-01-26 21:58:13 +00:00
Ken Fallon
71f1a8b8c3 Merge pull request 'Remove the spx and adding the opus feed.' (#244) from I41_New_opus_feed into main
Reviewed-on: #244
2025-01-26 15:42:49 +00:00
37c45e0384 Remove the spx and adding the opus feed. 2025-01-26 16:40:19 +01:00
Ken Fallon
e750e33301 Merge pull request '[i237] Remove Show Transcrip from after show notes to before show notes' (#243) from i237_Remove-Show-Transcript-from-end-of-ep-pages into main
Reviewed-on: #243
2025-01-24 09:54:43 +00:00
45dd69d855 Replace spx file reference with opus 2025-01-23 22:45:06 -05:00
f58e25a685 Move location of transcription text
Move from after the show notes to after the show duration.
2025-01-23 22:42:40 -05:00
1cec6b45f0 Simplify transcription text 2025-01-23 22:36:18 -05:00
Ken Fallon
17b3416dd2 Merge pull request 'i240_Rename-Today-with-a-Techie-folder' (#241) from i240_Rename-Today-with-a-Techie-folder into main
Reviewed-on: #241
2025-01-22 12:12:15 +00:00
f135b1119a Change Today with a Techie href id 2025-01-21 23:59:23 -05:00
15547a2e87 Change Today with a Techie folder name
Change name to twt$eps_id
Fix media_path to call Today with a Techie shows from the CCDN.
2025-01-21 23:58:23 -05:00
Ken Fallon
b572673c93 Upload files to "public_html/press"
Dutch Radio Society Veron members magazine Elector Jaargang79 has a reference to Spectrum24 and the Interview on HPR
2025-01-11 19:00:34 +00:00
Ken Fallon
6642e9adae Update templates/content-index-announcement.tpl.html 2025-01-01 19:13:33 +00:00
Ken Fallon
334d60f179 Update templates/content-index-announcement.tpl.html 2024-12-31 10:29:44 +00:00
Ken Fallon
3b692f8926 Update templates/content-index-announcement.tpl.html 2024-12-30 21:43:42 +00:00
Ken Fallon
c3ee7200c3 Update templates/content-index-announcement.tpl.html 2024-12-30 21:42:31 +00:00
Ken Fallon
d898849cd8 Update templates/content-index-announcement.tpl.html 2024-12-30 21:10:22 +00:00
Ken Fallon
59725eae4e Update templates/content-index-announcement.tpl.html 2024-12-30 20:51:36 +00:00
Ken Fallon
77c694b3e8 Merge pull request 'Removed the baseurl setting and forced css to be from root' (#236) from I235_Using_a_base_uri_is_breaking_linking_to_local_images into main
Reviewed-on: #236
2024-12-30 20:42:45 +00:00
280ece7a52 Removed the baseurl setting and forced css to be from root 2024-12-30 14:40:47 +01:00
70dbb06122 Adding host image for Al 2024-12-27 16:24:01 +01:00
2c8845ceb9 Added additional host images 2024-12-27 11:41:53 +01:00
Ken Fallon
f34f762fef Updated link to hpr sourcecode 2024-12-26 17:37:55 +00:00
54f6f6a365 2024-12-23_12-01-05Z_Monday 2024-12-23 13:01:05 +01:00
def745b564 2024-12-23_10-11-28Z_Monday 2024-12-23 11:11:28 +01:00
97487216c8 2024-12-23_08-50-51Z_Monday 2024-12-23 09:50:51 +01:00
3409cff8be 2024-12-23_08-43-32Z_Monday 2024-12-23 09:43:33 +01:00
Ken Fallon
a8b52d49fe Merge pull request 'Remove show reference to Internet Archive' (#231) from i228-remove-show-references-to-ia into main
Reviewed-on: #231
2024-12-04 08:25:11 +00:00
146107b122 Remove show reference to Internet Archive 2024-12-03 22:47:34 -05:00
Ken Fallon
35e58959ea Merge pull request 'Fixed a redirect to eps page' (#230) from I229_Full_Episode_Guide_typo into main
Reviewed-on: #230
2024-11-30 16:51:50 +00:00
b3617bf6ed Fixed a redirect to eps page 2024-11-30 17:50:10 +01:00
Ken Fallon
b881afa4e9 Update templates/content-about.tpl.html
Changed formatting
2024-11-27 10:00:47 +00:00
Ken Fallon
794cf5cade Update templates/content-about.tpl.html
Updates and clarifications to the comment page
2024-11-27 09:49:40 +00:00
0aab4c22bb Changes necessary to point people to the new HPR Mastodon home 2024-11-25 16:54:42 +01:00
Roan Horning
73740b8ffb Merge pull request '[i223] add day of week to each episode' (#227) from i223-add-day-of-week-to-each-episode into main
Reviewed-on: #227
2024-10-27 19:29:37 +00:00
c1078d9b9c Replace day_from_date MACRO with day_and_date MACRO
Refactor content templates to use day_and_date MACRO
2024-10-27 13:04:19 -04:00
27caa97c7d Add MACRO day_and_date
Formats a string date to <day of week>, <YYYY-mm-dd>
2024-10-27 13:01:14 -04:00
c32a343728 Simplify MACRO day_from_date 2024-10-27 12:56:47 -04:00
7d07b8b814 Add weekday of episode to release information displayed 2024-10-27 09:48:45 -04:00
a38c8e2705 Add MACRO day_from_date 2024-10-23 07:29:58 -04:00
Ken Fallon
d456de5663 Update site.cfg
Changed the mediaurl to point to the CCDN.
2024-10-22 12:10:21 +00:00
Ken Fallon
3ba76e8cd3 Update templates/content-about.tpl.html 2024-10-22 11:05:01 +00:00
Roan Horning
c1be07780f Merge pull request '[i222] fix css' (#224) from i222-fix-css into main
Reviewed-on: #224
2024-10-20 15:26:27 +00:00
dcea8a374b Set minimum height of host table avatar column 2024-10-20 10:33:10 -04:00
5cfb37cae2 Allow horizontal scroll on small screens for tables
This is applied to the .hosts and #t01 tables only
2024-10-20 10:18:20 -04:00
85258d03ba Alternate background color for rows of table#t01 2024-10-20 10:14:47 -04:00
Roan Horning
270b4c0584 Merge pull request 'Add Promote HPR page' (#221) from i217-implement-promote-hpr-page into main
Reviewed-on: #221
2024-10-15 01:36:26 +00:00
ef17c94d58 Merge branch 'main' into i217-implement-promote-hpr-page 2024-10-14 21:31:44 -04:00
Roan Horning
c19030787a Merge pull request '[I216] Add contact page' (#220) from i216-implement-contact-page into main
Reviewed-on: #220
2024-10-15 01:24:22 +00:00
Roan Horning
8884a8517a Merge branch 'main' into i216-implement-contact-page 2024-10-15 01:23:43 +00:00
Roan Horning
f68375dd5f Merge pull request 'Add Download Options page' (#219) from i215-implement-download-page into main
Reviewed-on: #219
2024-10-15 01:22:02 +00:00
Roan Horning
7f604025e9 Merge branch 'main' into i215-implement-download-page 2024-10-15 01:20:36 +00:00
Roan Horning
61de606208 Merge pull request '[I45-website] Refresh HPR layout with a light touch' (#218) from I45-website-refresh-light-touch into main
Reviewed-on: #218
2024-10-15 01:19:34 +00:00
Roan Horning
a58934acbf Merge branch 'main' into I45-website-refresh-light-touch 2024-10-15 01:19:07 +00:00
9a83c13daf Add Promote HPR page
Implement the template file and add reference to site.cfg.
2024-10-13 17:39:10 -04:00
e4e1813bc0 Fix URL for hackerpublicradio.org 2024-10-13 17:25:34 -04:00
b802a8a7b2 Add Contact page
Implement template file and add reference in site.cfg
2024-10-13 17:22:18 -04:00
84d868cf25 Add Download Options page
Implement template file and add download page to site.cfg
2024-10-13 17:02:05 -04:00
8f31864b83 Add id attribute to previous five weeks section 2024-10-12 11:06:41 -04:00
2b0b02ecb7 Remove uneeded in-line styling and tag attributes 2024-10-12 11:05:52 -04:00
9655c56ee6 Format CSS for consistency 2024-10-12 11:02:06 -04:00
87b7f7bde6 Create media breakpoint that matches original wide screen setting
For larger screens constrain viewing width and growth of font-size, and margins to approximately corresponding sizes of the original layout. Prevent things from getting too large.
2024-10-12 10:53:07 -04:00
69f19976fd Use fluid responsive design for hr tag 2024-10-12 10:49:16 -04:00
6062cfd6b4 Clean up look of comment form 2024-10-12 10:47:29 -04:00
51adbcd938 Add fluid responsive design to page footer 2024-10-12 10:46:32 -04:00
7cd0cc3056 Add fluid responsive design to hosts table 2024-10-12 10:45:23 -04:00
d1539a3ca2 Add fluid responsive design to comment and code tags 2024-10-12 10:43:51 -04:00
ad89f1fb4f Modify white space of main menu
Add some accessiblility touches: change cursor to pointer on hover, change link color on active event.
2024-10-12 10:42:18 -04:00
6b2a324730 Modify whitespace and sizing of headers in banner 2024-10-12 10:38:19 -04:00
e8f01ba5c5 Use fluid design for main container margins and padding 2024-10-12 10:24:27 -04:00
68e51c0a32 Initial reset of tags to use fluid responsive design
Use the clamping function to change the base font size as the size of the screen varies. Modify font-size, padding, and margin sizes to rely on the base font size (use rem units). In addition improve usage of white space by modifying line-height, margins, and padding of various tags.
2024-10-12 09:30:40 -04:00
Roan Horning
a3e722589f Merge pull request '[I212] Fix general series page generation' (#213) from i212-fix-general-series-page-generation into main
Reviewed-on: #213
2024-10-09 11:15:33 +00:00
85d43851d1 Fix substring initial offset value
Remove only the leading comma character.
2024-10-08 21:49:58 -04:00
8b277607cf Fix guard for unitialized variable
The original guard was preventing an id with value of
zero from being processed correctly.
2024-10-08 17:37:48 -04:00
66 changed files with 22717 additions and 745 deletions

View File

@@ -95,11 +95,11 @@ program which creates the hpr.db file:
`./utils/mysql2sqlite ./hpr-sqlite.sql | sqlite3 ./hpr.db` `./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). automates the above steps (including downloading the hpr.sql file).
From the root of the local hpr_generator repository run: From the root of the local hpr_generator repository run:
`./utils/update-sqlite-db.sh` `./utils/update-hpr-db.sh`
# Configure the site-generator # Configure the site-generator
@@ -111,7 +111,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 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 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 Find the [DBI] section of the file. It should look like the following
@@ -146,26 +146,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 to the sqlite file. The default assumes the hpr.db file is located in the same
directory as the site-generator. 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 ## Configuring the website for viewing locally
For HTML links to work when viewing the files on your local machine using the For HTML links to work when viewing the files on your local machine using the

View File

@@ -15,15 +15,6 @@ Static web page generator for the Hacker Public Radio website.
2. Run `./utils/update-hpr.sh` 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 * 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. 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.) * Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
* Getopt::Long * Getopt::Long
* Pod::Usage * Pod::Usage
@@ -35,7 +26,7 @@ Static web page generator for the Hacker Public Radio website.
* Template::Plugin::HTML::Strip * Template::Plugin::HTML::Strip
* DBI * DBI
* Tie::DBI * Tie::DBI
* DBD::SQLite or DBD::mysql * DBD::SQLite
* Date::Calc * Date::Calc
* Text::CSV_XS * Text::CSV_XS
* HTML::Entities * HTML::Entities
@@ -76,4 +67,6 @@ and add the label "**Feature Request**".
* gordons * gordons
* Ken Fallon * Ken Fallon
* norrist * norrist
* Paul Jewell

View File

@@ -4,275 +4,515 @@
https://creativecommons.org/publicdomain/ https://creativecommons.org/publicdomain/
*/ */
/*
* See the following for the modern CSS responsive design techniques used in this file:
* - MDN web docs: Responsive design
* -- https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design
* - Matthew James Tayler: Responsive Font Size (Optimal Text at Every Breakpoint)
* -- https://matthewjamestaylor.com/responsive-font-size
* - CSS-Tricks: Linearly Scale font-size with CSS clamp() Based on the Viewport
* -- https://css-tricks.com/linearly-scale-font-size-with-css-clamp-based-on-the-viewport/
*/
p.meta span label { font-weight: bold; } html {
@media only screen and (min-width: 479px) { margin: 0;
padding: 0;
body {background: #dfdfdf;} display: block;
div, h1, h2, h3, h4, h5, h6, p, ul, ol, li, dl, dt, dd, img, form, fieldset, input, textarea, blockquote {
font-family: Verdana, Arial, Helvetica, sans-serif;/* 1em/1.5 OpenDyslexic, */
color: #4D4D4D; /* HPR Grey */
background: white;
} }
body {
display: block;
background: #dfdfdf;
font-size: 1rem; /* fallback for browsers that don't support the clamp function) */
font-size: clamp(1rem, 15px + 0.3vw, 1.07rem);
margin: 0;
padding: 0;
}
#container { div,
width: 100%; h1,
max-width: 58em; h2,
margin: auto; h3,
overflow: hidden; h4,
padding: .5em; h5,
border: thin solid; h6,
p,
ul,
ol,
li,
dl,
dt,
dd,
img,
form,
fieldset,
input,
textarea,
blockquote {
font-family: Verdana, Arial, Helvetica, sans-serif; /* 1em/1.5 OpenDyslexic, */
color: #4D4D4D; /* HPR Grey */
background: white; background: white;
} }
.shadow { h1 {
-moz-box-shadow: 2px 3px 6px 3px #675958; font-size: 1.5rem;
-webkit-box-shadow: 2px 3px 6px 3px #675958; margin: 1.25rem 0 0.75rem 0;
box-shadow: 2px 3px 6px 3px #675958;}
#hprlogo {
display: block;
position: relative;
top: 0;
left: 0;
border: 0;
margin: 0.75em;
float:left;
} }
#hpr_banner { h2,
display: block; article * h1 {
position: relative; font-size: 1.45rem;
border: 0; margin: 1.25rem 0 0.75rem 0;
margin: 0.75em;
float: left;
} }
#hpr_banner h1 {margin: -.25em 0em -.5em 0em;} h3,
#hpr_banner h2 {font-size: 100%; font-weight: lighter; } article * h2 {
#hpr_banner h3 {font-size: 90%; font-weight: lighter; } font-size: 1.25rem;
margin: 1.25rem 0 0.75rem 0;
#accessible_menu {
font-size: small;
} }
/* The main navigation menu */ h4,
.menu { article * h3 {
background: #4D4D4D; /* HPR Grey */ font-size: 1.15rem;
text-align: Left; margin: 1.25rem 0 0.75rem 0;
clear:both; /* Forces the menu to appear after the HPR Header block */
padding: 0em 0em;
margin: 0em 0em;
} }
.menu ul ul { /* Causes the sub menus not to be displayed, until hover shows them */ img {
display: none; max-width: 100%;
height: auto;
} }
#main_menu li a {display: block;} ul {
padding-left: 1.15rem;
.menu ul li { padding: .25em 0em;}
} }
.menu ul { /* The menu bar background across screen */ li {
background: #4D4D4D; /* HPR Grey */ line-height: 1.25;
color: white;
padding: 0 10px; /* Keeps sub menus to the left */
list-style: none;
position: relative;
margin: 0;
display: inline-table;
} }
.menu ul:after { /* Forces the dropdown to be a block with non float */ a {
content: ""; text-decoration: none;
clear: both;
display: block;
} }
.menu ul li { a:hover {
background: #4D4D4D; /* HPR Grey */ cursor: pointer;
color: white;
float: left;
padding: .5em 1em;
} }
.menu ul li a {
background: #4D4D4D; /* HPR Grey */
color: white;
display: block;
text-decoration: none;
}
.menu ul ul {
background: #4D4D4D; /* HPR Grey */
color: white;
padding: 0;
position: absolute;
top: 100%;
}
.menu ul ul li {
background: #4D4D4D; /* HPR Grey */
color: white;
float: none;
position: relative;
}
.menu ul ul ul {
position: absolute;
left: 100%;
top:0;
}
hr { hr {
background: #4D4D4D; /* HPR Grey */ background: #4D4D4D;
border: 0; border: 0;
height: 0.25em; height: 0.25em;
} }
/* The multi colum footer layout */ audio {
padding: .7em 0em .5em 0em;
#footer_page { clear: both;
width:100%; position: relative;
z-index: auto;
} }
.column { .audcredit {
width:12%; font-size: 75%;
background-color: white; margin-bottom: 1em;
color: #4D4D4D; /* HPR Grey */
float:left;
margin:0 10px;
display: block;
} }
.column li { p.meta {
list-style:none; line-height: 1.25;
padding: .25em 0em; }
font-size: 85%;
p.meta span label {
font-weight: bold;
}
article>p,
#maincontent>p {
line-height: 1.45;
}
article#previous_five_weeks>* {
line-height: 1.35;
margin: 0;
padding: 0;
}
article#previous_five_weeks>h3 {
margin: 1.5rem 0 0.5rem 0;
}
#container {
max-width: 58rem;
margin: 0.25rem;
padding: 0.75rem; /* fallback for browsers that don't support the clamp function) */
padding: clamp(0.75rem, -0.25rem + 3vw, 2.0rem);
overflow: hidden;
background: white;
border: thin solid #4D4D4D;
}
.shadow {
-moz-box-shadow: 2px 3px 6px 3px #675958;
-webkit-box-shadow: 2px 3px 6px 3px #675958;
box-shadow: 2px 3px 6px 3px #675958;
} }
.thick_bar { .thick_bar {
width:100%; background-color: #4D4D4D;
background-color: #4D4D4D; /* HPR Grey */ color: white;
color: white; padding: 0.5rem;
float:left; margin: 1rem 0 1rem 0;
clear: both;
height:1.5em;
padding: .5em 0em .5em 0em;
font-size: 1em;
margin: 1em 0em 1em 0em;
} }
#more_info {margin: auto;} img#hprlogo {
nav.column { display: block; padding: 0em 1em 0em 1em;} max-width: 20vw;
#copyright { padding-right: clamp(0.75rem, -0.25rem + 3vw, 1.5rem);
font-size: small; float: left;
width:100%; margin-top: 1rem;
float:left; margin-bottom: clamp(0.75rem, -0.25rem + 2vw, 1.5rem);
} }
article, #copyright p { #hpr_banner {
padding: 0 10px; /* display: inline-block; */
border: 0;
margin: 0 0 0rem 0;
padding: 0;
} }
audio {padding: .7em 0em .5em 0em; clear: both; position: relative; z-index:auto;} #hpr_banner p {
.audcredit { font-size: 75%;margin-bottom: 1em;} margin: 0 0 0.5rem 0;
h1.showtitle { font-size: 125%;}
/* Full Index Page styling */
#index_full h2.title {
font-weight: lighter;
margin-bottom: -.5em;
padding: .5em 0em 0em 0em;
font-size: 110%;}
#index_full p.meta {font-size: 85%;}
#small {
font-size: small;
} }
p.author { font-size: 85%;} #hpr_banner h1#sitename {
p.shownotes { padding: .5em;} font-size: clamp(1.44rem, -1rem + 3vw, 2rem);
#maincontent footer p { /* font-size: 75%; */ margin-bottom: 1em;} letter-spacing: 0.06rem;
/* link styling */ margin: 0;
a:link {text-decoration: none;} padding: 0;
table {
width:100%;
}
table, th, td {
border-collapse: collapse;
padding: 2px;
text-align: left;
}
table#t01, table#t01 th, table#t01 td {
border: 1px solid black;
}
table#t01 th, table#t01 td {
padding: 5px;
text-align: left;
}
table#t01 tr:nth-child(even) {
background-color: #eee;
}
table#t01 tr:nth-child(odd) {
background-color:#fff;
}
table#t01 th {
background-color: #4D4D4D;
color: white;
} }
pre { /* Add background, border and scrollbar to <pre> */ #hpr_banner h2 {
background: #eee; font-size: clamp(0.74rem, -1rem + 2vw, 1rem);
border: 1px solid #ddd; font-weight: 510;
overflow: auto; margin: 0 0 1rem 0;
clear: both; padding: 0;
} }
table.hosts { #hpr_banner h3 {
background: white font-size: 1rem;
font-weight: normal;
margin: 0 0 0.5rem 0;
padding: 0;
}
header>hr {
clear: both;
}
#accessible_menu {
font-size: smaller;
}
/* The main navigation menu */
header>nav.menu {
display: block;
background-color: #4D4D4D; /* HPR Grey */
text-align: Left;
clear: both; /* Forces the menu to appear after the HPR Header block */
padding: 0;
margin: 0;
}
header>nav.menu ul {
margin: 0;
padding: 0.5rem;
background-color: inherit;
color: white;
}
header>nav.menu ul li {
display: inline-block;
background-color: inherit;
color: inherit;
line-height: 1.5;
margin: 0;
padding: 0;
padding-right: clamp(0.5rem, -0.25rem + 3vw, 2.5rem);
}
header>nav.menu ul li a {
color: white;
text-decoration: none;
display: block;
padding: 0.25rem 0;
}
header>nav.menu ul li a:hover {
border-bottom: thin solid white;
padding: 0.15rem 0;
-webkit-transition: 0.3s ease-in-out color;
-moz-transition: 0.3s ease-in-out color;
transition: 0.3s ease-in-out color;
}
header>nav.menu ul li a:visited {
color: #EDEDED;
}
a:active,
header>nav.menu ul li a:active {
color: red;
}
pre {
/* Add background, border and scrollbar to <pre> */
background: #eee;
border: 1px solid #ddd;
overflow: auto;
clear: both;
padding: 0.5rem
}
code {
background: #eee;
border-radius: 0.2rem;
font-size: 0.95rem;
}
pre code {
padding-right: 0.5rem;
font-size: 0.85rem;
line-height: 1;
} }
table.hosts tr:nth-child(even) { background-color:#cccccc; }
table.hosts tr:nth-child(odd) { background-color:white; }
table.hosts tr td img { vertical-align:middle }
pre.comment { pre.comment {
white-space: pre-wrap; white-space: pre-wrap;
padding: 2px;
line-height: 1.2rem; line-height: 1.2rem;
} }
h3.title { margin: 1.25rem 0 0.75rem 0 } table.hosts {
p.meta { margin: 0.25rem 0 } font-size: clamp(0.82rem, -0.25rem + 3vw, 1.0rem);
p.summary { margin: 0.25rem 0 } width: 100%;
p.listen-in { margin-top: 0 } background: white;
margin: 0 auto;
border-collapse: collapse;
display: inline-table;
@media only screen and (max-width: 680px) {
#container {width: 95%;}
img#hprlogo {float: left; max-width: 85px; padding: .35em;}
.column {width: 15%;}
h1 {font-size: 140%;}
h2 {font-size: 120%;}
h3 {font-size: 100%;}
nav.column { display: block; padding: 0em .25em 0em .25em;}
#footer_page li {font-size: 85%; padding: .5em .25em .5em .25em;}
footer p {font-size: 75%;}
audio {float: none; }
} }
@media only screen and (max-width: 479px) { table#t01,
body {background: #ffffff; color: #4D4D4D; font-family: Verdana, Arial, Helvetica, sans-serif;/* 1em/1.5 OpenDyslexic, */} table.hosts {
li {font-size: 100%; padding: .75em 0em .75em 0em; margin-left: -.25em;} display: block;
img#hprlogo {float: left; max-width: 65px; padding: .35em;} overflow-x: auto;
.column {width: auto;} }
h1#sitename { clear: both;}
a:link {text-decoration: none;} table#t01 tbody,
audio {padding: .7em 0em .5em 0em; width: 95%; max-width: 300px;} table.hosts tbody {
.audcredit { font-size: 65%; margin-bottom: 1em;} display: table;
}
table#t01 tr:nth-child(even),
table.hosts tr:nth-child(even) {
background-color: #cccccc;
border-bottom: thick solid white;
}
table#t01 tr:nth-child(odd),
table.hosts tr:nth-child(odd) {
background-color: white;
border-bottom: thick solid white;
}
table.hosts tr td img {
vertical-align: middle;
max-height: 80px;
}
table.hosts th:first-child,
table.hosts td:first-child {
min-width: 60px;
max-width: 80px;
text-align: left;
height: 62px;
}
table.hosts th:nth-child(2),
table.hosts td:nth-child(2) {
text-align: left;
padding-left: clamp(0.15rem, -0.25rem + 3vw, 0.5rem);
}
table.hosts th:nth-child(3),
table.hosts td:nth-child(3),
table.hosts th:nth-child(4),
table.hosts td:nth-child(4) {
width: 10%;
padding-right: clamp(0.10rem, -0.25rem + 3vw, 1rem);
}
body>div>footer {
margin-top: 2rem;
}
footer #more_info nav.column {
clear: both;
font-size: 0.9rem;
margin-left: 0.5rem;
}
footer #more_info nav.column ul li {
float: left;
margin-right: 1.5rem;
margin-bottom: 1rem;
}
footer #more_info nav.column h2 {
font-size: 1.35rem;
margin-top: 0.5rem;
}
footer h1.thick_bar {
clear: left;
font-size: 1.15rem;
}
footer #copyright {
font-size: smaller;
margin-left: 0.5rem;
margin-right: 0.5rem;
}
fieldset>table,
fieldset>table thead,
fieldset>table tbody,
fieldset>table tr,
fieldset>table th,
fieldset>table td,
fieldset>table td input,
fieldset>table td textarea {
display: block;
font-size: 1rem;
}
fieldset>table {
width: calc(100vw + -16vw + -1rem);
max-width: 100%;
}
fieldset>table td input,
fieldset>table td textarea {
width: calc(100vw + -16vw + -1.5rem);
max-width: 100%;
border: thin solid #DFDFDF;
margin-bottom: 0.5rem;
padding: 0.5rem;
}
fieldset>table td select {
margin-bottom: 0.5rem;
padding: 0.25rem;
}
fieldset>table td input[type="radio"] {
display: initial;
width: initial;
margin-bottom: 0.5rem;
}
fieldset>input {
background: #4D4D4D;
color: white;
font-weight: 600;
padding: 0.5rem;
border: thin solid #DFDFDF;
border-radius: 0.2rem;
}
@media only screen and (min-width: 58rem) {
#container {
margin: 0.5rem auto;
}
.shadow {
-moz-box-shadow: 1px 2px 5px 2px #675958;
-webkit-box-shadow: 1px 2px 5px 2px #675958;
box-shadow: 1px 2px 5px 2px #675958;
}
img#hprlogo {
margin-bottom: 1.5rem;
}
#hpr_banner {
float: left;
}
#hpr_banner h1#sitename {
font-size: 2rem;
}
#hpr_banner h2 {
font-size: 1rem;
}
header>hr {
clear: right;
}
table.hosts td:first-child {
height: 80px;
}
footer #more_info nav.column {
clear: none;
float: left;
width: 19.5%;
margin-left: 0;
}
footer #more_info nav.column:first-child {
margin-left: 0.5rem;
}
footer #more_info nav.column ul li {
float: none;
margin-bottom: 0.5rem;
}
fieldset>table,
fieldset>table thead,
fieldset>table tbody,
fieldset>table tr,
fieldset>table th,
fieldset>table td,
fieldset>table td input,
fieldset>table td textarea {
display: revert;
width: revert;
}
fieldset>table tr {
vertical-align: baseline;
}
fieldset>table tr:nth-child(3) {
vertical-align: top;
}
fieldset>table tr:nth-child(3) td:first-child {
padding-top: 0.5rem;
}
fieldset>table tr:nth-last-child(3) td:first-child {
padding-top: 1rem;
}
fieldset>table tr:nth-last-child(2) {
vertical-align: top;
}
fieldset>table tr:nth-last-child(2) td:first-child {
padding-top: 0.75rem;
}
fieldset>table td input[type="radio"] {
margin-top: 1.5rem;
}
} }

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 KiB

BIN
public_html/images/hosts/374.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 383 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 182 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

View File

@@ -56,19 +56,9 @@ Perl Template Toolkit.
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries. * 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. 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.) Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
* Config::Std * Config::Std
* DBD::SQLite or DBD:mysql * DBD::SQLite
* DBI * DBI
* Data::Dumper * Data::Dumper
* Date::Calc * Date::Calc
@@ -290,26 +280,23 @@ sub parse_page_arg {
# Split page name from page ids if available. # Split page name from page ids if available.
my ($page, $ids) = split(/=/, $page_arg); my ($page, $ids) = split(/=/, $page_arg);
my @ids; my @ids;
$ids = "" unless defined $ids;
if(!$ids) { # Parse the page ids and push them onto @ids array
$ids = ""; my @ids_by_comma = split(/\,/, $ids);
} foreach my $id_by_comma (@ids_by_comma) {
else { my @ids_for_range = split(/\.\./, $id_by_comma);
# Parse the page ids and push them onto @ids array if ((scalar @ids_for_range) == 2) {
my @ids_by_comma = split(/\,/, $ids); push @ids, $ids_for_range[0]..$ids_for_range[1];
foreach my $id_by_comma (@ids_by_comma) { }
my @ids_for_range = split(/\.\./, $id_by_comma); elsif ((scalar @ids_for_range) == 1) {
if ((scalar @ids_for_range) == 2) { push @ids, $ids_for_range[0];
push @ids, $ids_for_range[0]..$ids_for_range[1]; }
} else {
elsif ((scalar @ids_for_range) == 1) { verbose (1, "\nWarning: Page $page id range $id_by_comma could not be parsed.");
push @ids, $ids_for_range[0];
}
else {
verbose (1, "\nWarning: Page $page id range $id_by_comma could not be parsed.");
}
} }
} }
return ('page' => $page, 'ids' => [@ids]); return ('page' => $page, 'ids' => [@ids]);
} }
@@ -326,7 +313,7 @@ sub get_ids_from_db {
|| die $tt->error(), "\n"; || die $tt->error(), "\n";
# Starts with a newline and comma # Starts with a newline and comma
return split(/,/, substr($selected_ids, 2)); return split(/,/, substr($selected_ids, 1));
} }
sub get_filename { sub get_filename {

View File

@@ -7,13 +7,6 @@
# Configuration settings for SQLite # Configuration settings for SQLite
database: sqlite database: sqlite
driver: dbi:SQLite:hpr.db 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)
# Configure the location of the templates and the generated HTML # Configure the location of the templates and the generated HTML
[app_paths] [app_paths]
@@ -27,14 +20,16 @@ output_path: ./public_html
[root_template] [root_template]
content: page.tpl.html content: page.tpl.html
#baseurl: OPTIONAL [i.e. file://<full path to local website directory>] #baseurl: OPTIONAL [i.e. file://<full path to local website directory>]
#baseurl: file:///home/roan/Development/hpr/website/hpr_generator/public_html/
baseurl: https://hackerpublicradio.org/
http_baseurl: http://hackerpublicradio.org/ http_baseurl: http://hackerpublicradio.org/
hub_baseurl: https://hub.hackerpublicradio.org/ hub_baseurl: https://hub.hackerpublicradio.org/
media_baseurl: https://archive.org/download/hpr$eps_id/ media_baseurl: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr$eps_id/
generator_name: The HPR Robot generator_name: The HPR Robot
generator_email: robot.nospam@nospam.hackerpublicradio.org generator_email: robot.nospam@nospam.hackerpublicradio.org
# Is safe for work: 0 for true, 1 for false -- if true substitute
# variations of Hobby for Hacker
is_sfw: 1
# Configure the navigation menu and the content templates for each page # Configure the navigation menu and the content templates for each page
# of the site: # of the site:
# #
@@ -97,6 +92,10 @@ content: content-episode.tpl.html
multipage: true multipage: true
filename: eps/hpr[id]/index.html filename: eps/hpr[id]/index.html
[download]
navigation: navigation-get-shows.tpl.html
content: content-download.tpl.html
[syndication] [syndication]
navigation: navigation-get-shows.tpl.html navigation: navigation-get-shows.tpl.html
content: content-syndication.tpl.html content: content-syndication.tpl.html
@@ -117,13 +116,20 @@ content: content-tags.tpl.html
navigation: navigation-get-shows.tpl.html navigation: navigation-get-shows.tpl.html
content: content-twat_episode.tpl.html content: content-twat_episode.tpl.html
multipage: true multipage: true
filename: eps/twat[id]/index.html filename: eps/twt[id]/index.html
media_baseurl: https://www.hackerpublicradio.org/eps/
[mumble-howto] [mumble-howto]
navigation: navigation-about.tpl.html navigation: navigation-about.tpl.html
content: content-mumble-howto.tpl.html content: content-mumble-howto.tpl.html
[contact]
navigation: navigation-about.tpl.html
content: content-contact.tpl.html
[promote]
navigation: navigation-about.tpl.html
content: content-promote.tpl.html
[comments_viewer] [comments_viewer]
navigation: navigation-about.tpl.html navigation: navigation-about.tpl.html
content: content-comments_viewer.tpl.html content: content-comments_viewer.tpl.html

View File

@@ -23,7 +23,7 @@
<p>What differentiates HPR from other podcasts is that the shows are crowd sourced from the community - <p>What differentiates HPR from other podcasts is that the shows are crowd sourced from the community -
fellow listeners like <strong><a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">you</a></strong>. fellow listeners like <strong><a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">you</a></strong>.
There is no restriction on how long the show can be, nor on the topic you can cover as long as they are not spam There is no restriction on how long the show can be, nor on the topic you can cover as long as they are not spam
and <em>&quot;are of interest to <a href="http://en.wikipedia.org/wiki/Hacker_(hobbyist)" >Hackers</a>&quot;</em>. and <em>&quot;are of interest to <a href="http://en.wikipedia.org/wiki/Hacker_(hobbyist)" ><!--% make_sfw(is_sfw, "Hobbyists", "Hackers") %--></a>&quot;</em>.
If you want to see what topics have been covered so far just have a look at our If you want to see what topics have been covered so far just have a look at our
<a href="<!--% absolute_url(baseurl,'eps/index.html') %-->">Archive</a>. <a href="<!--% absolute_url(baseurl,'eps/index.html') %-->">Archive</a>.
We also allow for a <a href="<!--% absolute_url(baseurl,'series/index.html') %-->">series</a> of shows so that We also allow for a <a href="<!--% absolute_url(baseurl,'series/index.html') %-->">series</a> of shows so that
@@ -37,7 +37,7 @@
Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License</a>.</p> Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License</a>.</p>
<h2 id="history">History<a href="<!--% absolute_url(baseurl,'about.html#history') %-->">.</a></h2> <h2 id="history">History<a href="<!--% absolute_url(baseurl,'about.html#history') %-->">.</a></h2>
<p>Hacker Public Radio (HPR) is an Internet Radio show (podcast) that releases shows every weekday Monday through Friday. <p><!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio (HPR) is an Internet Radio show (podcast) that releases shows every weekday Monday through Friday.
HPR has a long lineage going back to <a href="https://web.archive.org/web/20230323053905/http://www.oldskoolphreak.com/" >Radio FreeK America</a>, HPR has a long lineage going back to <a href="https://web.archive.org/web/20230323053905/http://www.oldskoolphreak.com/" >Radio FreeK America</a>,
<a href="https://web.archive.org/web/20220123174618/https://www.binrev.com/forums/" >Binary Revolution Radio</a> &amp; <a href="https://web.archive.org/web/20150208172826/http://www.nomicon.info/" >Infonomicon</a>, <a href="https://web.archive.org/web/20220123174618/https://www.binrev.com/forums/" >Binary Revolution Radio</a> &amp; <a href="https://web.archive.org/web/20150208172826/http://www.nomicon.info/" >Infonomicon</a>,
and it is a rename of <a href="<!--% absolute_url(baseurl,'twat.html') %-->" >Today With a Techie</a> radio. and it is a rename of <a href="<!--% absolute_url(baseurl,'twat.html') %-->" >Today With a Techie</a> radio.
@@ -45,7 +45,7 @@
Introduction to HPR</a>&quot; for more information.</p> Introduction to HPR</a>&quot; for more information.</p>
<h2 id="free_culture">Free Culture<a href="<!--% absolute_url(baseurl,'about.html#free_culture') %-->">.</a></h2> <h2 id="free_culture">Free Culture<a href="<!--% absolute_url(baseurl,'about.html#free_culture') %-->">.</a></h2>
<p>Hacker Public Radio is dedicated to sharing knowledge. We do not accept donations so please consider supporting our patrons. <p><!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio is dedicated to sharing knowledge. We do not accept donations so please consider supporting our patrons.
If you listen to HPR, then we would love you to <a href="contribute.html">contribute</a> one show a year. If you listen to HPR, then we would love you to <a href="contribute.html">contribute</a> one show a year.
Our shows are by default released under a <a href="https://creativecommons.org/licenses/by-sa/4.0/" > Our shows are by default released under a <a href="https://creativecommons.org/licenses/by-sa/4.0/" >
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license. Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.
@@ -66,8 +66,9 @@
<p>See the section <a href="<!--% absolute_url(baseurl,'about.html#stuff_you_need_to_know') %-->" >stuff you need to know</a> for more information.</p> <p>See the section <a href="<!--% absolute_url(baseurl,'about.html#stuff_you_need_to_know') %-->" >stuff you need to know</a> for more information.</p>
<h3 id="recent_policy_changes">Recent Policy Changes</h3> <h3 id="recent_policy_changes">Recent Policy Changes</h3>
<ul> <ul>
<li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2024-October/004791.html">Clarification that contributions are CC BY-SA 4.0 unless otherwise stated</a></li>
<li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-July/004191.html">HPR will move #oggcastplanet on libera, <li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-July/004191.html">HPR will move #oggcastplanet on libera,
and we will also include links to the matrix, and <a href="https://botsin.space/@hpr">Mastodon</a> channel</a></li> and we will also include links to the matrix</a>, and <a href="https://infosec.exchange/@hpr">Mastodon</a> channel</li>
<li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-August/004200.html">Existing shows will be <li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-August/004200.html">Existing shows will be
flagged with the current version and new shows will default to "Attribution 4.0 International (CC BY 4.0)"</a></li> flagged with the current version and new shows will default to "Attribution 4.0 International (CC BY 4.0)"</a></li>
<li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-November/004328.html">The Intro Outro will be <li><a href="https://lists.hackerpublicradio.com/pipermail/hpr/2021-November/004328.html">The Intro Outro will be
@@ -79,7 +80,7 @@
<p> <p>
Our hosting is kindly provided by <a href="<!--% absolute_url(baseurl) %-->correspondents/0174.html">Josh</a> from 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>. <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> reduce his costs in funding the hosting. He is also accepting bitcoins to <em>1KsxJr9HtsdaUeU7yaV9bk9bQi21UPBtUq</em>
</p> </p>
<p> <p>
@@ -89,24 +90,35 @@
<hr /> <hr />
<h1 id="contact">Contact<a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">.</a></h1> <h1 id="contact">Primary Contact Points<a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">.</a></h1>
<p>We are always looking for more hosts...</p>
<ul> <ul>
<li>email: <strong>admin -at- hackerpublicradio org</strong><br /> <li>email: <strong>admin -at- <!--% make_sfw(is_sfw, "hobby", "hacker") %-->publicradio org</strong>, will put you in touch with the Janitors who are
<em>As an anti-spam measure you will get an error back but we do get your email.</em></li> the first point of contact for any issues related to the HPR community.
<li>Website: <a href="<!--% absolute_url(baseurl,'') %-->" ><!--% absolute_url(baseurl,'') %--></a></li> If you have any issue of concern please bring it to their attention first.
<li>Maillist: <a href="<!--% absolute_url(baseurl,'/maillist') %-->">Mailing list</a></li> <br />
<em>As an anti-spam measure you may get an error back but we do get your email.</em></li>
<li>Website: <a href="<!--% absolute_url(baseurl,'') %-->" ><!--% absolute_url(baseurl,'') %--></a>.
There is a comment link on each show where you can provide your constructive feedback.</li>
<li>Maillist: <a href="<!--% absolute_url(baseurl,'/maillist') %-->">Mailing list</a>.
While the Janitors are the first point of contact, the HPR project is
<a href="<!--% absolute_url(baseurl,'about.html#governance') %-->">governed</a> by the community.
Decisions about how <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio are made on the mailing list, and you can join it by going to :<br />
<a href="<!--% absolute_url(baseurl,'/maillist') %-->"><!--% absolute_url(baseurl,'/maillist') %--></a></li>
<li>Mastodon: <a href="https://infosec.exchange/@hpr">https://infosec.exchange/@hpr</a> is the official HPR Mastodon instance
and is actively monitored.</li>
<li>Matrix: <a href="https://matrix.to/#/#hpr:matrix.org" >https://matrix.to/#/#hpr:matrix.org</a> is the official HPR Matrix channel
and is actively monitored.</li>
</ul>
<h3 id="contact_secondary">Secondary Contact Points</h3>
<p>These platforms are monitored from time to time. Commenting here is less likely to get an immediate response.</p>
<ul>
<li><a href="https://t.me/+6fEhQrf5IEc4ZGU8">Telegram</a></li>
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" >#oggcastplanet</a></li> <li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" >#oggcastplanet</a></li>
<li><a href="https://www.facebook.com/home.php?sk=group_130169220378872¬if_t=group_r2j" >Facebook</a></li> <li><a href="https://www.facebook.com/home.php?sk=group_130169220378872¬if_t=group_r2j" >Facebook</a></li>
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" >Linked-In</a></li> <li><a href="https://www.linkedin.com/company/hackerpublicradio/" >Linked-In</a></li>
<li><a href="http://itunes.apple.com/us/podcast/hacker-public-radio/id281699640" >iTunes</a></li> <li><a href="http://itunes.apple.com/us/podcast/hacker-public-radio/id281699640" >iTunes</a></li>
</ul> </ul>
<h2>Mail List</h2>
<p>
HPR is governed by the community, so decisions about how Hacker Public Radio should be run are made on the mailing list you can join it by going to :<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="<!--% absolute_url(baseurl,'/maillist') %-->"><!--% absolute_url(baseurl,'/maillist') %--></a>
</p>
<hr /> <hr />
@@ -130,7 +142,7 @@
<h1 id="how_to_help">How to Help<a href="<!--% absolute_url(baseurl,'about.html#how_to_help') %-->">.</a></h1> <h1 id="how_to_help">How to Help<a href="<!--% absolute_url(baseurl,'about.html#how_to_help') %-->">.</a></h1>
<p> <p>
Hacker Public Radio is a communty podcast where the shows are provided by the community, and is also <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio is a communty podcast where the shows are provided by the community, and is also
<a href="<!--% absolute_url(baseurl,'about.html#governance') %-->">governed</a> by the community, <a href="<!--% absolute_url(baseurl,'about.html#governance') %-->">governed</a> by the community,
and we rely on the <a href="<!--% absolute_url(baseurl,'about.html#patrons') %-->">support our Patrons</a> and we rely on the <a href="<!--% absolute_url(baseurl,'about.html#patrons') %-->">support our Patrons</a>
to provide the hosting infrastructure. to provide the hosting infrastructure.
@@ -146,7 +158,7 @@
<h2 id="podcatcher_support">Podcatcher Support</h2> <h2 id="podcatcher_support">Podcatcher Support</h2>
<p> <p>
Please report your experiences with our feeds to <!--% absolute_url(baseurl,'about.html#contact') %-->admin@hpr</a>. Please report your experiences with our feeds to admin@hpr</a>.
</p> </p>
<h2 id="other_ways_to_help">Other ways to help</h2> <h2 id="other_ways_to_help">Other ways to help</h2>
@@ -228,7 +240,7 @@
<a href="<!--% absolute_url(baseurl) %-->series/index.html">Series</a> page to see if you can add your knowledge to the pool. <a href="<!--% absolute_url(baseurl) %-->series/index.html">Series</a> page to see if you can add your knowledge to the pool.
</p> </p>
<p> <p>
If you are worried that your show may not be of interest to Hackers then you can <a href="<!--% absolute_url(baseurl) %-->will-my-show-be-of-interest-to-hackers.html">click here</a> to check if it is. If you are worried that your show may not be of interest to <!--% make_sfw(is_sfw, "Hobbyists", "Hackers") %--> then you can <a href="<!--% absolute_url(baseurl) %-->will-my-show-be-of-interest-to-hackers.html">click here</a> to check if it is.
</p> </p>
<p> <p>
If you can't think of anything to talk about then please just record a show telling us If you can't think of anything to talk about then please just record a show telling us
@@ -276,7 +288,7 @@
and we'll get in touch with you with all you need to know about getting your show published.<br /> and we'll get in touch with you with all you need to know about getting your show published.<br />
You can chat with other podcasters using IRC in the <strong>#oggcastplanet</strong> channel on the You can chat with other podcasters using IRC in the <strong>#oggcastplanet</strong> channel on the
<a href="https://web.libera.chat/gamja/?channels=oggcastplanet">libera.chat</a> network. <a href="https://web.libera.chat/gamja/?channels=oggcastplanet">libera.chat</a> network.
Follow us on <a href="https://botsin.space/@hpr">Mastodon</a> (use the tag <strong>#hpr</strong>) Follow us on <a href="https://infosec.exchange/@hpr">Mastodon</a> (use the tag <strong>#hpr</strong>)
and on <a href="https://twitter.com/hpr">Twitter</a> (use the tag <strong>#hpr</strong>). and on <a href="https://twitter.com/hpr">Twitter</a> (use the tag <strong>#hpr</strong>).
We have a <a href="https://www.facebook.com/HenryPartickReilly">Facebook</a> and We have a <a href="https://www.facebook.com/HenryPartickReilly">Facebook</a> and
<a href="https://www.linkedin.com/groups?mostPopular=&amp;gid=3737302">LinkedIn</a> group, <a href="https://www.linkedin.com/groups?mostPopular=&amp;gid=3737302">LinkedIn</a> group,
@@ -302,7 +314,7 @@
<h2 id="motto">Our Mottos</h2> <h2 id="motto">Our Mottos</h2>
<blockquote>Any audio is better than no audio.</blockquote> <blockquote>Any audio is better than no audio.</blockquote>
<blockquote>Any topic of intrest to hackers.</blockquote> <blockquote>Any topic of intrest to <!--% make_sfw(is_sfw, "hobbyists", "hackers") %-->.</blockquote>
<blockquote>It ain't a show unless it's on the server.</blockquote> <blockquote>It ain't a show unless it's on the server.</blockquote>
<blockquote>If you tell us you are doing a show, then you owe us a show.</blockquote> <blockquote>If you tell us you are doing a show, then you owe us a show.</blockquote>
@@ -410,7 +422,7 @@
<h2 id="no_shows_no_hpr">HPR will stop as a project if there are not enough shows <h2 id="no_shows_no_hpr">HPR will stop as a project if there are not enough shows
<a href="<!--% absolute_url(baseurl,'about.html#no_shows_no_hpr') %-->">.</a></h2> <a href="<!--% absolute_url(baseurl,'about.html#no_shows_no_hpr') %-->">.</a></h2>
<p> <p>
Hacker Public Radio is dedicated to sharing knowledge. <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio is dedicated to sharing knowledge.
We release about 260 shows a year, which is probably more than all of the other FOSS podcasts put together. We release about 260 shows a year, which is probably more than all of the other FOSS podcasts put together.
If you listen to HPR, then we would love you to If you listen to HPR, then we would love you to
<a target="_blank" href="<!--% absolute_url(baseurl,'about.html#so_you_want_to_record_a_podcast') %-->">contribute</a> <a target="_blank" href="<!--% absolute_url(baseurl,'about.html#so_you_want_to_record_a_podcast') %-->">contribute</a>
@@ -428,7 +440,7 @@
</p> </p>
<h2 id="syndication">We do not syndicate non HPR Shows<a href="<!--% absolute_url(baseurl,'about.html#syndication') %-->">.</a></h2> <h2 id="syndication">We do not syndicate non HPR Shows<a href="<!--% absolute_url(baseurl,'about.html#syndication') %-->">.</a></h2>
<p> <p>
HPR is founded on the principle of Hackers sharing knowledge. HPR is founded on the principle of <!--% make_sfw(is_sfw, "Hobbyists", "Hackers") %--> sharing knowledge.
For this reason we are only releasing material created exclusively for HPR. For this reason we are only releasing material created exclusively for HPR.
We will continue to promote new podcasts and other creative commons material, We will continue to promote new podcasts and other creative commons material,
but if you wish to have your show promoted, but if you wish to have your show promoted,
@@ -616,7 +628,7 @@
Whichever option you have close to hand, try and set the recording to the best quality format Whichever option you have close to hand, try and set the recording to the best quality format
(<a href="https://en.wikipedia.org/wiki/WAV">WAV</a> or <a href="https://en.wikipedia.org/wiki/FLAC">FLAC</a>), (<a href="https://en.wikipedia.org/wiki/WAV">WAV</a> or <a href="https://en.wikipedia.org/wiki/FLAC">FLAC</a>),
and set everything else to the highest setting. and set everything else to the highest setting.
It's always the goal to get the best quality audio but here at Hacker Public Radio we value content over quality It's always the goal to get the best quality audio but here at <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio we value content over quality
and so long as it's audible we'll take it. and so long as it's audible we'll take it.
</p> </p>
<p> <p>
@@ -678,7 +690,7 @@
<p> <p>
If you would like to record with multiple participants then you can use <a href="https://www.mumble.com/">Mumble</a>. If you would like to record with multiple participants then you can use <a href="https://www.mumble.com/">Mumble</a>.
Connect to <strong>chatter.skyehaven.net</strong> Port: <strong>64738 </strong>.<br /> Connect to <strong>chatter.skyehaven.net</strong> Port: <strong>64738 </strong>.<br />
Walk through the audio wizard and then pop into the <strong>Hacker Public Radio</strong> room. Walk through the audio wizard and then pop into the <strong><!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio</strong> room.
Once you are ready press the <strong>recording</strong> button, select <em>multichannel</em> and then <em>start</em>. Once you are ready press the <strong>recording</strong> button, select <em>multichannel</em> and then <em>start</em>.
That will record multiple tracks, one for each participant which you can edit and then submit. That will record multiple tracks, one for each participant which you can edit and then submit.
<br /> <br />
@@ -703,7 +715,7 @@
<h2 id="encoding">We mix down to Mono<a href="<!--% absolute_url(baseurl,'about.html#encoding') %-->">.</a></h2> <h2 id="encoding">We mix down to Mono<a href="<!--% absolute_url(baseurl,'about.html#encoding') %-->">.</a></h2>
<p> <p>
We will by default mix down your show to one channel mono and we will We will by default mix down your show to one channel mono and we will
<a href="https://gitorious.org/hpr-scheduling-system/hpr-scheduling-system/source/2d526e000d31e79afa3d863ea8659503e2074267:transcoding/hprtranscode">transcode</a> to MP3, ogg and spx formats. If you want to control this in more detail then please email admin at Hacker Public Radio for more information. <a href="https://gitorious.org/hpr-scheduling-system/hpr-scheduling-system/source/2d526e000d31e79afa3d863ea8659503e2074267:transcoding/hprtranscode">transcode</a> to MP3, ogg and spx formats. If you want to control this in more detail then please email admin at <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio for more information.
</p> </p>
<h2 id="no_metadata">No need to add Metadata to the file<a href="<!--% absolute_url(baseurl,'about.html#no_metadata') %-->">.</a></h2> <h2 id="no_metadata">No need to add Metadata to the file<a href="<!--% absolute_url(baseurl,'about.html#no_metadata') %-->">.</a></h2>
@@ -823,7 +835,7 @@
<li id="Short_Summary"><strong>Summary:</strong> <em>Mandatory</em><br /> <li id="Short_Summary"><strong>Summary:</strong> <em>Mandatory</em><br />
This is a short 100 character summary of what your show is about. This is a short 100 character summary of what your show is about.
Please fill this out as it is used once the show has gone off the main page, on the mobile site, Please fill this out as it is used once the show has gone off the main page, on the mobile site,
on printed brochures, on text to speech announcements, on twitter, <a href="https://botsin.space/@hpr">Mastodon</a> etc.</li> on printed brochures, on text to speech announcements, on twitter, <a href="https://infosec.exchange/@hpr">Mastodon</a> etc.</li>
<li id="Theme"><strong>Theme:</strong> <em>Automatic</em><br /> <li id="Theme"><strong>Theme:</strong> <em>Automatic</em><br />
The Intro, and the Outro will be added automatically. Please do not add it. The Intro, and the Outro will be added automatically. Please do not add it.
</li> </li>
@@ -860,42 +872,17 @@
Your audio is completely inaccessible to those who have hearing problems, Your audio is completely inaccessible to those who have hearing problems,
so the only way for your show to be of help to them is if you distill the essence of the show into the show notes. so the only way for your show to be of help to them is if you distill the essence of the show into the show notes.
If you are using a script to prepare your show then include that.</li> If you are using a script to prepare your show then include that.</li>
<li><strong>Adding the shownotes</strong>
<ul>
<li>Add text and use the WYSIWYG editor buttons to add additional formatting</li>
<li>Optionally - You can paste in <strong>Rendered</strong> HTML</li>
<li><strong>Do not paste un-rendored markup (HTML, Markdown,
RestructuredText)</strong> unless your intention is to have un-rendored
markup as shownotes.</li>
<li>The amount you can enter is restricted to 4000 characters, but you can provide additional show notes if you wish.
Please add them to an full_shownotes.html file which you can expect to be served from
<!--% absolute_url(baseurl) %-->eps/hpr9999/full_shownotes.html</li>
</ul> </ul>
The amount you can enter is restricted to 4000 characters, but you can provide additional show notes if you wish.
Please add them to an full_shownotes.html file which you can expect to be served from
<!--% absolute_url(baseurl) %-->eps/hpr9999/full_shownotes.html<br /> <br />
<li>
If you wish to include text formatting then please use a format that supports it. We accept:
<ul>
<li>HTML5</li>
<li>Markdown (standard)</li>
<li>Markdown (GitHub flavoured)</li>
<li>Markdown (Pandoc flavoured)</li>
<li>RestructuredText</li>
<li>txt2tags</li>
<li>Plain text</li>
</ul>
However please restrict yourself to text unless you are experienced producing valid markdown/HTML5.
Regardless of the format you send your shownotes will end up in html5 &lt;article&gt; section,
where the header and footer are not available to you. Avoid using &lt;div&gt; or &lt;span&gt;.
The inclusion of JavaScript will send your show into quarantine, until an experienced HPR volunteer
can be found to debug it.<br />
It takes us a lot longer to fix incorrectly formatted shownotes than plain text, so please only create formatted
show notes if you know what you are doing and are sure that what you are writing is valid.
</li>
<li id="shownotes_format"><strong>Show Note Format:</strong> <em>Optional</em><br />
Please tell us which format, if any you used when filling in your shownotes.
<ul>
<li><a href="https://www.w3schools.com/html/default.asp">HTML5</a></li>
<li><a href="https://en.wikipedia.org/wiki/Markdown">Markdown (standard)</a></li>
<li><a href="https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax">Markdown (GitHub flavoured)</a></li>
<li><a href="https://pandoc.org/MANUAL.html#pandocs-markdown">Markdown (Pandoc flavoured)</a></li>
<li><a href="https://docutils.sourceforge.io/docs/user/rst/quickstart.html">RestructuredText</a></li>
<li>Plain text having no formatting.</li>
</ul>
</li>
<li id="series"><strong>Series:</strong> <em>Optional</em><br /> <li id="series"><strong>Series:</strong> <em>Optional</em><br />
Select the <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a> if any that your show is a part of. Select the <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a> if any that your show is a part of.
@@ -961,13 +948,13 @@
<hr /> <hr />
<h1 id="faq">Frequently Asked Questions</h1> <h1 id="faq">Frequently Asked Questions</h1>
<h2 data-number="0.1" id="what-is-hacker-public-radio"><span class="header-section-number">0.1</span> What is Hacker Public Radio?</h2> <h2 data-number="0.1" id="what-is-hacker-public-radio"><span class="header-section-number">0.1</span> What is <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio?</h2>
<ul> <ul>
<li><p>Hacker Public Radio (HPR) is an Internet Radio show (podcast) that releases shows (episodes) <li><p>Hacker<!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio (HPR) is an Internet Radio show (podcast) that releases shows (episodes)
every weekday Monday through Friday.</p></li> every weekday Monday through Friday.</p></li>
<li><p>What differentiates HPR from other podcasts is that the shows are crowd sourced from the community <li><p>What differentiates HPR from other podcasts is that the shows are crowd sourced from the community
- fellow listeners like you. There is no restriction on how long shows can be, nor on the topic you can cover, - fellow listeners like you. There is no restriction on how long shows can be, nor on the topic you can cover,
as long as they are not spam and "are of interest to Hackers".</p> as long as they are not spam and "are of interest to <!--% make_sfw(is_sfw, "Hobbyists", "Hackers") %-->".</p>
<p>If you want to see what topics have been covered so far just have a look at our <p>If you want to see what topics have been covered so far just have a look at our
<a href="<!--% absolute_url(baseurl) %-->eps/index.html">Archive</a>. We also allow for shows to be grouped <a href="<!--% absolute_url(baseurl) %-->eps/index.html">Archive</a>. We also allow for shows to be grouped
into <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a> so that hosts can go into more detail on a topic.</p></li> into <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a> so that hosts can go into more detail on a topic.</p></li>
@@ -1020,7 +1007,7 @@
which can be used for such shows.</p></li> which can be used for such shows.</p></li>
</ul> </ul>
<h2 data-number="0.4" id="what-defines-a-show-as-being-produced-for-hacker-public-radio"><span class="header-section-number">0.4</span> <h2 data-number="0.4" id="what-defines-a-show-as-being-produced-for-hacker-public-radio"><span class="header-section-number">0.4</span>
What defines a show as being "<em>Produced for Hacker Public Radio</em>"?</h2> What defines a show as being "<em>Produced for <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio</em>"?</h2>
<ul> <ul>
<li>If you create material and post it first on HPR then it meets the requirements of "<em>being produced for HPR</em>". <li>If you create material and post it first on HPR then it meets the requirements of "<em>being produced for HPR</em>".
That means once you upload it to the HPR server you can publish it anywhere else you like.</li> That means once you upload it to the HPR server you can publish it anywhere else you like.</li>
@@ -1148,7 +1135,7 @@
<li>You can join the <strong>#oggcastplanet</strong> channel on IRC. <li>You can join the <strong>#oggcastplanet</strong> channel on IRC.
Visit the <a href="http://webchat.freenode.net/?channels=oggcastplanet">freenode.net</a> network to sign up.</li> Visit the <a href="http://webchat.freenode.net/?channels=oggcastplanet">freenode.net</a> network to sign up.</li>
<li>A number of HPR messages may be found on Twitter and <li>A number of HPR messages may be found on Twitter and
<a href="https://botsin.space/@hpr">Mastodon</a>.</li> <a href="https://infosec.exchange/@hpr">Mastodon</a>.</li>
<li>There is a <a href="https://t.me/+6fEhQrf5IEc4ZGU8">chat group on Telegram</a></li> <li>There is a <a href="https://t.me/+6fEhQrf5IEc4ZGU8">chat group on Telegram</a></li>
<li>An HPR tradition exists where we record a 26-hour show at the turn of the year celebrating the <li>An HPR tradition exists where we record a 26-hour show at the turn of the year celebrating the
arrival of the New Year around the world. We use Mumble to record the show and anyone can connect arrival of the New Year around the world. We use Mumble to record the show and anyone can connect
@@ -1158,11 +1145,11 @@
</ul> </ul>
<h2 data-number="0.14" id="faq_wikipedia"><span class="header-section-number">0.14</span> Why has HPR not got a Wikipedia page?</h2> <h2 data-number="0.14" id="faq_wikipedia"><span class="header-section-number">0.14</span> Why has HPR not got a Wikipedia page?</h2>
<p> <p>
Once someone contributes to Hacker Public Radio, the Wikipedia rules prevent us from editing a page. Once someone contributes to <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio, the Wikipedia rules prevent us from editing a page.
You can of course create one prior to contributing a show, or ask for one to be created. You can of course create one prior to contributing a show, or ask for one to be created.
</p> </p>
<p> <p>
We do of course believe that Hacker Public Radio should have a Wikipedia entry. We do of course believe that <!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio should have a Wikipedia entry.
We are one of the longest running podcasts having started as Today with a Techie on 2005-09-19. We are one of the longest running podcasts having started as Today with a Techie on 2005-09-19.
We also are unique in our community driven approach to producing shows. We also are unique in our community driven approach to producing shows.
And of course the fact that Wikipedia itself references us as a source And of course the fact that Wikipedia itself references us as a source

View File

@@ -1,8 +1,9 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-listen-now.tpl.html' %--> <!--% PROCESS 'shared-listen-now.tpl.html' %-->
<!--% PROCESS "queries-episode-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-episode.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<h2>Comment Viewer</h2> <h2>Comment Viewer</h2>
<p>Because of the spammers we have had to turn on comment moderation. Sorry about the delay this will cause.</p> <p>Because of the spammers we have had to turn on comment moderation. Sorry about the delay this will cause.</p>
<p><a href="<!--% absolute_path(baseurl) %-->comments.rss">Subscribe</a> to the comment feed.</p> <p><a href="<!--% absolute_path(baseurl) %-->comments.rss">Subscribe</a> to the comment feed.</p>

View File

@@ -0,0 +1,21 @@
<article>
<header>
<h1>Contact</h1>
</header>
<p>We are always looking for more hosts...</p>
<ul>
<li>email: <strong>admin -at- hackerpublicradio org</strong><br />
<em>As an anti-spam measure you will get an error back but we do get your email.</em></li>
<li>Website: <a href="http://www.hackerpublicradio.org" target="_blank">www.hackerpublicradio.org</a></li>
<li>Mailist: <a href="http://www.hackerpublicradio.org/maillist" target="_blank">Maillist</a></li>
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li>
<li><a href="https://www.facebook.com/home.php?sk=group_130169220378872¬if_t=group_r2j" target="_blank">Facebook</a></li>
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
<li><a href="http://itunes.apple.com/us/podcast/hacker-public-radio/id281699640" target="_blank">iTunes</a></li>
</ul>
<h2>Mail List</h2>
<p>
HPR is governed by the community, so decisions about how Hacker Public Radio should be run are made on the mailing list you can join it by going to :<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://www.hackerpublicradio.org/maillist">http://www.hackerpublicradio.org/maillist</a>
</p>
</article>

View File

@@ -1,8 +1,8 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS 'shared-avatar.tpl.html' %--> <!--% PROCESS 'shared-avatar.tpl.html' %-->
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS "queries-correspondent-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-correspondent.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% results_hpr_shows = DBI.prepare(query_hpr_shows) <!--% results_hpr_shows = DBI.prepare(query_hpr_shows)
%--> %-->
<!--% results_hpr_show_count = DBI.prepare(query_hpr_show_count) %--> <!--% results_hpr_show_count = DBI.prepare(query_hpr_show_count) %-->

View File

@@ -3,7 +3,7 @@
<article> <article>
<h2 class="title">Correspondents</h2> <h2 class="title">Correspondents</h2>
<p>For more information on how to become a Correspondent see our <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">contribute</a></center> page. To add a logo here, either email one to admin at hpr or setup your email on <a href="https://en.gravatar.com/">Gravatar</a>. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.<p /> <p>For more information on how to become a Correspondent see our <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">contribute</a></center> page. To add a logo here, either email one to admin at hpr or setup your email on <a href="https://en.gravatar.com/">Gravatar</a>. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.<p />
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% host_cnt = 0 %--> <!--% host_cnt = 0 %-->
<table class="hosts"> <table class="hosts">
<th >Avatar</th> <th >Avatar</th>
@@ -18,7 +18,7 @@
on h.hostid = e.hostid on h.hostid = e.hostid
order by h.host' order by h.host'
) %--> ) %-->
<tr height="80"> <tr>
<td><!--% get_avatar(host.hostid, host.host, host_cnt > 8) %--></td> <td><!--% get_avatar(host.hostid, host.host, host_cnt > 8) %--></td>
<td><strong><!--% host.host %--></strong><br> <td><strong><!--% host.host %--></strong><br>

View File

@@ -0,0 +1,56 @@
<article>
<header>
<h1>Download Archive</h1>
<p>Please be aware that our Archive exceeds <strong>62Gb</strong> <em>(Ogg: 21Gb, Spx: 16Gb, mp3: 25Gb)</em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p>
<p>We will be happy to post you DVD's of the episodes anywhere in the world if bandwidth is an issue.</p>
</header>
<h2>Full Episode Guide</h2>
<p>
The <a href="./eps/index.html">compete episode guide</a> is available to you, and it lists all the shows on one page going right back to the very first episode.
</p>
<h2>Command line download</h2>
<p>
You can download the audio of the episodes directly from the command line using the following commands:
</p>
<ul>
<li>ogg:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].ogg' -o "hpr#1.ogg"</span></li>
<li>spx:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].spx' -o "hpr#1.spx"</span></li>
<li>mp3:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].mp3' -o "hpr#1.mp3"</span></li>
</li>
</ul>
<h2>Full RSS feed, BitTorrent and Magnet links</h2>
<p>The full rss feed is updated daily and contains the complete show note with links to supporting articles. The torrent/magnet also contains this information and is a snaphot of the archive taken between 2007 and November 2013. </p>
<ul>
<li><span style="font-family:monospace;">ogg: <a href="hpr_total_ogg_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Ogg-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:390C66903BBB2B6A067C438C70B2E90988AA8207&dn=HPR-Ogg-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
<li><span style="font-family:monospace;">spx: <a href="hpr_total_spx_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:E2573BEF0209B8C2E3C7908BAF220EC34D4A5B8E&dn=HPR-Speex-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
<li><span style="font-family:monospace;">mp3: <a href="hpr_total_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:6E9492AD78BCCA2B8D6A42C9C0BCAB0E6FA778F8&dn=HPR-Mp3-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
</ul>
<h3>Direct download of the remaining shows</h3>
<p>
You can download the remaining episodes since the torrent was created directly from the command line using the following commands:
</p>
<ul>
<li>ogg:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].ogg' -o "hpr#1.ogg"</span>
</li>
</li>
</ul>
<ul>
<li>spx:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].spx' -o "hpr#1.spx"</span>
</li>
</li>
</ul>
<ul>
<li>mp3:<br />
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].mp3' -o "hpr#1.mp3"</span>
</li>
</li>
</ul>
<footer>
<p>Big to DeepGeek and the team for providing the BitTorrent service.</p>
</footer>
</article>

View File

@@ -3,7 +3,7 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-listen-now.tpl.html' %--> <!--% PROCESS 'shared-listen-now.tpl.html' %-->
<!--% PROCESS 'shared-show-transcript.tpl.html' %--> <!--% PROCESS 'shared-show-transcript.tpl.html' %-->
<!--% PROCESS "queries-episode-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-episode.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_episodes = DBI.prepare(query_episode_maxmin) %--> <!--% query_episodes = DBI.prepare(query_episode_maxmin) %-->
<!--% episode_result = query_episodes.execute(id, id, id, id, id) %--> <!--% episode_result = query_episodes.execute(id, id, id, id, id) %-->
@@ -17,11 +17,10 @@
<p class="meta"><!--% episode_navigation %--> <p class="meta"><!--% episode_navigation %-->
</p> </p>
<p><!--% show_avatar(episode.hostid, episode.host) %--> <p><!--% show_avatar(episode.hostid, episode.host) %-->
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a> on <span><!--% episode.date %--></span> is flagged as <span><!--% display_explicit(episode.explicit) %--></span> and is released under a <span><!--% episode.license %--> license</span>. <br> Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a> on <span><!--% day_and_date(episode.date) %--></span> is flagged as <span><!--% display_explicit(episode.explicit) %--></span> and is released under a <span><!--% episode.license %--> license</span>. <br>
<!--% display_tags(episode.tags) %--> <!--% display_tags(episode.tags) %-->
<label>Comments: </label><!--% display_comments_tally(episode.id, episode.eps_tally) %--> <br> <label>Comments: </label><!--% display_comments_tally(episode.id, episode.eps_tally) %--> <br>
The show is available on the Internet Archive at: <a href="https://archive.org/details/hpr<!--% zero_pad_left(episode.id) %-->">https://archive.org/details/hpr<!--% zero_pad_left(episode.id) %--></a>
<!--% listen_now(episode, "hpr", baseurl, media_baseurl) %--> <!--% listen_now(episode, "hpr", baseurl, media_baseurl) %-->
</p> </p>
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3> <h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
@@ -29,7 +28,6 @@ The show is available on the Internet Archive at: <a href="https://archive.org/d
</header> </header>
<div><!--% episode.notes %--></div> <div><!--% episode.notes %--></div>
<footer> <footer>
<!--% show_transcript(episode, "hpr", baseurl, media_baseurl) %-->
<p> <p>
<!--% episode_navigation %--> <!--% episode_navigation %-->
</p> </p>

View File

@@ -1,5 +1,5 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS "queries-episodes-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-episodes.tpl.html" %-->
<article> <article>
<header> <header>
<h1>Complete Archive of Shows.</h1> <h1>Complete Archive of Shows.</h1>
@@ -7,13 +7,13 @@
All this information is available to the public. Scrape if you wish but if we can format the data for you then we're happy to help. All this information is available to the public. Scrape if you wish but if we can format the data for you then we're happy to help.
</p> </p>
</header> </header>
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% FOREACH episodes IN DBI.query(query_episodes) <!--% FOREACH episodes IN DBI.query(query_episodes)
%--> %-->
<!--% show_summary(episodes) %--> <!--% show_summary(episodes) %-->
<p class="listen-in"><!--% display_listen_in(episodes.id) %--></p> <p class="listen-in"><!--% display_listen_in(episodes.id) %--></p>
<!--% END %--> <!--% END %-->
<h2 id="twat_episodes">Today With a Techie Archived Shows</h2> <h2 id="twt_episodes">Today With a Techie Archived Shows</h2>
<p> <p>
<!-- Creative Commons License --> <!-- Creative Commons License -->
<a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="https://creativecommons.org/images/public/somerights20.png" width="88" height="31" /></a><br>The following work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</a>.</p> <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="https://creativecommons.org/images/public/somerights20.png" width="88" height="31" /></a><br>The following work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</a>.</p>

View File

@@ -4,7 +4,7 @@
<!--% PROCESS 'shared-show-transcript.tpl.html' %--> <!--% PROCESS 'shared-show-transcript.tpl.html' %-->
<!--% PROCESS 'shared-call_for_shows.tpl.html' %--> <!--% PROCESS 'shared-call_for_shows.tpl.html' %-->
<!--% INCLUDE 'content-index-announcement.tpl.html' %--> <!--% INCLUDE 'content-index-announcement.tpl.html' %-->
<!--% PROCESS "queries-index-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-index.tpl.html" %-->
<!--% MACRO tidy_notes(all_lines) BLOCK %--> <!--% MACRO tidy_notes(all_lines) BLOCK %-->
<!--% lines = all_lines %--> <!--% lines = all_lines %-->
<!--% after_html = all_lines %--> <!--% after_html = all_lines %-->
@@ -29,7 +29,7 @@
<h3>Welcome to HPR, the Community Podcast</h3> <h3>Welcome to HPR, the Community Podcast</h3>
</header> </header>
<!--% days_till_next_episode = 0 %--> <!--% days_till_next_episode = 0 %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% USE date %--> <!--% USE date %-->
<!--% calc = date.calc %--> <!--% calc = date.calc %-->
<!--% episodes = DBI.query(query_next_available_episode).get_all() %--> <!--% episodes = DBI.query(query_next_available_episode).get_all() %-->
@@ -40,7 +40,7 @@
<!--% days_till_next_episode = calc.Delta_Days(now.0,now.1,now.2,slot_date.0,slot_date.1,slot_date.2) %--> <!--% days_till_next_episode = calc.Delta_Days(now.0,now.1,now.2,slot_date.0,slot_date.1,slot_date.2) %-->
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %--> <!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
<p>We started producing shows as <a href="<!--% absolute_path(baseurl) %-->eps/index.html#twat_episodes"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. Our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topics</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)">hackers</a>"</strong>. If you listen to HPR then please consider contributing one show a year. If you <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> your show now it could be <a href="<!--% hub_baseurl %-->calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p> <p>We started producing shows as <a href="<!--% absolute_path(baseurl) %-->eps/index.html#twt_episodes"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. Our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topics</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)"><!--% make_sfw(is_sfw, "hobbyists", "hackers") %--></a>"</strong>. If you listen to HPR then please consider contributing one show a year. If you <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> your show now it could be <a href="<!--% hub_baseurl %-->calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p>
</article> </article>
<!--% display_call_for_shows() %--> <!--% display_call_for_shows() %-->
<hr> <hr>
@@ -55,21 +55,18 @@
<h1><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">hpr<!--% latest_episodes.id %--> :: <!--% latest_episodes.title %--></a></h1> <h1><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">hpr<!--% latest_episodes.id %--> :: <!--% latest_episodes.title %--></a></h1>
<h3><!--% latest_episodes.summary%--></h3> <h3><!--% latest_episodes.summary%--></h3>
<p class="meta"$><!--% show_avatar(latest_episodes.hostid, latest_episodes.host, host_cnt) %--> <p class="meta"$><!--% show_avatar(latest_episodes.hostid, latest_episodes.host, host_cnt) %-->
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(latest_episodes.hostid) %-->.html"><!--% latest_episodes.host %--></a> on <!--% latest_episodes.date %--> is flagged as <!--% display_explicit(latest_episodes.explicit) %--> and released under a <!--% latest_episodes.license %--> license. <br> Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(latest_episodes.hostid) %-->.html"><!--% latest_episodes.host %--></a> on <!--% day_and_date(latest_episodes.date) %--> is flagged as <!--% display_explicit(latest_episodes.explicit) %--> and released under a <!--% latest_episodes.license %--> license. <br>
<!--% display_tags(latest_episodes.tags) %--> <!--% display_tags(latest_episodes.tags) %-->
<span><!--% show_series(latest_episodes.series, latest_episodes.seriesid) %--></span> <span><!--% show_series(latest_episodes.series, latest_episodes.seriesid) %--></span>
<span><label>Comments: </label><!--% display_comments_tally(latest_episodes.id, latest_episodes.eps_tally) %--></span><br> <span><label>Comments: </label><!--% display_comments_tally(latest_episodes.id, latest_episodes.eps_tally) %--></span><br>
<!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %--> <!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %-->
</p> </p>
</header> </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>
<footer>
<!--% show_transcript(latest_episodes, "hpr", baseurl, media_baseurl) %-->
</footer>
</article> </article>
<!--% host_cnt = host_cnt + 1 %--> <!--% host_cnt = host_cnt + 1 %-->
<!--% END %--> <!--% END %-->
<article> <article id="previous_five_weeks">
<header> <header>
<hr> <hr>
<h1>Previous five weeks</h1> <h1>Previous five weeks</h1>

View File

@@ -0,0 +1,22 @@
<article>
<header>
<h1>Please promote HPR</h1>
</header>
<p>Feel free to use the promotional material to spread the word in your podcasts, or have them played on to other shows.</p>
<h2>General HPR promotion</h2>
<ul>
<li><a href="./media/promos/HPRpromoKlaatu.ogg">Klaatu explains HPR Daily podcast by the www.hackerpublicradio.org Community for the www.hackerpublicradio.org Community</a></li>
<!--<li><a href="../media/promos/HPRpromoNewsCast.ogg">A News Caster tells us about HPR</a></li>
<li><a href="../media/promos/HPRpromoSkirlet.ogg">Skirlet tells us we need to listen to HPR</a></li>-->
</ul>
<h2>Requests for contributions</h2>
<p>
<ul>
<li><a href="./media/promos/Jude-aka-Mrs_Peter64_HPR-needs-shows.flac">Jude Mrs. Peter64 HPR needs shows</a></li>
<li><a href="./media/promos/hpr-contributor-promo-sax.ogg">slick0 basenet theme</a></li>
<li><a href="./media/promos/hpr-contributor-promo-basenettheme.ogg">slick0 sax roll</a></li>
</ul>
</p>
</article>

View File

@@ -1,7 +1,7 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS "queries-series-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-series.tpl.html" %-->
<article> <article>
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<h1 class="title">In-Depth Series</h1> <h1 class="title">In-Depth Series</h1>
<!--% FOREACH series IN DBI.query(query_episodes) %--> <!--% FOREACH series IN DBI.query(query_episodes) %-->
<h2><a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series.id) %-->.html"><!--% series.name %--></a></h2> <h2><a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series.id) %-->.html"><!--% series.name %--></a></h2>

View File

@@ -1,7 +1,7 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS 'shared-avatar.tpl.html' %--> <!--% PROCESS 'shared-avatar.tpl.html' %-->
<!--% PROCESS "queries-series_episodes-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-series_episodes.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% query_series = DBI.prepare(query_series_sql) <!--% query_series = DBI.prepare(query_series_sql)
%--> %-->
<!--% series_result = query_series.execute(id) %--> <!--% series_result = query_series.execute(id) %-->

View File

@@ -5,7 +5,7 @@
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</strong></a> ← The HPR Homepage</li> <li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</strong></a> ← The HPR Homepage</li>
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a> ← The RSS Syndication Feeds</li> <li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a> ← The RSS Syndication Feeds</li>
<ul> <ul>
<li><a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">Full Episode Guide</a> ← Complete list of all the Shows.</li> <li><a href="<!--% absolute_path(baseurl) %-->eps/index.html">Full Episode Guide</a> ← Complete list of all the Shows.</li>
<li><a href="<!--% absolute_path(baseurl) %-->series/index.html">In-Depth Series</a> ← Overview of the In-Depth Series.</li> <li><a href="<!--% absolute_path(baseurl) %-->series/index.html">In-Depth Series</a> ← Overview of the In-Depth Series.</li>
<li><a href="<!--% absolute_url(baseurl) %-->about.html#download">Download Options</a> ← How to download the entire archive.</li> <li><a href="<!--% absolute_url(baseurl) %-->about.html#download">Download Options</a> ← How to download the entire archive.</li>
</ul> </ul>

View File

@@ -20,9 +20,9 @@
Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month. Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month.
</p> </p>
<ul> <ul>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php?series=47">ogg</a> Larger file size higher quality feed.</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_opus_rss.php?series=47">opus</a>.</li>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php?series=47">mp3</a> Larger file size regular quality feed in a common format.</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php?series=47">ogg</a>.</li>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php?series=47">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php?series=47">mp3</a>.</li>
</ul> </ul>
<p> <p>
We also maintain an <a href="https://archive.org/details/hackerpublicradio?and[]=subject%3A%22Community+News%22">Archive.org</a> page where you can get the shows in even more formats. We also maintain an <a href="https://archive.org/details/hackerpublicradio?and[]=subject%3A%22Community+News%22">Archive.org</a> page where you can get the shows in even more formats.
@@ -37,9 +37,9 @@
Use these feeds to keep up to date with the latest HPR Episodes. Use these feeds to keep up to date with the latest HPR Episodes.
</p> </p>
<ul> <ul>
<li><a href="<!--% absolute_url(baseurl) %-->hpr_ogg_rss.php">ogg</a> Larger file size higher quality feed.</li> <li><a href="<!--% absolute_url(baseurl) %-->hpr_opus_rss.php">opus</a>.</li>
<li><a href="<!--% absolute_url(baseurl) %-->hpr_rss.php">mp3</a> Larger file size regular quality feed in a common format.</li> <li><a href="<!--% absolute_url(baseurl) %-->hpr_ogg_rss.php">ogg</a>.</li>
<li><a href="<!--% absolute_url(baseurl) %-->hpr_spx_rss.php">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li> <li><a href="<!--% absolute_url(baseurl) %-->hpr_rss.php">mp3</a>.</li>
</ul> </ul>
<p> <p>
We also maintain an <a href="https://archive.org/details/hackerpublicradio">Archive.org</a> page where you can get the shows in even more formats. For more recent shows we are now including the original upload as delivered. We also maintain an <a href="https://archive.org/details/hackerpublicradio">Archive.org</a> page where you can get the shows in even more formats. For more recent shows we are now including the original upload as delivered.
@@ -53,9 +53,9 @@
Use this feed to get the archived episodes. The feed themselves run over 15Mb in size and so use them to download the archived episodes and when you are up to date switch back to the Two Week Feeds listed above. Use this feed to get the archived episodes. The feed themselves run over 15Mb in size and so use them to download the archived episodes and when you are up to date switch back to the Two Week Feeds listed above.
</p> </p>
<ul> <ul>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_ogg_rss.php">ogg feed</a> Warning over 50G</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_total_opus_rss.php">opus feed</a> Warning over 62G</li>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_spx_rss.php">spx feed</a> Warning over 22G</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_total_ogg_rss.php">ogg feed</a> Warning over 71G</li>
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_rss.php">mp3 feed</a> Warning over 36G</li> <li><a href="<!--% absolute_path(baseurl) %-->hpr_total_rss.php">mp3 feed</a> Warning over 70G</li>
</ul> </ul>
</article> </article>
<article> <article>
@@ -112,8 +112,8 @@
<article> <article>
<header> <header>
<h1>Download Archive</h1> <h1>Download Archive</h1>
<p>Please be aware that our Archive exceeds <strong>62Gb</strong> <em>(Ogg: 21Gb, Spx: 16Gb, mp3: 25Gb)</em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p> <p>Please be aware that our Archive exceeds <strong>200Gb</strong></em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p>
<p>We will be happy to post you DVD's of the episodes anywhere in the world if bandwidth is an issue.</p> <p>We will be happy to physically send episodes anywhere in the world if bandwidth is an issue.</p>
</header> </header>
<h2>Full Episode Guide</h2> <h2>Full Episode Guide</h2>
<p> <p>

View File

@@ -1,6 +1,6 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS "queries-tags-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-tags.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% PERL %--> <!--% PERL %-->
$Template::Stash::PRIVATE = undef; # Allow . in tag $Template::Stash::PRIVATE = undef; # Allow . in tag
<!--% END %--> <!--% END %-->

View File

@@ -2,7 +2,7 @@
<!--% PROCESS 'shared-avatar.tpl.html' %--> <!--% PROCESS 'shared-avatar.tpl.html' %-->
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-listen-now.tpl.html' %--> <!--% PROCESS 'shared-listen-now.tpl.html' %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% query_episodes = DBI.prepare(' <!--% query_episodes = DBI.prepare('
WITH episode_maxmin AS ( WITH episode_maxmin AS (
SELECT MAX(id) AS \'latest\', MIN(id) AS \'earliest\', ? AS \'id\' SELECT MAX(id) AS \'latest\', MIN(id) AS \'earliest\', ? AS \'id\'
@@ -45,7 +45,7 @@
%--> %-->
<!--% episode_result = query_episodes.execute(id, id, id, id, id) %--> <!--% episode_result = query_episodes.execute(id, id, id, id, id) %-->
<!--% FOREACH episode IN episode_result %--> <!--% FOREACH episode IN episode_result %-->
<!--% episode_navigation = step_navigation(baseurl,episode,"twat") %--> <!--% episode_navigation = step_navigation(baseurl,episode,"twt") %-->
<article> <article>
<header> <header>
<h1><!--% episode.id %--> :: <!--% episode.title %--></h1> <h1><!--% episode.id %--> :: <!--% episode.title %--></h1>
@@ -53,7 +53,7 @@
<p class="meta"><!--% episode_navigation %--> <p class="meta"><!--% episode_navigation %-->
</p> </p>
<p><!--% show_avatar(episode.hostid, episode.host) %--> <p><!--% show_avatar(episode.hostid, episode.host) %-->
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a> on <span><!--% episode.date %--></span> is flagged as <span><!--% display_explicit(episode.explicit) %--></span> and is released under a <span><!--% episode.license %--> license</span>. <br> Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(episode.hostid) %-->.html"><!--% episode.host %--></a> on <span><!--% day_and_date(episode.date) %--></span> is flagged as <span><!--% display_explicit(episode.explicit) %--></span> and is released under a <span><!--% episode.license %--> license</span>. <br>
<!--% display_tags(episode.tags) %--> <br> <!--% display_tags(episode.tags) %--> <br>
<!--% listen_now(episode, "twat", baseurl, media_baseurl) %--> <!--% listen_now(episode, "twat", baseurl, media_baseurl) %-->
<!--% display_listen_in(episode.id, "twat") %--> <!--% display_listen_in(episode.id, "twat") %-->

View File

@@ -1,4 +1,4 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% FOREACH host IN DBI.query( <!--% FOREACH host IN DBI.query(
'select h.hostid from hosts as h' 'select h.hostid from hosts as h'
) %--> ) %-->

View File

@@ -1,5 +1,5 @@
<!--% PROCESS "queries-ids-episode-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-ids-episode.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% FOREACH episode IN DBI.query(query_ids_episode) %--> <!--% FOREACH episode IN DBI.query(query_ids_episode) %-->
,<!--% episode.id %--> ,<!--% episode.id %-->
<!--% END %--> <!--% END %-->

View File

@@ -1,4 +1,4 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% FOREACH episode IN DBI.query( <!--% FOREACH episode IN DBI.query(
'select eps.id from twat_eps AS eps' 'select eps.id from twat_eps AS eps'
) %--> ) %-->

View File

@@ -3,7 +3,7 @@
<!DOCTYPE HTML> <!DOCTYPE HTML>
<html lang="en"> <html lang="en">
<head> <head>
<title>Hacker Public Radio ~ The Technology Community Podcast</title> <title><!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio ~ The Technology Community Podcast</title>
<!--% IF baseurl %--> <!--% IF baseurl %-->
<base href="<!--% baseurl %-->"> <base href="<!--% baseurl %-->">
<!--% END %--> <!--% END %-->
@@ -11,7 +11,7 @@
<meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" /> <meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" />
<meta http-equiv="last-modified" content="<!--% format_feed_date(date.now) %-->"> <meta http-equiv="last-modified" content="<!--% format_feed_date(date.now) %-->">
<meta name="keywords" content="Technology, Tech News, Education, Training" /> <meta name="keywords" content="Technology, Tech News, Education, Training" />
<meta name="description" content="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." /> <meta name="description" content="<!--% make_sfw(is_sfw, "Hobby", "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 <!--% make_sfw(is_sfw, "makers", "hackers") %--> and hobbyists." />
<meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1">
<!-- Internal CSS --> <!-- Internal CSS -->
<style type="text/css"> <style type="text/css">
@@ -23,14 +23,14 @@
} }
</style> </style>
<link rel="shortcut icon" href="<!--% absolute_url(baseurl) %-->hpr.ico" > <link rel="shortcut icon" href="<!--% absolute_url(baseurl) %-->hpr.ico" >
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Ogg Vorbis RSS" href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php" /> <link rel="alternate" type="application/rss+xml" title="<!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio Opus RSS" href="<!--% absolute_path(baseurl) %-->hpr_opus_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Speex RSS" href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php" /> <link rel="alternate" type="application/rss+xml" title="<!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio Ogg Vorbis RSS" href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio MP3 RSS" href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php" /> <link rel="alternate" type="application/rss+xml" title="<!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio MP3 RSS" href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php" />
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Comments RSS" href="<!--% absolute_path(baseurl) %-->comments.rss" /> <link rel="alternate" type="application/rss+xml" title="<!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio Comments RSS" href="<!--% absolute_path(baseurl) %-->comments.rss" />
<link rel="license" title="CC BY-SA 4.0" href="https://creativecommons.org/licenses/by-sa/4.0/" /> <link rel="license" title="CC BY-SA 4.0" href="https://creativecommons.org/licenses/by-sa/4.0/" />
<link href="<!--% absolute_path(baseurl) %-->css/hpr.css" rel="stylesheet" /> <link href="/css/hpr.css" rel="stylesheet" />
<!--[if IE]> <!--[if IE]>
<link rel="stylesheet" href="<!--% absolute_path(baseurl) %-->css/hpr.css" media="screen" type="text/css" /> <link rel="stylesheet" href="/css/hpr.css" media="screen" type="text/css" />
<script src="/JavaScript/html5.js"></script> <script src="/JavaScript/html5.js"></script>
<![endif]--> <![endif]-->
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.5, user-scalable=yes"/> <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.5, user-scalable=yes"/>
@@ -46,7 +46,7 @@
- <a href="#maincontent">skip to main content</a> - <a href="#maincontent">skip to main content</a>
</p> </p>
<h1 id="sitename"> <h1 id="sitename">
<a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">H</a>acker <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">H</a><!--% make_sfw(is_sfw, "obby", "acker") %-->
<a href="<!--% absolute_path(baseurl) %-->comments_viewer.html">P</a>ublic <a href="<!--% absolute_path(baseurl) %-->comments_viewer.html">P</a>ublic
<a href="<!--% absolute_path(baseurl) %-->syndication.html">R</a>adio <a href="<!--% absolute_path(baseurl) %-->syndication.html">R</a>adio
</h1> </h1>
@@ -67,7 +67,7 @@
</main> </main>
<footer id="footer_page"> <footer id="footer_page">
<h1 class="thick_bar"><span style="padding-left: 1em;">More Information...</span></h1> <h1 class="thick_bar">More Information...</h1>
<div id="more_info"> <div id="more_info">
<nav class="column"> <nav class="column">
<h2>Ancestry</h2> <h2>Ancestry</h2>
@@ -81,8 +81,8 @@
<nav class="column"> <nav class="column">
<h2>Social</h2> <h2>Social</h2>
<ul> <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 href="https://botsin.space/@hpr" >Mastodon</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="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> <li><a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0" >Mumble</a></li>
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li> <li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li>
@@ -114,7 +114,7 @@
<ul> <ul>
<li><a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a></li> <li><a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a></li>
<li><a href="https://archive.org/details/hackerpublicradio">archive.org</a></li> <li><a href="https://archive.org/details/hackerpublicradio">archive.org</a></li>
<li><a href="https://repo.anhonesthost.net/explore/repos" >HPR Source Code</a></li> <li><a href="https://repo.anhonesthost.net/HPR/">HPR Source Code</a></li>
<li><a href="https://cchits.net/">cchits.net</a></li> <li><a href="https://cchits.net/">cchits.net</a></li>
<li><a href="https://freesound.org/">freesound.org</a></li> <li><a href="https://freesound.org/">freesound.org</a></li>
<li><a href="https://librivox.org/">librivox.org</a></li> <li><a href="https://librivox.org/">librivox.org</a></li>
@@ -133,7 +133,7 @@
</ul> </ul>
</nav> </nav>
</div><!-- more_info --> </div><!-- more_info -->
<h1 class="thick_bar"><span style="padding-left: 1em;">Copyright Information</span></h1> <h1 class="thick_bar">Copyright Information</h1>
<div id="copyright"> <div id="copyright">
<p> <p>
Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">
@@ -141,7 +141,6 @@
<p> <p>
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>. The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
</p> </p>
<hr />
</div><!-- copyright --> </div><!-- copyright -->
<hr /> <hr />
</footer> </footer>

View File

@@ -1,6 +0,0 @@
<!--% query_call_for_shows = '
SELECT CASE WHEN COUNT(id) < 6 THEN True ELSE False END AS `request_for_shows`
FROM eps
WHERE eps.date > NOW() AND eps.date <= DATE_ADD(NOW(), INTERVAL 10 DAY)
'
%-->

View File

@@ -1,24 +0,0 @@
<!--% query_hpr_shows = '
SELECT
eps.id,
eps.explicit,
eps.date, eps.license, eps.duration,
eps.title, eps.summary, eps.tags,
eps.notes,
hosts.local_image,
hosts.hostid,
hosts.host, hosts.email, hosts.profile,
miniseries.name AS series, miniseries.id AS seriesid
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE hosts.hostid = ? AND eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
ORDER BY eps.id DESC
'
%-->
<!--% query_hpr_show_count = '
SELECT id
FROM eps
WHERE eps.hostid = ? AND eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
'
%-->

View File

@@ -1,51 +0,0 @@
<!--% query_episode_maxmin = '
WITH episode_maxmin AS (
SELECT MAX(id) AS \'latest\', MIN(id) AS \'earliest\', ? AS \'id\'
FROM eps
WHERE eps.date <= UTC_DATE()
),
episode_date AS (
SELECT eps.date
FROM eps
WHERE eps.id = ?
),
episode_previous AS (
SELECT MAX(id) AS \'previous\', ? AS \'id\'
FROM eps
INNER JOIN episode_date
ON eps.date < episode_date.date
WHERE eps.id > 1
),
episode_next AS (
SELECT MIN(id) AS \'next\', ? AS \'id\'
FROM eps
INNER JOIN episode_date
ON eps.date > episode_date.date
WHERE eps.date <= NOW()
),
comment_tallies AS (
SELECT
eps_id,
COUNT(eps_id) AS eps_tally
FROM comments
GROUP BY eps_id
)
SELECT eps.id, eps.date, eps.title, eps.duration,
eps.summary, eps.notes, eps.explicit, eps.license,
eps.tags, eps.version, eps.downloads, eps.valid,
episode_maxmin.latest, episode_maxmin.earliest,
episode_previous.previous, episode_next.next,
hosts.hostid, hosts.host,
miniseries.name AS \'series\', miniseries.id AS \'seriesid\',
miniseries.description AS \'series_description\',
COALESCE (comment_tallies.eps_tally, 0) AS eps_tally
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
INNER JOIN episode_maxmin ON eps.id = episode_maxmin.id
INNER JOIN episode_previous ON eps.id = episode_previous.id
INNER JOIN episode_next ON eps.id = episode_next.id
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
WHERE eps.id = ?
'
%-->

View File

@@ -1,15 +0,0 @@
<!--% query_episodes = 'SELECT
eps.id,
eps.explicit,
eps.date, eps.license, eps.title, eps.summary,
eps.duration, eps.notes, eps.tags,
hosts.hostid,
hosts.host, hosts.email, hosts.local_image,
miniseries.name AS series, miniseries.id AS seriesid
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE eps.date <= UTC_DATE()
ORDER BY eps.id DESC'
%-->

View File

@@ -1,2 +0,0 @@
<!--% query_ids_episode = 'select eps.id from eps order by eps.id' %-->

View File

@@ -1,58 +0,0 @@
<!--% query_next_available_episode = '
SELECT id, date FROM eps e WHERE id = (
SELECT id + 1 FROM eps mo
WHERE NOT EXISTS (
SELECT NULL
FROM eps mi
WHERE mi.id = mo.id + 1
)
ORDER BY id
LIMIT 1) - 1
'
%-->
<!--% query_latest_episodes = '
WITH comment_tallies AS (
SELECT
eps_id,
COUNT(eps_id) AS eps_tally
FROM comments
GROUP BY eps_id
)
SELECT
eps.id,
eps.explicit,
eps.date, eps.license, eps.duration,
eps.title, eps.summary, eps.tags,
eps.notes,
hosts.local_image,
hosts.hostid,
hosts.host, hosts.email,
miniseries.name AS series, miniseries.id AS seriesid,
COALESCE (comment_tallies.eps_tally, 0) AS eps_tally
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
WHERE eps.date <= UTC_DATE()
ORDER BY eps.id DESC
LIMIT 10
'
%-->
<!--% query_last_5_weeks_episodes = '
SELECT
eps.id,
eps.explicit,
eps.date, eps.license, eps.title, eps.summary,
eps.duration, eps.notes, eps.tags,
hosts.hostid,
hosts.host, hosts.email, hosts.local_image,
miniseries.name AS series, miniseries.id AS seriesid
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE eps.date <= UTC_DATE()
ORDER BY eps.id DESC
LIMIT 30 OFFSET 10
'
%-->

View File

@@ -1,15 +0,0 @@
<!--% query_episodes = 'SELECT miniseries.id, miniseries.name, miniseries.description,
miniseries.private, miniseries.image, miniseries.valid,
ep.number_of_episodes, ep.latest_show, ep.earliest_show
FROM miniseries
INNER JOIN
(SELECT series,
COUNT(eps.id) AS number_of_episodes,
MAX(eps.date) AS latest_show,
MIN(eps.date) AS earliest_show
FROM eps
WHERE eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
GROUP BY series) AS ep ON ep.series = miniseries.id
ORDER BY name'
%-->

View File

@@ -1,29 +0,0 @@
<!--% query_series_sql = 'SELECT miniseries.id, miniseries.name,
miniseries.description,
miniseries.private, miniseries.image, miniseries.valid,
ep.number_of_episodes, ep.latest_show, ep.earliest_show
FROM miniseries
INNER JOIN
(SELECT series,
COUNT(eps.id) AS number_of_episodes,
MAX(eps.date) AS latest_show,
MIN(eps.date) AS earliest_show
FROM eps
WHERE eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
GROUP BY series) AS ep ON ep.series = miniseries.id
WHERE miniseries.id = ?
ORDER BY name'
%-->
<!--% query_shows_sql = 'SELECT
id, date, title,
duration, summary, notes,
explicit, eps.license, tags,
hosts.host, hosts.hostid
FROM eps
INNER JOIN hosts
ON eps.hostid = hosts.hostid
WHERE series = ? AND eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
ORDER BY eps.id DESC
'
%-->

View File

@@ -1 +0,0 @@
<!--% query_tags = 'SELECT id, tags FROM eps' %-->

View File

@@ -3,9 +3,10 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% USE date %--> <!--% USE date %-->
<!--% USE HTML.Strip emit_spaces = 0 %-->
<channel> <channel>
<title>Hacker Public Radio ~ Comment Feed</title> <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> <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> <language>en-us</language>
<copyright>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License</copyright> <copyright>Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) License</copyright>
@@ -15,15 +16,15 @@
<docs>https://www.rssboard.org/rss-specification</docs> <docs>https://www.rssboard.org/rss-specification</docs>
<ttl>600</ttl> <ttl>600</ttl>
<image> <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> <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> <description>The Hacker Public Radio Old Microphone Logo</description>
<height>164</height> <height>164</height>
<width>144</width> <width>144</width>
</image> </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) %--> <!--% USE DBI(constants.driver) %-->
<!--% FOREACH response IN DBI.query('SELECT max( comment_timestamp) AS latest_update FROM comments') %--> <!--% FOREACH response IN DBI.query('SELECT max( comment_timestamp) AS latest_update FROM comments') %-->
<pubDate><!--% format_feed_date(response.latest_update) %--></pubDate> <pubDate><!--% format_feed_date(response.latest_update) %--></pubDate>
@@ -49,15 +50,15 @@
%--> %-->
<item> <item>
<title><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></title> <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 %-->)</author> <author>feedback.nospam@nospam.hackerpublicradio.org (<!--% item.comment_author_name | html_strip | xml_entity %-->)</author>
<link><!--% baseurl %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comments</link> <link><!--% absolute_url(http_baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comments</link>
<description><![CDATA[<strong> <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 %--> <!--% display_episode_duration(item.episode_duration) %--><!--% display_listen_in(item.eps_id) %--><br /><!--% item.comment_text FILTER html_line_break %-->
]]></description> ]]></description>
<pubDate><!--% format_feed_date(item.comment_timestamp) %--></pubDate> <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> </item>
<!--% END %--> <!--% END %-->
</channel> </channel>

View File

@@ -1,5 +1,5 @@
<!--% PROCESS 'shared-item.tpl.xml' %--> <!--% PROCESS 'shared-item.tpl.xml' %-->
<!--% PROCESS "rss-query-hpr-${constants.database}.tpl.xml" %--> <!--% PROCESS "rss-query-hpr.tpl.xml" %-->
<!--% FOREACH episode IN feed_result %--> <!--% FOREACH episode IN feed_result %-->
<!--% display_item(episode, media_file_extension, audio_mime_type) %--> <!--% display_item(episode, media_file_extension, audio_mime_type) %-->
<!--% END %--> <!--% END %-->

View File

@@ -1,5 +1,5 @@
<!--% PROCESS 'shared-item.tpl.xml' %--> <!--% PROCESS 'shared-item.tpl.xml' %-->
<!--% PROCESS "rss-query-hpr_total-${constants.database}.tpl.xml" %--> <!--% PROCESS "rss-query-hpr_total.tpl.xml" %-->
<!--% FOREACH episode IN feed_result %--> <!--% FOREACH episode IN feed_result %-->
<!--% display_item(episode, media_file_extension, audio_mime_type) %--> <!--% display_item(episode, media_file_extension, audio_mime_type) %-->
<!--% END %--> <!--% END %-->

View File

@@ -1,26 +0,0 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_hpr_feed = DBI.prepare('
SELECT
eps.id,
eps.explicit,
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
eps.license, eps.duration,
eps.title, eps.summary, eps.tags,
eps.notes,
hosts.local_image,
hosts.hostid,
hosts.host, hosts.email,
miniseries.name AS series, miniseries.id AS seriesid,
assets.size AS length
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
INNER JOIN assets ON eps.id = assets.episode_id
WHERE eps.date <= UTC_DATE()
AND assets.extension = ?
ORDER BY eps.date DESC
LIMIT 10
')
%-->
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->

View File

@@ -1,4 +1,4 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% query_hpr_feed = DBI.prepare(' <!--% query_hpr_feed = DBI.prepare('
SELECT SELECT
eps.id, eps.id,

View File

@@ -1,25 +0,0 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_hpr_feed = DBI.prepare('
SELECT
eps.id,
eps.explicit,
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
eps.license, eps.duration,
eps.title, eps.summary, eps.tags,
eps.notes,
hosts.local_image,
hosts.hostid,
hosts.host, hosts.email,
miniseries.name AS series, miniseries.id AS seriesid,
assets.size AS length
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
INNER JOIN assets ON eps.id = assets.episode_id
WHERE eps.date < UTC_DATE()
AND assets.extension = ?
ORDER BY eps.date DESC
')
%-->
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->

View File

@@ -1,4 +1,4 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver) %-->
<!--% query_hpr_feed = DBI.prepare(' <!--% query_hpr_feed = DBI.prepare('
SELECT SELECT
eps.id, eps.id,

View File

@@ -1,5 +1,5 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS "queries-call_for_shows-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-call_for_shows.tpl.html" %-->
<!--% MACRO display_call_for_shows BLOCK %--> <!--% MACRO display_call_for_shows BLOCK %-->
<!--% result_call_for_shows = DBI.prepare(query_call_for_shows) %--> <!--% result_call_for_shows = DBI.prepare(query_call_for_shows) %-->
<!--% results_call_for_shows = result_call_for_shows.execute().get_all() %--> <!--% results_call_for_shows = result_call_for_shows.execute().get_all() %-->

View File

@@ -1,4 +1,5 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-show-transcript.tpl.html' %-->
<!--% MACRO rss_show_series(series, series_id) IF series != "general" %--> <!--% MACRO rss_show_series(series, series_id) IF series != "general" %-->
from the series <em><a href="<!--% baseurl %-->series/<!--% zero_pad_left(series_id) %-->.html"><!--% series %--></em></a>. from the series <em><a href="<!--% baseurl %-->series/<!--% zero_pad_left(series_id) %-->.html"><!--% series %--></em></a>.
@@ -24,7 +25,7 @@ from the series <em><a href="<!--% baseurl %-->series/<!--% zero_pad_left(series
Listen in Listen in
<!--% IF episode_type == 'hpr' %--> <!--% IF episode_type == 'hpr' %-->
<a href="<!--% media_path(eps_id, episode_type, 'ogg', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">ogg</a>, <a href="<!--% media_path(eps_id, episode_type, 'ogg', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">ogg</a>,
<a href="<!--% media_path(eps_id, episode_type, 'spx', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">spx</a>, <a href="<!--% media_path(eps_id, episode_type, 'opus', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">opus</a>,
or or
<!--% END %--> <!--% END %-->
<a href="<!--% media_path(eps_id, episode_type, 'mp3', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">mp3</a> format. <a href="<!--% media_path(eps_id, episode_type, 'mp3', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(eps_id) %--> as">mp3</a> format.
@@ -35,7 +36,7 @@ or
<!--% END %--> <!--% END %-->
<!--% MACRO show_meta(show, hide_tags) BLOCK %--> <!--% MACRO show_meta(show, hide_tags) BLOCK %-->
<span><label>Released:</label> <!--% show.date %-->.</span> <span><label>Released:</label> <!--% day_and_date(show.date) %-->.</span>
<span><label>Duration:</label> <!--% display_episode_duration(show.duration) %-->.</span> <span><label>Duration:</label> <!--% display_episode_duration(show.duration) %-->.</span>
<span><label>Flag:</label> <!--% display_explicit(show.explicit) %-->.</span> <span><label>Flag:</label> <!--% display_explicit(show.explicit) %-->.</span>
<span><!--% show_series(show.series, show.seriesid) %--></span> <br> <span><!--% show_series(show.series, show.seriesid) %--></span> <br>
@@ -57,7 +58,7 @@ or
<!--% MACRO twat_show_summary(show, hide_host) BLOCK %--> <!--% MACRO twat_show_summary(show, hide_host) BLOCK %-->
<h3 class="title"><a href="<!--% absolute_path(baseurl) %-->eps/twat<!--% zero_pad_left(show.id) %-->/index.html">Today with a Techie Ep.<!--% show.id %--> :: <!--% show.title %--></a> <!--% IF hide_host == "" %--> <h3 class="title"><a href="<!--% absolute_path(baseurl) %-->eps/twt<!--% zero_pad_left(show.id) %-->/index.html">Today with a Techie Ep.<!--% show.id %--> :: <!--% show.title %--></a> <!--% IF hide_host == "" %-->
hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(show.hostid) %-->.html"><!--% show.host %--></a> hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(show.hostid) %-->.html"><!--% show.host %--></a>
<!--% END %--> <!--% END %-->
</h3> </h3>

View File

@@ -1,4 +1,5 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %--> <!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS 'shared-show-transcript.tpl.html' %-->
<!--% MACRO listen_now(episode, episode_type, baseurl, media_baseurl, hide_duration) BLOCK %--> <!--% MACRO listen_now(episode, episode_type, baseurl, media_baseurl, hide_duration) BLOCK %-->
<p><!--% display_listen_in(episode.id, episode_type) %--> Play now:<br> <p><!--% display_listen_in(episode.id, episode_type) %--> Play now:<br>
@@ -7,6 +8,7 @@
<source src="<!--% media_path(episode.id, episode_type, 'mp3', baseurl, media_baseurl) %-->" type="audio/mpeg" > <source src="<!--% media_path(episode.id, episode_type, 'mp3', baseurl, media_baseurl) %-->" type="audio/mpeg" >
</audio> </audio>
<!--% IF !hide_duration %--><br> <!--% IF !hide_duration %--><br>
Duration: <!--% display_episode_duration(episode.duration) %--><!--% END %--></p> Duration: <!--% display_episode_duration(episode.duration) %--><!--% END %-->
<!--% IF episode_type == "hpr" %--><br><!--% show_transcript(episode, episode_type, baseurl, media_baseurl) %--><!--% END %--></p>
<!--% END %--> <!--% END %-->

View File

@@ -1,14 +1,5 @@
<!--% MACRO show_transcript(episode, episode_type, baseurl, media_baseurl) BLOCK %--> <!--% MACRO show_transcript(episode, episode_type, baseurl, media_baseurl) BLOCK %-->
<h2>Show Transcript</h2> Download the <a href="<!--% media_path(episode.id, episode_type, 'txt', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(episode.id) %-->">transcription</a></li> and
<p>Automatically generated using <a href="https://github.com/openai/whisper">whisper</a> <a href="<!--% media_path(episode.id, episode_type, 'srt', baseurl, media_baseurl) %-->" aria-label="Download <!--% episode_type %--><!--% zero_pad_left(episode.id) %-->">subtitles</a>.
<pre><code>whisper --model tiny --language en hpr<!--% zero_pad_left(episode.id) %-->.wav</code></pre></p>
<p>
You can save these subtitle files to the same location as the HPR Episode, and they will automatically show in players like <a href="https://mpv.io/">mpv</a>, <a href="https://www.videolan.org/vlc/">vlc</a>. Some players allow you to specify the subtitle file location.
</p>
<ul>
<li>Text: <a href="<!--% media_path(episode.id, episode_type, 'txt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.txt</a></li>
<li><a href="https://en.wikipedia.org/wiki/WebVTT">WebVTT</a>: <a href="<!--% media_path(episode.id, episode_type, 'vtt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.vtt</a></li>
<li><a href="https://en.wikipedia.org/wiki/SubRip">SubRip</a>: <a href="<!--% media_path(episode.id, episode_type, 'srt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.srt</a></li>
</ul>
<!--% END %--> <!--% END %-->

View File

@@ -49,6 +49,15 @@
<!--% iso8601_date.format(date_to_format) %--> <!--% iso8601_date.format(date_to_format) %-->
<!--% END %--> <!--% END %-->
<!--% MACRO day_from_date(eps_date) BLOCK %-->
<!--% USE eps_day = date(format => '%A', locale => 'en_US', gmt => 1) %-->
<!--% eps_day.format("$eps_date 0:0:0") %-->
<!--% END %-->
<!--% MACRO day_and_date(eps_date) BLOCK %-->
<!--% day_from_date(eps_date) %-->, <!--% eps_date %-->
<!--% END %-->
<!--% MACRO tag_to_id(tag, is_index) BLOCK %--> <!--% MACRO tag_to_id(tag, is_index) BLOCK %-->
<!--% tag = tag.replace('\s+','_') %--> <!--% tag = tag.replace('\s+','_') %-->
<!--% IF is_index %--> <!--% IF is_index %-->
@@ -85,6 +94,7 @@
<!--% MACRO media_path(episode_id, episode_type, media_type, baseurl, media_baseurl) BLOCK %--> <!--% MACRO media_path(episode_id, episode_type, media_type, baseurl, media_baseurl) BLOCK %-->
<!--% IF episode_type == "twat" %--> <!--% IF episode_type == "twat" %-->
<!--% episode_type = "twt" %-->
<!--% padding = 3 %--> <!--% padding = 3 %-->
<!--% media_folder = "eps/"; padding = 3 %--> <!--% media_folder = "eps/"; padding = 3 %-->
<!--% ELSE %--> <!--% ELSE %-->
@@ -98,7 +108,7 @@
<!--% media_baseurl = "${media_baseurl}hpr\$eps_id/" %--> <!--% media_baseurl = "${media_baseurl}hpr\$eps_id/" %-->
<!--% END %--> <!--% END %-->
<!--% media_folder = "" %--> <!--% media_folder = "" %-->
<!--% media_baseurl = media_baseurl.replace('\$eps_id', zero_pad_left(episode_id)) %--> <!--% media_baseurl = media_baseurl.replace('hpr\$eps_id', episode_type _ zero_pad_left(episode_id, padding)) %-->
<!--% END %--> <!--% END %-->
<!--% media_basepath(baseurl, media_baseurl) %--><!--% media_folder %--><!--% episode_type %--><!--% zero_pad_left(episode_id, padding) %-->.<!--% media_type %--> <!--% media_basepath(baseurl, media_baseurl) %--><!--% media_folder %--><!--% episode_type %--><!--% zero_pad_left(episode_id, padding) %-->.<!--% media_type %-->
<!--% END %--> <!--% END %-->
@@ -120,3 +130,8 @@
<!--% END %--> <!--% END %-->
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last">Latest &gt;&gt;</a></small> <a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last">Latest &gt;&gt;</a></small>
<!--% END %--> <!--% END %-->
<!--% MACRO make_sfw(swf, sfw_text, nsfw_text) BLOCK %-->
<!--% IF swf == 0 %--><!--% sfw_text %-->
<!--% ELSE %--><!--% nsfw_text %-->
<!--% END %--><!--% END %-->

View File

@@ -18,7 +18,7 @@
# REVISION: --- # REVISION: ---
#=============================================================================== #===============================================================================
set -o nounset # Treat unset variables as an error set -o nounset # Treat unset variables as an error
#--- FUNCTION ---------------------------------------------------------------- #--- FUNCTION ----------------------------------------------------------------
# NAME: is_module_installed # NAME: is_module_installed
@@ -27,47 +27,41 @@ set -o nounset # Treat unset variables as an error
# RETURNS: 0 if not found, 1 if found # RETURNS: 0 if not found, 1 if found
#------------------------------------------------------------------------------- #-------------------------------------------------------------------------------
function is_module_installed { function is_module_installed {
HR="----------------------" HR="----------------------"
perl -e "use ${1} " perl -e "use ${1} "
if [ $? -ne 0 ] if [ $? -ne 0 ]; then
then echo ${HR}
echo ${HR} else
else echo "Found module ${1}"
echo "Found module ${1}" echo ${HR}
echo ${HR} fi
fi
} }
MODULES=( \ MODULES=(
"Getopt::Long" \ "Getopt::Long"
"Pod::Usage" \ "Pod::Usage"
"Config::Std" \ "Config::Std"
"Template" \ "Template"
"Template::Plugin::File" \ "Template::Plugin::File"
"Template::Plugin::DBI" \ "Template::Plugin::DBI"
"Template::Plugin::HTML::Strip" \ "Template::Plugin::HTML::Strip"
"DBI" \ "DBI"
"Tie::DBI" \ "Tie::DBI"
"DBD::SQLite" \ "DBD::SQLite"
"DBD::mysql" \ "Date::Calc"
"Date::Calc" \ "Text::CSV_XS"
"Text::CSV_XS" \
) )
echo "The following modules must be installed for the site-generator to function: " echo "The following modules must be installed for the site-generator to function: "
for module in "${MODULES[@]}" for module in "${MODULES[@]}"; do
do echo "* ${module}"
echo "* ${module}"
done done
echo "When MySQL is used, the DBD:mysql module is required (otherwise it is optional)"
echo "When SQLite is used, then the DBD:SQLite module is required (otherwise it is optional)"
echo "Scanning for modules ..." echo "Scanning for modules ..."
echo "----------------------" echo "----------------------"
for module in "${MODULES[@]}" for module in "${MODULES[@]}"; do
do is_module_installed "${module}"
is_module_installed "${module}"
done done
echo "Finished scanning." echo "Finished scanning."

0
utils/lib_utils.sh Normal file → Executable file
View File

21933
utils/tmp.FHgFpPNT3D/hpr.sql Normal file

File diff suppressed because one or more lines are too long