Archived
4
2

24 Commits

Author SHA1 Message Date
Roan Horning
b4e4187902 Merge pull request 'Fix URL's to series RSS feeds' (#80) from I78_Fix-link-to-series-RSS-links into main
Reviewed-on: #80
2023-02-26 04:13:06 +00:00
431126e8a3 Fix URL's to series RSS feeds 2023-02-25 23:06:41 -05:00
Roan Horning
91ceefd88e Merge pull request '[I62] Hide display of future shows on series pages' (#79) from I62_Hide-display-of-future-shows-on-series-pages into main
Reviewed-on: #79
2023-02-25 20:11:11 +00:00
8feb37e831 Hide display of future shows on series episodes page 2023-02-25 14:22:44 -05:00
4a34496f24 Hide display of future shows on series listings page 2023-02-25 11:44:56 -05:00
Roan Horning
f7e54233e2 Merge pull request '[I12] Implement comments_viewer page' (#77) from I12_Implement-comments-viewer into main
Reviewed-on: #77
2023-02-25 01:44:50 +00:00
59875e772e Implement comments_viewer page 2023-02-24 20:42:01 -05:00
Roan Horning
f84ee71b7c Merge pull request '[I75] Fix missing show transcipts[' (#76) from I75_Fix-missing-show-transcipts into main
Reviewed-on: #76
2023-02-25 00:06:18 +00:00
927424901b Add show_transcript MACRO to index and episode pages 2023-02-24 18:58:56 -05:00
27a84529c6 Create shared template for showing show transcripts
Used in main index page and individual episode pages.
2023-02-24 18:57:20 -05:00
59549daa63 Fix archive.org paths in media_path MACRO 2023-02-24 18:55:37 -05:00
Roan Horning
ec7a6ce379 Merge pull request 'Refactor RSS templates for either MySQL or SQLite' (#74) from I73-Fix_queries_for-RSS_feeds into main
Reviewed-on: #74
2023-02-21 03:41:55 +00:00
756bdc0fa1 Refactor RSS templates for either MySQL or SQLite 2023-02-20 22:36:30 -05:00
b2eaea1eb8 Improve look of hosts table 2023-02-12 16:54:17 -05:00
Roan Horning
fe9bf574cf Merge pull request 'Update sydication template text' (#69) from I67-Update_syndication_page into main
Reviewed-on: #69
2023-02-12 19:36:17 +00:00
309ea05c15 Update sydication template text
Now matches what is in the syndication.php page on
hakerpublicradio.org
2023-02-12 13:46:11 -05:00
Roan Horning
649d6c3746 Merge pull request 'Make tags page menu link hard coded' (#68) from I63_Fix-menu-link-to-tags-page into main
Reviewed-on: #68
2023-02-12 18:10:12 +00:00
e41f6029aa Make tags page menu link hard coded
Not implementing tags page in the static generator yet.
Make the link point to the php page on hackerpublicradio.org.
2023-02-12 13:07:06 -05:00
Roan Horning
4bd7c6f867 Merge pull request 'I64_Implement-Show-Transcript-section' (#66) from I64_Implement-Show-Transcript-section into main
Reviewed-on: #66
2023-02-12 16:07:47 +00:00
138b0fdd1b Add Show Transcript section to episode template 2023-02-12 10:58:43 -05:00
d437e66f0e Update media_path MACRO for archive.org transciption files
The whisper transcription files are stored one directory
deeper on archive.org. Add checks and correct path when
passed txt, srt, or vtt media_type.
2023-02-12 10:53:50 -05:00
Roan Horning
a213efa695 Merge pull request '[I57] MySQL implementation' (#65) from MySQL into main
Reviewed-on: #65
2023-02-12 12:59:13 +00:00
Roan Horning
314127441c Merge branch 'main' into MySQL 2023-02-12 12:57:38 +00:00
7c44f6b680 Remove New Year's Eve 2023 show announcement 2023-01-03 10:08:52 -05:00
23 changed files with 278 additions and 121 deletions

View File

@@ -235,6 +235,17 @@ pre { /* Add background, border and scrollbar to <pre> */
clear: both; clear: both;
} }
table.hosts {
background: white
}
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 {
white-space: pre-wrap;
padding: 2px;
line-height: 1.2rem;
} }
@media only screen and (max-width: 680px) { @media only screen and (max-width: 680px) {

View File

@@ -146,6 +146,10 @@ media_baseurl: https://www.hackerpublicradio.org/eps/
navigation: navigation-about.tpl.html navigation: navigation-about.tpl.html
content: content-mumble-howto.tpl.html content: content-mumble-howto.tpl.html
[comments_viewer]
navigation: navigation-about.tpl.html
content: content-comments_viewer.tpl.html
[hpr_ogg] [hpr_ogg]
root_template: rss.tpl.xml root_template: rss.tpl.xml
content: rss-hpr.tpl.xml content: rss-hpr.tpl.xml

View File

@@ -0,0 +1,43 @@
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
<!--% PROCESS 'shared-avatar.tpl.html' %-->
<!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS 'shared-listen-now.tpl.html' %-->
<!--% PROCESS "queries-episode-${constants.database}.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<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><a href="<!--% absolute_path(baseurl) %-->comments.rss">Subscribe</a> to the comment feed.</p>
<hr />
<!--% FOREACH item IN DBI.query('
SELECT C.*,
H.host, H.hostid AS host_id,
E.title AS episode_title,
E.date AS episode_date,
E.duration AS episode_duration,
M.id AS series_id, M.name AS series_name
FROM comments AS C
INNER JOIN eps AS E
ON C.eps_id = E.id
INNER JOIN hosts AS H
ON E.hostid = H.hostid
INNER JOIN miniseries AS M
ON E.series = M.id
ORDER BY C.comment_timestamp DESC
LIMIT 30
')
%-->
<article>
<header>
<h1><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></h1>
<p><small>Posted at <!--% item.comment_timestamp %--> relating to the show <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html">hpr<!--% item.eps_id %--></a> which was released on <!--% item.episode_date %--> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a> entitled <em><!--% item.episode_title %--></em></small>
</p>
</header>
<pre class="comment">
<!--% item.comment_text %-->
</pre>
<footer>
Listen in <a href="<!--% media_path(item.eps_id, 'hpr', 'ogg', baseurl, media_baseurl) %-->">ogg</a>, <a href="<!--% media_path(item.eps_id, 'hpr', 'spx', baseurl, media_baseurl) %-->">spx</a>, or <a href="<!--% media_path(item.eps_id, 'hpr', 'mp3', baseurl, media_baseurl) %-->">mp3</a> format.</p></footer>
</article>
<hr />
<!--% END %-->

View File

@@ -4,7 +4,7 @@
<p>For more information on how to become a Correspondent see our <a href="<!--% absolute_path(baseurl) %-->contribute.html">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_path(baseurl) %-->contribute.html">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, constants.user, constants.password) %-->
<!--% PROCESS 'shared-avatar.tpl.html' %--> <!--% PROCESS 'shared-avatar.tpl.html' %-->
<table> <table class="hosts">
<th >Avatar</th> <th >Avatar</th>
<th >Name &amp; Host ID</th> <th >Name &amp; Host ID</th>
<th >license</th> <th >license</th>
@@ -16,7 +16,7 @@
inner join (select hostid, max(date) as date from eps group by hostid) as e inner join (select hostid, max(date) as date from eps group by hostid) as e
on h.hostid = e.hostid ' on h.hostid = e.hostid '
) %--> ) %-->
<tr height="80" bgcolor="#CCCCCC"> <tr height="80">
<td><img src="<!--% absolute_path(baseurl) %-->images/<!--% get_avatar(host.hostid) %-->" height="80" width="80" alt="avatar" /></td> <td><img src="<!--% absolute_path(baseurl) %-->images/<!--% get_avatar(host.hostid) %-->" height="80" width="80" alt="avatar" /></td>
<td><strong><!--% host.host %--></strong><br> <td><strong><!--% host.host %--></strong><br>

View File

@@ -2,6 +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' %-->
<!--% PROCESS 'shared-show-transcript.tpl.html' %-->
<!--% PROCESS "queries-episode-${constants.database}.tpl.html" %--> <!--% PROCESS "queries-episode-${constants.database}.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)
@@ -27,6 +28,9 @@ Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pa
</header> </header>
<div><!--% episode.notes %--></div> <div><!--% episode.notes %--></div>
<footer> <footer>
<!--% show_transcript(episode, "hpr", baseurl, media_baseurl) %-->
<!--% listen_now(episode, "hpr", baseurl, media_baseurl) %--> <!--% listen_now(episode, "hpr", baseurl, media_baseurl) %-->
<p> <p>
<!--% episode_navigation %--> <!--% episode_navigation %-->

View File

@@ -1,74 +1,2 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<hr>
<h2><u>The Eleventh Annual 26 Hour New Years Eve Show</u></h2>
<p>
<img src="<!--% absolute_path(baseurl) %-->images/livestream.png" /><br />
<audio controls autoplay>
<source src="https://stream.lugcast.mywire.org/stream" type="audio/mpeg" >
</audio> <br />
<a href="https://stream.lugcast.mywire.org/stream">https://stream.lugcast.mywire.org/stream</a><br />
<a href="https://hackerpublicradio.org/live">https://hackerpublicradio.org/live</a><br />
</p>
<h3>Welcome every <a href="https://www.timeanddate.com/counters/multicountdown.html">TimeZone</a>!</h3>
<p><em>If you keep talking, we'll keep recording.</em> </p>
<p>For those who don't know, on New Years Eve 2022-12-31 10:00 UTC (5:00 AM EST), we will have a recording going on the HPR Mumble server for anyone to come on and say "Happy New Years" and talk about whatever they want. We will leave the recording going until at least 2023-01-01 12:00 UTC (7:00 AM EST), and keep recording until the conversation stops.<br>
So please stop in. Say "Hi" and maybe join in the conversation with other HPR listeners and contributors. It's always a good time!!</p>
<h3>Join the conversation on Mumble</h3>
<p>Already have Mumble installed, then <a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0">this link will bring you to the HPR Room</a></p>
<p>Get the PC Client <a href="https://wiki.mumble.info/wiki/Main_Page">https://wiki.mumble.info/wiki/Main_Page</a><br>
Get the Android Client Mumla <a href="https://f-droid.org/packages/se.lublin.mumla">https://f-droid.org/packages/se.lublin.mumla</a><br>
<p>Then join the Server: <strong>chatter.skyehaven.net</strong><br>
Port: <strong>64738</strong><br>
Channel: <strong>HPR</strong></p>
<p>For those who have never used Mumble before, see this <a href="<!--% absolute_path(baseurl) %-->mumble-howto.html">how-to explaining the setup of the desktop Mumble client</a>, or listen to <a href="<!--% absolute_path(baseurl) %-->eps/hpr3503/index.html">hpr3503 :: Configuring Mumble</a>.</p>
<h3>Add to the Show-notes</h3>
<p>
<strong>Please help fill out the show notes</strong><br />
<a href="https://shownotes.lugcast.mywire.org/p/hpr-nye-2022">https://shownotes.lugcast.mywire.org/p/hpr-nye-2022</a><br />
We are using Etherpad for people to share links and info to things they are discussing. The Etherpad will be used for the HPR audio shownotes so please feel free to add to it. The entire event will be broken into 2 to 3 hour segments and made available as HPR episodes.<br/>
<em>This really, really helps us out to post the show faster !</em>
</p>
<h3>Record to the Show</h3>
<p>
We're going to release the show as a podcast, so it would be great if you could grab a copy as a backup.
<pre>
while true;do timestamp="$HOSTNAME-$(\date -u +%Y-%m-%d_%H-%M-%SZ_%A)"; echo "Recording ${timestamp}";cvlc "https://stream.lugcast.mywire.org/stream" --sout "file/mp3:${timestamp}.mp3" --run-time="3600" vlc://quit;done
</pre>
</p>
<!--
while true;do ffmpeg -i https://hackerpublicradio.org/live -c copy hprnye-$( \date -u +%s )-$( \date -u +%Y%m%dT%H%M%SZ )-${HOSTNAME}.mp3; done
<p>
The show will be held on the <a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0">HPR Room on Mumble</a>, so now you can prepare by installing the <a href="https://wiki.mumble.info/wiki/Main_Page">mumble PC Client</a>, or the <a href="https://f-droid.org/packages/se.lublin.mumla">mumla Android Client</a>. The Server we will use is: <strong>chatter.skyehaven.net</strong>, Port: <strong>64738</strong>, Channel: <strong>HPR</strong>
</p>
<h3>Spread the Word</h3>
<p>If you are a podcaster please spread the word by including either the <a href="https://hackerpublicradio.org/promote/new-year-show-promo.ogg">ogg</a>, <a href="https://hackerpublicradio.org/promote/new-year-show-promo.mp3">mp3</a>, or <a href="https://hackerpublicradio.org/promote/new-year-show-promo.wav">wav</a> in your show ! <br>
<audio controls preload="none">";
<source src="https://hackerpublicradio.org/promote/new-year-show-promo.ogg" type="audio/ogg" >
<source src="https://hackerpublicradio.org/promote/new-year-show-promo.mp3" type="audio/mpeg" >
</audio></p>
<p>
If you prefer to just listen to the show and not participate using Mumble, use the link below for the live audio stream using your web browser or favorite audio application such as VLC, or live in your web browser.<br/>
</p>
It's that time of year again. Time for the 24 hr (26 hr) New Years Eve Show.
-->

View File

@@ -1,6 +1,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' %-->
<!--% 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-${constants.database}.tpl.html" %-->
@@ -51,6 +52,8 @@
</header> </header>
<!--% latest_episodes.notes %--> <!--% latest_episodes.notes %-->
<footer> <footer>
<!--% show_transcript(latest_episodes, "hpr", baseurl, media_baseurl) %-->
<!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %--> <!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %-->
</footer> </footer>
</article> </article>

View File

@@ -1,28 +1,16 @@
<!--% PROCESS 'shared-utils.tpl.html' %--> <!--% PROCESS 'shared-utils.tpl.html' %-->
<!--% PROCESS "queries-series-${constants.database}.tpl.html" %-->
<article> <article>
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<h1 class="title">In-Depth Series</h1> <h1 class="title">In-Depth Series</h1>
<!--% FOREACH series IN DBI.query( <!--% FOREACH series IN DBI.query(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
GROUP BY series) AS ep ON ep.series = miniseries.id
ORDER BY name'
) %-->
<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>
<ul> <ul>
<li>Number of episodes: <!--% series.number_of_episodes %--></li> <li>Number of episodes: <!--% series.number_of_episodes %--></li>
<li>Open/closed: <!--% display_choice(series.private, 'closed', 'open') %--></li> <li>Open/closed: <!--% display_choice(series.private, 'closed', 'open') %--></li>
<li>Date of earliest show: <!--% series.earliest_show %--></li> <li>Date of earliest show: <!--% series.earliest_show %--></li>
<li>Date of latest show: <!--% series.latest_show %--></li> <li>Date of latest show: <!--% series.latest_show %--></li>
<li>Series RSS feeds: <a href="hpr_ogg_rss.php?series=38">ogg</a>, <a href="hpr_spx_rss.php?series=38">spx</a>, <a href="hpr_mp3_rss.php?series=38">mp3</a></li> <li>Series RSS feeds: <a href="https://www.hackerpublicradio.org/hpr_ogg_rss.php?series=<!--% series.id %-->">ogg</a>, <a href="https://www.hackerpublicradio.org/hpr_spx_rss.php?series=<!--% series.id %-->">spx</a>, <a href="https://www.hackerpublicradio.org/hpr_mp3_rss.php?series=<!--% series.id %-->">mp3</a></li>
</ul> </ul>
<em><!--% series.description %--></em> <em><!--% series.description %--></em>
<!--% END %--> <!--% END %-->

View File

@@ -1,20 +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 "queries-series_episodes-${constants.database}.tpl.html" %-->
<!--% USE DBI(constants.driver, constants.user, constants.password) %--> <!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_series = DBI.prepare('SELECT miniseries.id, miniseries.name, <!--% query_series = DBI.prepare(query_series_sql)
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
GROUP BY series) AS ep ON ep.series = miniseries.id
WHERE miniseries.id = ?
ORDER BY name')
%--> %-->
<!--% series_result = query_series.execute(id) %--> <!--% series_result = query_series.execute(id) %-->
<article> <article>
@@ -25,21 +13,11 @@
<li>Open/closed: open</li> <li>Open/closed: open</li>
<li>Date of earliest show: <!--% series.earliest_show %--></li> <li>Date of earliest show: <!--% series.earliest_show %--></li>
<li>Date of latest show: <!--% series.latest_show %--></li> <li>Date of latest show: <!--% series.latest_show %--></li>
<li>Series RSS feeds: <a href="hpr_ogg_rss.php?series=79&full=1&gomax=1">ogg</a>, <a href="hpr_spx_rss.php?series=79&full=1&gomax=1">spx</a>, <a href="hpr_mp3_rss.php?series=79&full=1&gomax=1">mp3</a></li> <li>Series RSS feeds: <a href="https://www.hackerpublicradio.org/hpr_ogg_rss.php?series=<!--% series.id %-->&full=1&gomax=1">ogg</a>, <a href="https://www.hackerpublicradio.org/hpr_spx_rss.php?series=<!--% series.id %-->&full=1&gomax=1">spx</a>, <a href="https://www.hackerpublicradio.org/hpr_mp3_rss.php?series=<!--% series.id %-->&full=1&gomax=1">mp3</a></li>
</ul> </ul>
<div><em><!--% series.description %--></em></div> <div><em><!--% series.description %--></em></div>
<!--% END %--> <!--% END %-->
<!--% query_shows = DBI.prepare('SELECT <!--% query_shows = DBI.prepare(query_shows_sql)
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 = ?
ORDER BY eps.id DESC
')
%--> %-->
<!--% show_results = query_shows.execute(id) %--> <!--% show_results = query_shows.execute(id) %-->
<!--% FOREACH show IN show_results %--> <!--% FOREACH show IN show_results %-->

View File

@@ -1,3 +1,51 @@
<h1>RSS Syndication</h1>
<p><small><em><a href="http://hackerpublicradio.org/advanced_rss_settings.php">Advanced Settings</a>.</em></small></p>
<article>
<header>
<h2>Subscribe to our Feeds</h2>
</header>
<p>
Great that you want to listen. Have a look below at the feeds that best suite your listening habits.
</p>
</article>
<article>
<header>
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> The Community News Summary</h2>
<h3>One show a month</h3>
</header>
<p>
If you get overwhelmend by the amount of shows we produce, then this is a good place to start.
</p>
<p>
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>
<ul>
<li><a href="https://hackerpublicradio.org/hpr_ogg_rss.php?series=47">ogg</a> Larger file size higher quality feed.</li>
<li><a href="https://hackerpublicradio.org/hpr_spx_rss.php?series=47">mp3</a> Larger file size regular quality feed in a common format.</li>
<li><a href="https://hackerpublicradio.org/hpr_mp3_rss.php?series=47">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li>
</ul>
<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.
</p>
</article>
<article>
<header>
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Two week Audio feed</h2>
<h3>5 shows a week</h3>
</header>
<p>
Use these feeds to keep up to date with the latest HPR Episodes.
</p>
<ul>
<li><a href="hpr_ogg_rss.php">ogg</a> Larger file size higher quality feed.</li>
<li><a href="hpr_rss.php">mp3</a> Larger file size regular quality feed in a common format.</li>
<li><a href="hpr_spx_rss.php">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li>
</ul>
<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.
</p>
</article>
<article> <article>
<header> <header>
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Entire Archive Audio feed</h2> <h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Entire Archive Audio feed</h2>

View File

@@ -5,7 +5,7 @@
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a></li> <li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a></li>
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Give Shows</a></li> <li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Give Shows</a></li>
<li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute</a></li> <li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute</a></li>
<li><a href="<!--% absolute_path(baseurl) %-->tags.html">Tags</a></li> <li><a href="http://www.hackerpublicradio.org/tags.php">Tags</a></li>
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a></li> <li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a></li>
<li><a href="<!--% absolute_path(baseurl) %-->search.html">Search</a></li> <li><a href="<!--% absolute_path(baseurl) %-->search.html">Search</a></li>
</ul> </ul>

View File

@@ -0,0 +1,15 @@
<!--% 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

@@ -0,0 +1,15 @@
<!--% 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(\'now\', \'+1 days\')
GROUP BY series) AS ep ON ep.series = miniseries.id
ORDER BY name'
%-->

View File

@@ -0,0 +1,29 @@
<!--% 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

@@ -0,0 +1,28 @@
<!--% 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(\'now\', \'+1 days\')
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(\'now\', \'+1 days\')
ORDER BY eps.id DESC
'
%-->

View File

@@ -1,5 +1,5 @@
<!--% PROCESS 'shared-item.tpl.xml' %--> <!--% PROCESS 'shared-item.tpl.xml' %-->
<!--% PROCESS 'rss-query-hpr.tpl.xml' %--> <!--% PROCESS "rss-query-hpr-${constants.database}.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.tpl.xml' %--> <!--% PROCESS "rss-query-hpr_total-${constants.database}.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

@@ -0,0 +1,23 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_hpr_feed = DBI.prepare('
SELECT
eps.id,
eps.explicit,
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) 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
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE eps.date < date(\'now\', \'+1 days\')
ORDER BY eps.date DESC
LIMIT 10
')
%-->
<!--% feed_result = query_hpr_feed.execute() %-->

View File

@@ -0,0 +1,22 @@
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
<!--% query_hpr_feed = DBI.prepare('
SELECT
eps.id,
eps.explicit,
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) 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
FROM eps
INNER JOIN hosts ON eps.hostid = hosts.hostid
INNER JOIN miniseries ON eps.series = miniseries.id
WHERE eps.date < date(\'now\', \'+1 days\')
ORDER BY eps.date DESC
')
%-->
<!--% feed_result = query_hpr_feed.execute() %-->

View File

@@ -0,0 +1,12 @@
<!--% MACRO show_transcript(episode, episode_type, baseurl, media_baseurl) BLOCK %-->
<h2>Show Transcript</h2>
<p>Automatically generated using <a href="https://github.com/openai/whisper">whisper</a>
<pre><code>whisper --model tiny --language en hpr<!--% zero_pad_left(episode.id) %-->.wav</code></pre></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 %-->

View File

@@ -4,7 +4,7 @@
<!--% ELSE %--> <!--% ELSE %-->
<!--% zero_pad_format = "%04s" %--> <!--% zero_pad_format = "%04s" %-->
<!--% END %--> <!--% END %-->
<!--% USE String(word) %--> <!--% USE String(word) %-->
<!--% String.format(zero_pad_format) %--> <!--% String.format(zero_pad_format) %-->
<!--% END %--> <!--% END %-->
@@ -59,6 +59,12 @@
<!--% media_folder = "local/" %--> <!--% media_folder = "local/" %-->
<!--% END %--> <!--% END %-->
<!--% IF media_baseurl %--> <!--% IF media_baseurl %-->
<!--% transcription_types = "txt srt vtt" %-->
<!--% USE String(transcription_types) %-->
<!--% USE String(media_baseurl) %-->
<!--% IF transcription_types.search(media_type) && media_baseurl.search('archive.org') %-->
<!--% media_baseurl = "${media_baseurl}hpr\$eps_id/" %-->
<!--% END %-->
<!--% media_folder = "" %--> <!--% media_folder = "" %-->
<!--% media_baseurl = media_baseurl.replace('\$eps_id', zero_pad_left(episode_id)) %--> <!--% media_baseurl = media_baseurl.replace('\$eps_id', zero_pad_left(episode_id)) %-->
<!--% END %--> <!--% END %-->