Compare commits
130 Commits
b3e9ccc546
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
| b62197a95f | |||
| 431ec2b946 | |||
| 130588bad9 | |||
| 4648710079 | |||
| 756151908d | |||
| cc0c422350 | |||
| dc6c96f5bb | |||
| 0eefb633a5 | |||
| b246f2c70f | |||
| a7e1c2f050 | |||
| 640606b8ab | |||
| 37bc952aa3 | |||
| a73c038743 | |||
| 47446fc385 | |||
| 69dc0cf8f0 | |||
| 6e6467f51b | |||
| 138c2e7946 | |||
| 8420bb75a3 | |||
|
e1be81a4ad
|
|||
|
fd577942e6
|
|||
|
3cc4a6b5d3
|
|||
|
47b2c588b8
|
|||
|
5bdda3c1ef
|
|||
|
7cea36879c
|
|||
| abd1937fb6 | |||
|
4750a08456
|
|||
| e56592152f | |||
|
5d4a7ad639
|
|||
| 6e07ee5e0a | |||
| bdf48827f0 | |||
| 27920e7b9f | |||
|
a9b757232f
|
|||
|
ef4302f8d4
|
|||
|
4e9bc7e6c2
|
|||
|
8c70c83261
|
|||
|
95ad45c6e3
|
|||
|
9e711c6620
|
|||
| 079b4be448 | |||
| 988c6f8593 | |||
| b1da08572f | |||
| dca0945932 | |||
| 63c25d2f19 | |||
| c2ad703409 | |||
| b1f0420526 | |||
| 175bf2dd57 | |||
| fbff5bc6a1 | |||
| ea85c3de61 | |||
|
ad21bb045c
|
|||
|
1cc9211e95
|
|||
|
fc12c7ae5c
|
|||
|
6a64ebd95e
|
|||
|
c349abfded
|
|||
| 30e4f6a4d8 | |||
| e43386ac95 | |||
|
2f273d61dd
|
|||
|
57d5989b29
|
|||
| 292e501f69 | |||
|
824c2d77c7
|
|||
| 5464725b7d | |||
|
f61fe7c6c8
|
|||
| 611a022aab | |||
|
9ecb30f51f
|
|||
| e885c78fb5 | |||
|
0a5dea473b
|
|||
| de316e7f6b | |||
|
7161b99eb0
|
|||
| 84e89a53ad | |||
|
5004f4fe88
|
|||
|
6520bdac8b
|
|||
| 2eece012fa | |||
|
3d74b6f084
|
|||
| 24f2b5f9ee | |||
|
020d6395c1
|
|||
| a40774b1e8 | |||
|
face5e1fbe
|
|||
|
7b9e8a94f0
|
|||
| 3ca1a903df | |||
|
ae5bfc12b4
|
|||
|
21c664ecf9
|
|||
|
c17ce1bf74
|
|||
|
c922ea6281
|
|||
|
98c51ee9fe
|
|||
|
ae96d602a4
|
|||
| 904d14d083 | |||
|
7170015a0e
|
|||
| e649c09803 | |||
|
eeb955d9fe
|
|||
|
b2f5322aec
|
|||
|
23f91a0410
|
|||
|
2be718287f
|
|||
| 3bd64bf5cf | |||
|
7a59a769ed
|
|||
|
30cca2bac0
|
|||
| 3a475742e4 | |||
|
4e2ecc4efc
|
|||
|
c85a4b8c6e
|
|||
| f11106223c | |||
|
1ad43c462a
|
|||
| 3bcd385279 | |||
|
aa722bda55
|
|||
|
ed6779fa5a
|
|||
|
126e184126
|
|||
|
192d994556
|
|||
| 2f779fb9d0 | |||
|
7a02c7b1c1
|
|||
| 48fbd272e4 | |||
|
b850c51e4f
|
|||
|
3bf5769b52
|
|||
| 67e56ea102 | |||
|
2c9e75bf1a
|
|||
| ccc904c691 | |||
|
d0c371a0f9
|
|||
|
466ef289b1
|
|||
|
b5755ddedb
|
|||
|
2a119bd920
|
|||
|
a8dc69d7ad
|
|||
|
09f5c60d60
|
|||
|
b122f7c1c0
|
|||
|
70fd148928
|
|||
|
c53c6d50aa
|
|||
|
c4d94bb019
|
|||
|
1075833562
|
|||
|
fb46c13394
|
|||
| f78789fdc4 | |||
| 4327c15823 | |||
|
39c14fb3e4
|
|||
|
47e1ebf69c
|
|||
|
88f9362279
|
|||
|
96e4d9a402
|
|||
|
fc1dedf4b2
|
24
Dockerfile
Normal file
@@ -0,0 +1,24 @@
|
||||
FROM perl:stable
|
||||
|
||||
RUN cpanm Config::Std \
|
||||
&& cpanm Template \
|
||||
&& cpanm Template::Plugin::DBI \
|
||||
&& cpanm Template::Plugin::HTML::Strip \
|
||||
&& cpanm DBD::SQLite \
|
||||
&& cpanm Tie::DBI \
|
||||
&& cpanm Date::Calc \
|
||||
&& cpanm Text::CSV_XS \
|
||||
&& cpanm HTML::Entities \
|
||||
&& mkdir -p /usr/src/app
|
||||
|
||||
WORKDIR /usr/src/app
|
||||
|
||||
ADD site-generator /usr/src/app/site-generator
|
||||
ADD site.cfg /usr/src/app/site.cfg
|
||||
ADD templates /usr/src/app/templates
|
||||
ADD LICENSE /usr/src/app/LICENSE
|
||||
|
||||
# Tell Perl where to find the local modules
|
||||
ENV PERL5LIB=/usr/local/lib/perl5/site_perl
|
||||
|
||||
ENTRYPOINT ["/usr/src/app/site-generator"]
|
||||
@@ -11,7 +11,9 @@ password are required), run:
|
||||
On success, an "hpr_generator" directory will be created in the folder from
|
||||
which the clone command was executed containing a local copy of the git repository.
|
||||
|
||||
# Install required Perl modules
|
||||
# Building on local system
|
||||
|
||||
## Install required Perl modules
|
||||
|
||||
Installing the Perl modules is the most finicky part of the installation process.
|
||||
The needed Perl modules can be found using the operating system's package
|
||||
@@ -34,7 +36,7 @@ apt install libconfig-std-perl \
|
||||
|
||||
```
|
||||
|
||||
## Using CPAN to install the modules
|
||||
### Using CPAN to install the modules
|
||||
|
||||
A cross platform method to install the needed modules is the Perl CPAN application.
|
||||
Make sure that the [gcc](https://www.gnu.org/software/gcc/),
|
||||
@@ -55,7 +57,7 @@ cpan Tie::DBI
|
||||
cpan Text:CSV_XS
|
||||
```
|
||||
|
||||
## Testing for Perl module dependencies
|
||||
### Testing for Perl module dependencies
|
||||
|
||||
A bash script is included in the utils directory that will list the Perl modules used by the site-generator and report whether the modules are installed on the current OS.
|
||||
|
||||
@@ -65,6 +67,39 @@ It can be run from any directory. To run from the utils directory:
|
||||
./check-dependencies.sh
|
||||
```
|
||||
|
||||
# Building with Docker
|
||||
|
||||
The docker file will copy the local version of the site-generator program, the templates directory, the LICENSE file,
|
||||
and the site.cfg file into the Docker image. For the docker image to run correctly it needs access to your local
|
||||
hpr.db file and the output directory (defaults to "public_html"). The default site.cfg assumes the hpr.db is located
|
||||
in the directory from which the site-generator is run. There are two ways to make the db available to the container:
|
||||
|
||||
* Put the hpr.db file in the public_html folder and modify the driver option under the [DBI] section of the site.cfg to:<br>
|
||||
```driver: dbi:SQLite:public_html/hpr.db```
|
||||
* mount the hpr.db file into the container when starting up the container with the -v option: <br>
|
||||
```-v <path to db directory>/hpr.db:/usr/src/app/hpr.db```
|
||||
|
||||
Build the image by running the following command from the hpr_generator directory:
|
||||
```docker build -t hpr/site-generator .```
|
||||
|
||||
The first build will take a while. It must pull down the base container, perl-latest, and then pull down and build the
|
||||
various Perl modules from CPAN. After the initial build, if you have modified your site.cfg file, templates dir, or the
|
||||
site-generator program itself, builds will be very quick.
|
||||
|
||||
If the build fails, it is often from a CPAN module failing to download and install. Try running the Docker build command again.
|
||||
|
||||
## Running the container
|
||||
|
||||
When runing the Docker image, your local output directory (typically public_html) must be mounted into the container using
|
||||
the -v option. If you are using the default path for the hpr.db, then the local hpr.db file must also be mounted into the image.
|
||||
The following is an example of running the site-generator with default locations from the hpr_generator directory:
|
||||
```
|
||||
docker run \
|
||||
-v "$(pwd)/public_html":/usr/src/app/public_html \
|
||||
-v "$(pwd)/hpr.db":/usr/src/app/hpr.db \
|
||||
hpr/site-generator --help
|
||||
```
|
||||
|
||||
# Create the HPR database
|
||||
|
||||
The hpr_generator relies on information from a database to generate many of the
|
||||
|
||||
@@ -2,6 +2,9 @@
|
||||
Static web page generator for the Hacker Public Radio website.
|
||||
|
||||
## Installation
|
||||
|
||||
### On local system
|
||||
|
||||
* Clone or download this repository
|
||||
* With SQLite
|
||||
* Create the sqlite3 database from the hpr.sql MySQL dump file available on
|
||||
@@ -31,6 +34,10 @@ Static web page generator for the Hacker Public Radio website.
|
||||
* Text::CSV_XS
|
||||
* HTML::Entities
|
||||
|
||||
### Using Docker
|
||||
|
||||
* run: `docker build -t hpr/site-generator .`
|
||||
|
||||
* See the [Getting Started](GETTING_STARTED.md) tutorial for more details on
|
||||
installing the HPR generator.
|
||||
|
||||
|
||||
1
_sql/sqlite/Rename_twt_table.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE twat_eps RENAME TO twt_eps;
|
||||
@@ -47,12 +47,15 @@ https://creativecommons.org/publicdomain/
|
||||
--link-secondary: #a8f8ff;
|
||||
--link-secondary-hover: #f9e9c2;
|
||||
--link-title-color: #00003e;
|
||||
--link-navigation-hover: #030303;
|
||||
--primary-content-line-height: 1.45;
|
||||
|
||||
--font-family-hpr: Verdana, Arial, Helvetica, sans-serif; /* 1em/1.5 OpenDyslexic, */;
|
||||
--font-size-default: clamp(1rem, 15px + 0.3vw, 1.07rem);
|
||||
--font-size-emphasis: clamp(1.1rem, 15px + 0.3vw, 1.25rem);
|
||||
|
||||
--episode-nav-padding: clamp(0.15em, 15px + 0.3vw, 0.4em);
|
||||
--show-notes-pre-background: #f9e9c2;
|
||||
--logo-font-family: var(--font-family-hpr);
|
||||
--logo-font-weight: bolder;
|
||||
--logo-font-size: 7.5rem;
|
||||
@@ -349,7 +352,7 @@ article > p,
|
||||
2px 4px 4px var(--shadow-cards);
|
||||
transition: 0.3s;
|
||||
flex: 1 0 100%;
|
||||
overflow-x: scroll;
|
||||
overflow: auto;
|
||||
padding-bottom: 1rem;
|
||||
}
|
||||
.lane > article:hover,
|
||||
@@ -400,6 +403,9 @@ article > p,
|
||||
font-size: var(--default-header-4-font-size);
|
||||
margin-left: 22px;
|
||||
}
|
||||
.lane.stack > article > footer {
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
a.lane-button {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
@@ -635,7 +641,7 @@ fieldset > table td input[type="radio"] {
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
.no-css {
|
||||
display: none;
|
||||
display: none !important;
|
||||
}
|
||||
#tags .date {
|
||||
margin:0;
|
||||
@@ -669,12 +675,20 @@ fieldset > table td input[type="radio"] {
|
||||
background: var(--background-secondary);
|
||||
color: var(--background-primary);
|
||||
}
|
||||
#hosts td:nth-child(2) {
|
||||
display: inline-flex;
|
||||
}
|
||||
#hosts td:nth-child(-n+2) a {
|
||||
color: var(--link-secondary);
|
||||
flex: 1;
|
||||
}
|
||||
#hosts td:nth-child(-n+2) a:hover {
|
||||
color: var(--link-secondary-hover);
|
||||
}
|
||||
#hosts td:nth-child(-n+2) a strong {
|
||||
display: inline-block;
|
||||
line-height: 1.5rem;
|
||||
}
|
||||
#hosts td:nth-child(2) {
|
||||
padding: 0.25rem 0 0 8px;
|
||||
width: calc(100% - 90px);
|
||||
@@ -694,9 +708,15 @@ fieldset > table td input[type="radio"] {
|
||||
border-radius: 0.25rem;
|
||||
}
|
||||
#host {
|
||||
justify-content: flex-start;
|
||||
align-items: end;
|
||||
gap: 0;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
gap: 0.5rem;
|
||||
}
|
||||
#host_id {
|
||||
text-align: center;
|
||||
}
|
||||
#host_id > h2 {
|
||||
margin-top: 0;
|
||||
}
|
||||
#host_id img {
|
||||
border-radius: 0.25rem;
|
||||
@@ -716,10 +736,13 @@ fieldset > table td input[type="radio"] {
|
||||
padding: 0;
|
||||
}
|
||||
.series-description {
|
||||
margin: 0;
|
||||
margin: 0 0 1rem 0;
|
||||
padding: 0;
|
||||
font-style: italic;
|
||||
}
|
||||
.series-desciption > *:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
@@ -730,6 +753,70 @@ fieldset > table td input[type="radio"] {
|
||||
clip: rect(0, 0, 0, 0);
|
||||
border: 0;
|
||||
}
|
||||
#show_notes {
|
||||
max-width: 98vw;
|
||||
}
|
||||
#show_notes pre
|
||||
{
|
||||
overflow: auto;
|
||||
}
|
||||
#show_notes code {
|
||||
display: inline-block;
|
||||
background-color: var(--show-notes-pre-background);
|
||||
border: 1px solid #ddd;
|
||||
padding: 0.1em 0;
|
||||
}
|
||||
nav.episodes {
|
||||
color: var(--background-primary);
|
||||
font-size: 0.9em;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
justify-content: space-around;
|
||||
max-width: 100vw;
|
||||
}
|
||||
nav.episodes span {
|
||||
color: var(--text-primary);
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
border: solid thin var(--text-primary);
|
||||
}
|
||||
nav.episodes span:nth-child(-n+2),
|
||||
nav.episodes span:nth-child(-n+2) a {
|
||||
border-top-left-radius: 2rem;
|
||||
border-bottom-left-radius: 2rem;
|
||||
}
|
||||
nav.episodes span:nth-child(n+3),
|
||||
nav.episodes span:nth-child(n+3) a {
|
||||
border-top-right-radius: 2rem;
|
||||
border-bottom-right-radius: 2rem;
|
||||
}
|
||||
nav.episodes span.no-link,
|
||||
nav.episodes span a {
|
||||
padding: 0.3em var(--episode-nav-padding) 0.1em var(--episode-nav-padding);
|
||||
display: inline-block;
|
||||
min-width: 4.4em;
|
||||
min-height: 1.5em;
|
||||
}
|
||||
nav.episodes span a:hover {
|
||||
background-color: var(--link-primary-hover);
|
||||
color: var(--link-secondary-hover);
|
||||
}
|
||||
nav.episodes svg {
|
||||
margin: 0 0.2rem;
|
||||
height: 0.85em;
|
||||
max-width: 13px;
|
||||
vertical-align: middle;
|
||||
}
|
||||
nav.episodes span a svg #arrow,
|
||||
nav.episodes span a svg #bar {
|
||||
stroke: var(--link-primary);
|
||||
fill: var(--link-primary);
|
||||
}
|
||||
nav.episodes span a:hover svg #arrow,
|
||||
nav.episodes span a:hover svg #bar {
|
||||
stroke: var(--link-secondary-hover);
|
||||
fill: var(--link-secondary-hover);
|
||||
}
|
||||
@media (min-width: 600px) {
|
||||
body > header .bounding-box {
|
||||
justify-content: space-between;
|
||||
@@ -824,7 +911,10 @@ fieldset > table td input[type="radio"] {
|
||||
max-width: 45%;
|
||||
}
|
||||
#host {
|
||||
gap: 1rem;
|
||||
gap: 2rem;
|
||||
}
|
||||
nav.episodes {
|
||||
display: inline-block;
|
||||
}
|
||||
}
|
||||
@media (min-width: 900px) {
|
||||
@@ -841,3 +931,54 @@ fieldset > table td input[type="radio"] {
|
||||
max-width: 30%;
|
||||
}
|
||||
}
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--link-primary: #bbdfe7;
|
||||
--link-header-hover: #b54c08; /* original --link-primary-hover */;
|
||||
--link-primary-hover: var(--link-secondary-hover);
|
||||
--background-primary: #4d4d4d; /* HPR Grey */
|
||||
--text-primary: #dfdfdf /*#fffff7#fafafa#fbfbee #dfdfdf */;
|
||||
--banner-text-primary: #b6b6b6;
|
||||
--shadow-secondary-color: hsl(0, 0%, 40%);
|
||||
--input-border-primary: var(--shadow-secondary-color);
|
||||
--lane-button-color: #d5e6ea;
|
||||
--show-notes-pre-background: #b54c08;
|
||||
}
|
||||
body > header {
|
||||
background-image: url("/images/main-header-background-dark.png");
|
||||
background-color: #22545a;
|
||||
}
|
||||
img {
|
||||
filter: brightness(0.70);
|
||||
}
|
||||
a.lane-button {
|
||||
background-image: url("/images/lane-button-background-dark.png");
|
||||
color: var(--lane-button-color);
|
||||
}
|
||||
a.lane-button img {
|
||||
filter: none;
|
||||
}
|
||||
.lane > article > header {
|
||||
color: var(--text-secondary);
|
||||
}
|
||||
#title a:hover {
|
||||
color: var(--link-header-hover);
|
||||
}
|
||||
#hosts td:nth-child(-n+2) {
|
||||
color: var(--text-primary);
|
||||
}
|
||||
nav.episodes span a:hover {
|
||||
background-color: var(--link-primary-hover);
|
||||
color: var(--link-navigation-hover);
|
||||
}
|
||||
nav.episodes span svg #arrow,
|
||||
nav.episodes span svg #bar {
|
||||
stroke: var(--text-primary);
|
||||
fill: var(--text-primary);
|
||||
}
|
||||
nav.episodes span a:hover svg #arrow,
|
||||
nav.episodes span a:hover svg #bar {
|
||||
stroke: var(--link-navigation-hover);
|
||||
fill: var(--link-navigation-hover);
|
||||
}
|
||||
}
|
||||
|
||||
BIN
public_html/images/hpr_feed_small.png
Normal file
|
After Width: | Height: | Size: 23 KiB |
24
public_html/images/icons/arrow-first.svg
Normal file
@@ -0,0 +1,24 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
viewBox="0 0 12 12"
|
||||
version="1.1"
|
||||
id="arrow_first"
|
||||
width="12"
|
||||
height="12"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
id="arrow"
|
||||
style="stroke-width:0.584448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 9.9303359,11.572157 11.530286,10.119277 7.0035163,5.9964088 11.484768,1.9181465 9.8743209,0.45252151 3.7931149,5.986851 Z" />
|
||||
<rect
|
||||
style="stroke-width:0.524;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);paint-order:normal"
|
||||
id="bar"
|
||||
width="2.2"
|
||||
height="11.263"
|
||||
x="0.5"
|
||||
y="0.36860976"
|
||||
rx="0"
|
||||
ry="0.0015425405" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 877 B |
25
public_html/images/icons/arrow-last.svg
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
viewBox="0 0 12 12"
|
||||
version="1.1"
|
||||
id="arrow_last"
|
||||
width="12"
|
||||
height="12"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
id="arrow"
|
||||
style="stroke-width:0.584448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 2.0731448,11.604466 0.47319466,10.151586 4.9999643,6.0287178 0.51871266,1.9504555 2.1291598,0.48483049 8.2103658,6.01916 Z" />
|
||||
<rect
|
||||
style="stroke-width:0.524;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;marker-start:url(#Arrow1Lstart);paint-order:normal"
|
||||
id="bar"
|
||||
width="2.2"
|
||||
height="11.263"
|
||||
x="-11.503481"
|
||||
y="0.40091875"
|
||||
rx="0"
|
||||
ry="0.0015425405"
|
||||
transform="scale(-1,1)" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 911 B |
15
public_html/images/icons/arrow-next.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
viewBox="0 0 12 12"
|
||||
version="1.1"
|
||||
id="arrow_next"
|
||||
width="12"
|
||||
height="12"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
id="arrow"
|
||||
style="stroke-width:0.584448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 2.0731448,11.604466 0.47319466,10.151586 4.9999643,6.0287178 0.51871266,1.9504555 2.1291598,0.48483049 8.2103658,6.01916 Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 575 B |
15
public_html/images/icons/arrow-previous.svg
Normal file
@@ -0,0 +1,15 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
<svg
|
||||
viewBox="0 0 12 12"
|
||||
version="1.1"
|
||||
id="arrow_previous"
|
||||
width="12"
|
||||
height="12"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<path
|
||||
id="arrow"
|
||||
style="stroke-width:0.584448;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
|
||||
d="M 9.9303359,11.572157 11.530286,10.119277 7.0035163,5.9964088 11.484768,1.9181465 9.8743209,0.45252151 3.7931149,5.986851 Z" />
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 578 B |
BIN
public_html/images/lane-button-background-dark.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
public_html/images/main-header-background-dark.png
Normal file
|
After Width: | Height: | Size: 611 KiB |
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/perl
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# {{{ POD documentation
|
||||
|
||||
|
||||
30
site.cfg
@@ -10,7 +10,7 @@ driver: dbi:SQLite:hpr.db
|
||||
|
||||
# Configure the location of the templates and the generated HTML
|
||||
[app_paths]
|
||||
templates_path: ./templates
|
||||
templates_path: ./templates:./public_html/images/icons
|
||||
output_path: ./public_html
|
||||
|
||||
# Configure the root template page which pulls in the navigation and
|
||||
@@ -26,6 +26,10 @@ media_baseurl: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr$eps_
|
||||
generator_name: The HPR Robot
|
||||
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
|
||||
# of the site:
|
||||
#
|
||||
@@ -55,6 +59,10 @@ content: content-index.tpl.html
|
||||
navigation: navigation-about.tpl.html
|
||||
content: content-about.tpl.html
|
||||
|
||||
[contribute]
|
||||
navigation: content-contribute.tpl.html
|
||||
content: content-contribute.tpl.html
|
||||
|
||||
[correspondents]
|
||||
navigation: navigation-about.tpl.html
|
||||
content: content-correspondents.tpl.html
|
||||
@@ -108,9 +116,9 @@ content: content-sitemap.tpl.html
|
||||
navigation: navigation-main.tpl.html
|
||||
content: content-tags.tpl.html
|
||||
|
||||
[twat_episode]
|
||||
[twt_episode]
|
||||
navigation: navigation-get-shows.tpl.html
|
||||
content: content-twat_episode.tpl.html
|
||||
content: content-twt_episode.tpl.html
|
||||
multipage: true
|
||||
filename: eps/twt[id]/index.html
|
||||
|
||||
@@ -130,6 +138,10 @@ content: content-promote.tpl.html
|
||||
navigation: navigation-about.tpl.html
|
||||
content: content-comments_viewer.tpl.html
|
||||
|
||||
[new_year]
|
||||
navigation: navigation-about.tpl.html
|
||||
content: content-new_year.tpl.html
|
||||
|
||||
[hpr_ogg]
|
||||
root_template: rss.tpl.xml
|
||||
content: rss-hpr.tpl.xml
|
||||
@@ -171,3 +183,15 @@ media_file_extension: spx
|
||||
[comments]
|
||||
root_template: rss-comments.tpl.xml
|
||||
filename: comments.rss
|
||||
|
||||
[correspondent_m3u]
|
||||
root_template: m3u.tpl.m3u8
|
||||
content: m3u-correspondent.tpl.m3u8
|
||||
filename: correspondents/[id]/playlist.m3u8
|
||||
multipage: true
|
||||
|
||||
[series_episodes_m3u]
|
||||
root_template: m3u.tpl.m3u8
|
||||
content: m3u-series_episodes.tpl.m3u8
|
||||
filename: series/[id].m3u8
|
||||
multipage: true
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
<!--% PROCESS 'shared-listen-now.tpl.html' %-->
|
||||
<!--% PROCESS "queries-episode.tpl.html" %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
|
||||
<!--% page_title = "HPR ~ Current comments on the shows" %-->
|
||||
<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>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--% page_title = "HPR ~ Contact the Community" %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1>Contact</h1>
|
||||
|
||||
972
templates/content-contribute.tpl.html
Normal file
@@ -0,0 +1,972 @@
|
||||
<!--% page_title = "HPR ~ Contribute to this community podcast" %-->
|
||||
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#so_you_want_to_record_a_podcast') %-->">So you want to record a podcast</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#stuff_you_need_to_know') %-->">Stuff you need to know</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#pick_a_topic') %-->">Pick a Topic</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#recording_a_podcast') %-->">Recording a Podcast</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->">Deciding when your show is released</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#confirmation_email') %-->">Confirmation Email</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#uploading_an_episode') %-->">Uploading an Episode</a></li>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#personal_information') %-->">Personal Information</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#episode_information') %-->">Episode Information</a></li>
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="so_you_want_to_record_a_podcast">So you want to record a podcast<a href="<!--% absolute_url(baseurl,'contribute.html#so_you_want_to_record_a_podcast') %-->">.</a></h1>
|
||||
</header>
|
||||
|
||||
<p>Well you've come to the right place.
|
||||
Our goal here at HPR is to make it as <strong>easy as possible</strong> for you to get your show released.
|
||||
We take care of the hard bits so you don't need to.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Recording your first show can be a daunting prospect but <a href="<!--% absolute_url(baseurl) %-->correspondents/index.html">hundreds of people</a>
|
||||
like yourself have done it, and so can you.
|
||||
Don't worry that we won't like the topic, just have a look at our <a href="<!--% absolute_url(baseurl) %-->eps/index.html">Archive</a>
|
||||
to see how diverse the contributions have been.</p>
|
||||
<p>
|
||||
Don't worry if your audio isn't perfect,
|
||||
that your voice sounds funny,
|
||||
that English isn't your native language,
|
||||
that you suffer from a <a href="<!--% absolute_url(baseurl,'/eps/hpr1102/index.html') %-->">speech impediment</a>,
|
||||
that your show has loads of ummms and awws in it, etc.
|
||||
We have plenty of hosts that fall into all these categories, but continue to produce great shows.
|
||||
</p>
|
||||
<p>
|
||||
At the end of the day the show is about the content and less about perfection.
|
||||
That's not to say we won't help you with ways to improve the audio if you wish,
|
||||
or narrate your script for you if you can't or won't record it yourself.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="stuff_you_need_to_know">Stuff you need to know<a href="<!--% absolute_url(baseurl,'contribute.html#stuff_you_need_to_know') %-->">.</a></h1>
|
||||
</header>
|
||||
|
||||
<p>
|
||||
This is some important information that you will need to know before uploading to HPR.
|
||||
</p>
|
||||
|
||||
|
||||
<details>
|
||||
<summary id="wikipedia">You will no longer be allowed to <a href="<!--% absolute_url(baseurl,'about.html#hpr_wikipedia_page') %-->">edit HPR pages</a> on Wikipedia<a href="<!--% absolute_url(baseurl,'contribute.html#wikipedia') %-->">.</a></summary>
|
||||
<p>
|
||||
Once you upload a show, you will be associated with the HPR project.
|
||||
As such, <a href="https://en.wikipedia.org/wiki/Wikipedia:FAQ/Organizations">Wikipedia</a> policies will prevent you from creating,
|
||||
or editing pages relating to
|
||||
<a href="https://en.wikipedia.org/wiki/Hacker_Public_Radio">Hacker Public Radio</a>. For more information see <a href="<!--% absolute_url(baseurl,'about.html#hpr_wikipedia_page') %-->">(Re)Creating a HPR page on wikipedia</a>.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="syndication">We <strong>do not syndicate</strong> shows not produced for HPR<a href="<!--% absolute_url(baseurl,'contribute.html#syndication') %-->">.</a></summary>
|
||||
<p>
|
||||
HPR is founded on the principle of Hackers sharing knowledge, so we are not a media aggregation site.
|
||||
For this reason we are only releasing material created exclusively for HPR.
|
||||
Once released, the creative commons license will allow sharing it to other locations.
|
||||
</p>
|
||||
<p>
|
||||
We will continue to promote new podcasts, and other creative commons material,
|
||||
through our sister site <a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a>.
|
||||
</p>
|
||||
<p>
|
||||
We do allow <strong>promotion of one example</strong> episode of creative commons content.
|
||||
You post it as a regular show in the series <a href="<!--% absolute_url(baseurl) %-->series/0075.html">Podcast recommendations</a>,
|
||||
with your introduction as to what the piece is, why it's important,
|
||||
what version of Creative Commons it is released under, and provide links to the website, and to the RSS feed.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="license">You are agreeing to <strong>license</strong> your show <strong>CC BY-SA 4.0</strong><a href="<!--% absolute_url(baseurl,'contribute.html#license') %-->">.</a></summary>
|
||||
<p>
|
||||
All our shows are now 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, which means that while you continue to retain the copyright to your show,
|
||||
you are allowing us (and everyone else) to use it provided we give you attribution and that we release it under the same license.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="permission">You have <strong>permission</strong> to redistribute your show in its entirety<a href="<!--% absolute_url(baseurl,'contribute.html#permission') %-->">.</a></summary>
|
||||
<p>
|
||||
Never include content, for example music, in your show that you do not have permission to redistribute.
|
||||
Try to avoid using any content in your show that can not be redistributed 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.
|
||||
If you are redistributing under another Creative Commons license, GNU Free Documentation License, public domain,
|
||||
or FLOSS software license, then please signal that when you upload your show.
|
||||
We do not post <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/policies.md#policy-change-should-we-reject-a-show-with-copyrighted-fair-use-clips-in-it-httpslistshackerpublicradiocompipermailhpr2019-may003673html">other copyrighted content</a>, even if it is made available under fair use, or by arranged permission.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="not_moderated">The audio of your show will <strong>not be moderated</strong><a href="<!--% absolute_url(baseurl,'contribute.html#not_moderated') %-->">.</a></summary>
|
||||
<p>
|
||||
We do not vet, edit, moderate or in any way censor any of the audio you submit, <strong>we expect you to do that</strong>.
|
||||
Aside from checking snippets for audio quality/spam checking,
|
||||
we have a policy that we don't listen to the shows before they are aired.
|
||||
This is a long standing tradition arising from the fact that HPR is a community of peers
|
||||
who believe that any host has as much right to submit shows as any other.
|
||||
</p>
|
||||
<p>
|
||||
Please note that this only relates to the audio you upload.
|
||||
We <strong>do</strong> transform the audio into different formats.
|
||||
The rest of the meta-data (branding/summaries/tags/show notes/etc.), are managed by the HPR Community,
|
||||
and <strong>probably will</strong> be edited.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
There is no guarantee that we will accept your show.
|
||||
Even after it is processed, <strong>any material that is reported as harming HPR may be unlisted until such a time as the situation can be resolved</strong>.
|
||||
You can expect your show to be rejected for (incomplete list):
|
||||
<ul>
|
||||
<li>Inaudible audio</li>
|
||||
<li>Containing Copyright Content, even <em>Fair Use</em></li>
|
||||
<li>Not a HPR Episode</li>
|
||||
<li>Content Containing Harassment, Trolling, Spamming, etc</li>
|
||||
</ul>
|
||||
</p>
|
||||
<p>
|
||||
Please refer to <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/policies.md#free-speech-and-general-conduct">Free speech and general conduct</a>
|
||||
which describes the agreed approach to this topic.
|
||||
</p>
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="explicit_content">Your show will be signaled as containing <strong>explicit</strong> content<a href="<!--% absolute_url(baseurl,'contribute.html#explicit') %-->">.</a></summary>
|
||||
<p>
|
||||
Given that we are an open forum for free speech,
|
||||
we signal all our shows as "explicit" with the assumption that the listeners will apply the required discretion when playing the shows in public.
|
||||
That said the majority of our content is technical in nature and therefore is often considered appropriate for any audience.
|
||||
If you feel that your show will be considered <strong>inoffensive in every region of the world</strong>
|
||||
then you can signal your show as <em>Clean</em> when you upload the show.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
When dealing with content that is "explicit" or contains material that would best be suited for a mature audience,
|
||||
it has become traditional to include a <strong>short warning</strong> at the very beginning of the show before the intro,
|
||||
to allow listeners <strong>sufficient time</strong> to switch off the episode should they so desire.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Please refer to <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/policies.md#free-speech-and-general-conduct">Free speech and general conduct</a>
|
||||
which describes the agreed approach to this topic.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="schedule">You determine when your show will be <strong>scheduled</strong><a href="<!--% absolute_url(baseurl,'contribute.html#schedule') %-->">.</a></summary>
|
||||
<p>You decide when <a href="<!--% absolute_url(baseurl,'contribute.html#upload_your_show') %-->">your show should be released</a>.
|
||||
You can pick a day, or put it in the reserve pool so that the Janitors can use it when there are gaps in the schedule.</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="audio_ready">Your audio must be ready <strong>before</strong> you pick a slot<a href="<!--% absolute_url(baseurl,'contribute.html#audio_ready') %-->">.</a></summary>
|
||||
<p>
|
||||
Any host can select any free slot a up to year in advance,
|
||||
but the audio must be ready at time of picking a slot.
|
||||
</p>
|
||||
<p>
|
||||
In exceptional circumstances it may be necessary to reserve a slot while not having the audio available.
|
||||
This must be approved by the <a href="<!--% absolute_url(baseurl,'/maillist') %-->">HPR Mailing List</a> in advance.
|
||||
Be sure to allow as much time as possible,
|
||||
and include a reason why you feel it is necessary to reserve the slot.
|
||||
</p>
|
||||
<p>
|
||||
This is intended only for exceptional circumstances,
|
||||
such as a scheduled interview where we would like the audio to be released as soon after the event as possible,
|
||||
or to cover an important topical situation that has occurred.
|
||||
Due to the extended time now needed to post shows to external sites,
|
||||
the extra work this entails and the disruptive effect of reservations,
|
||||
we will no longer be allowing them except in very rare cases of the type mentioned above.
|
||||
</p>
|
||||
<p>
|
||||
The following are standing reservations:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Anniversary episodes.</li>
|
||||
<li>HPR Community News on the first Monday of the month.</li>
|
||||
<li>The first day of the fourth month.</li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="two_weeks">Leave <strong>two weeks</strong> between your shows<a href="<!--% absolute_url(baseurl,'contribute.html#two_weeks') %-->">.</a></summary>
|
||||
<p>
|
||||
All hosts must leave at least 9 slots (approximately two weeks) between their shows.
|
||||
This is to avoid a given host, or topic taking over the queue.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="moving_shows">We will not <strong>move shows</strong> once they are scheduled<a href="<!--% absolute_url(baseurl,'contribute.html#moving_shows') %-->">.</a></summary>
|
||||
<p>
|
||||
Once a show has been posted it is <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/policies.md#permission-to-move-out-a-show">not possible to move them</a>
|
||||
to another slot.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="email_address">Your <strong>email</strong> will be made <strong>public</strong><a href="<!--% absolute_url(baseurl,'contribute.html#email_address') %-->">.</a></summary>
|
||||
<p>
|
||||
The mail is just a way for us to get back to you if there was an issue posting the show.
|
||||
This email address will be published on the HPR website and will be given out in the feeds,
|
||||
so please use a <strong>public email</strong> address for this purpose.
|
||||
</p>
|
||||
<p>
|
||||
Where we publish it we pad it with dot nospam at-sign nospam dot.
|
||||
For example <em>hpr@example.com</em> becomes <em>hpr.nospam@nospam.example.com</em>.
|
||||
</p>
|
||||
<p>
|
||||
If you do not want to have your email exposed, please contact the admin@hpr team to arrange a alias.
|
||||
If you trust the janitors to know your real email,
|
||||
then we can just use an alias for you on the web site.
|
||||
Any inbound mail to that alias will be automatically forwarded to your personal email.
|
||||
That runs the risk that were the redirect list compromised then your real email would get exposed.
|
||||
We would do our best to protect your email but we can't guarantee anything.
|
||||
</p>
|
||||
<p>
|
||||
The other option is to use an a throwaway email, like
|
||||
<a href="https://www.guerrillamail.com/">https://www.guerrillamail.com/</a>
|
||||
for your show. This will be up for enough time to get the key necessary for to post the show.
|
||||
However keep in mind that we will be very suspicious of any submission done this way
|
||||
and will be checking it in detail,
|
||||
so expect delays in processing.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="schedule">You <strong>IP Address</strong> and User Agent will logged<a href="<!--% absolute_url(baseurl,'contribute.html#schedule') %-->">.</a></summary>
|
||||
<p>
|
||||
The information we log is sent at the end of the emails we send to you.
|
||||
Your IP address is linked to your show until it is posted.
|
||||
Once we verify the show is a genuine contribution we remove the reference.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="utf8">We use <strong>UTF-8</strong> end to end<a href="<!--% absolute_url(baseurl,'contribute.html#utf8') %-->">.</a></summary>
|
||||
<p>
|
||||
See the video "<a href="https://www.youtube.com/watch?v=MijmeoH9LT4">Characters, Symbols and the Unicode Miracle - Computerphile</a>"
|
||||
for an interesting background to ASCII and <a href="https://en.wikipedia.org/wiki/UTF-8">UTF-8</a>.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="accessibility">Keep <strong>accessibility</strong> in mind<a href="<!--% absolute_url(baseurl,'contribute.html#accessibility') %-->">.</a></summary>
|
||||
<p>
|
||||
When you include output from the command line in the show notes,
|
||||
posting screen-shots of console or terminal output
|
||||
makes it impossible for screen readers to access the text.
|
||||
Always try to include the raw output ( eg: embedded in <pre> tags)
|
||||
</p>
|
||||
<p>Include descriptive language in any link texts.
|
||||
Avoid structures like: <em>"For accessibility information
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#accessibility') %-->">click here</a>"</em>.
|
||||
Rather use: <em>"For more information click our
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#accessibility') %-->">accessibility page</a>"</em>
|
||||
</p>
|
||||
<p>When adding Images, add the descriptive text under the image (not in the alt tag).
|
||||
That way everyone can benefit from the description.
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="international">Your show will be heard by an <strong>International Audience</strong><a href="<!--% absolute_url(baseurl,'contribute.html#international') %-->">.</a></summary>
|
||||
<p>
|
||||
We have people listening from all over the world, who may not have the same cultural background as yourself,
|
||||
therefore you should be as clear as possible when giving details.
|
||||
For example always give temperatures in both Celsius and Fahrenheit, measurements in Metric and Imperial,
|
||||
dates in <strong>YYYY-MM-DD</strong> <a href="https://en.wikipedia.org/wiki/ISO_8601">iso8601</a> format,
|
||||
and abbreviations using the <a href="https://en.wikipedia.org/wiki/NATO_phonetic_alphabet">NATO phonetic alphabet</a>.
|
||||
</p>
|
||||
<p>
|
||||
Never assume that your audience knows what age a sixth grader is, or how big a 20 Cent Euro coin is.
|
||||
Keep in mind that keyboard layouts are also different so make sure to specify the key shape or the position
|
||||
inrelation to a common known standard.
|
||||
For example:
|
||||
</p>
|
||||
<blockquote>The at sign normally situated above the 2 key on a US keyboard, and has a unicode number of U+0040.
|
||||
For more information see <a href="https://en.wikipedia.org/wiki/At_sign">Wikipedia</a></blockquote>
|
||||
<p>
|
||||
<a href="https://xkcd.com/1179/"><img src="https://imgs.xkcd.com/comics/iso_8601.png"
|
||||
title="ISO 8601 was published on 06/05/88 and most recently amended on 12/01/04." alt="An xkcd cartoon showing ISO 8601" /></a>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<p>
|
||||
If you have any questions please join one of our <a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">contact channels</a> to chat with people who will help.
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="pick_a_topic">Pick a Topic<a href="<!--% absolute_url(baseurl,'contribute.html#pick_a_topic') %-->">.</a></h1>
|
||||
</header>
|
||||
|
||||
<p>
|
||||
The first thing you will need to do is <strong>decide on a topic</strong> for your show.
|
||||
</p>
|
||||
<p>
|
||||
We recommend that your first show be a introductory episode to the
|
||||
<a href="<!--% absolute_url(baseurl,'series/0029.html') %-->">How I got into tech</a> series.
|
||||
First tell us your <strong>name</strong>,
|
||||
how you <strong>found out about HPR</strong>,
|
||||
and the begin with your <strong>earliest</strong> introduction to tech.
|
||||
Cover all the <strong>systems</strong> you used,
|
||||
and mention all the <strong>people</strong>
|
||||
and <strong>events</strong> who had a role in shaping your journey.
|
||||
We will make sure you get lots of suggestions for your next submission in the comments for your show,
|
||||
and in the next <a href="<!--% absolute_url(baseurl,'series/0047.html') %-->">HPR Community News</a> monthly overview.
|
||||
</p>
|
||||
<p>
|
||||
You can see in our
|
||||
<a href="<!--% absolute_url(baseurl,'eps/index.html') %-->">Complete Episode Overview</a> page
|
||||
that we a wide variety of topics, ranging from "OMG I just learned/broke/hacked/discovered/etc, this cool thing and no one in my house gets it",
|
||||
to <a href="<!--% absolute_url(baseurl,'eries/index.html') %-->">in depth series</a> where a particular topic can be explored in more detail.
|
||||
</p>
|
||||
<p>
|
||||
To find a overview of the topics you can also search by keyword on our
|
||||
<a href="<!--% absolute_url(baseurl,'search.html#tags') %-->">tags page</a>.
|
||||
</p>
|
||||
|
||||
|
||||
<p id="requested_topics">
|
||||
We maintain a page of <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/requested_topics">requested topics</a>
|
||||
that have been sent in by the community.
|
||||
Feel free to add it to the list via <a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">the contact channels</a>.
|
||||
</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.
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="recording_a_podcast">Recording a Podcast</h1>
|
||||
</header>
|
||||
<p>
|
||||
On this page you will find information on how to record a podcast.</p>
|
||||
|
||||
|
||||
<h2 id="recording_tips">Recording Tips<a href="<!--% absolute_url(baseurl,'contribute.html#recording_tips') %-->">.</a></h2>
|
||||
<details>
|
||||
<summary id="flac_is_best">Lossless FLAC Level 8 (best) 44100 Hz, 24 bit depth<a href="<!--% absolute_url(baseurl,'contribute.html#flac_is_best') %-->">.</a></summary>
|
||||
|
||||
<p>
|
||||
<em>FLAC is best, we accept the rest.</em>
|
||||
</p>
|
||||
<p>
|
||||
Our recommended setting for recording is 44100 Hz, 24 bit depth, saved as Lossless FLAC Level 8 (best).
|
||||
</p>
|
||||
<p>
|
||||
It makes our life a lot easier if you record with the best quality you can.
|
||||
Record using the best equipment you have close to hand, try and set the recording to the best quality lossless format like
|
||||
<a href="https://en.wikipedia.org/wiki/FLAC">FLAC</a>, or <a href="https://en.wikipedia.org/wiki/WAV">WAV</a>,
|
||||
and set everything else to the highest setting.
|
||||
</p>
|
||||
<p>
|
||||
If your recording setup can't do that, then pick a lossless format, with the highest sample rate you can.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="golden_rule">Any audio is better than no audio<a href="<!--% absolute_url(baseurl,'contribute.html#golden_rules') %-->">.</a></summary>
|
||||
<p>
|
||||
It's always the goal to get the best quality audio,
|
||||
but here at Hacker Public Radio we value content over quality and so long as it's audible we'll take it.
|
||||
</p>
|
||||
<p>
|
||||
The show <a href="<!--% absolute_url(baseurl,'eps/hpr2627/index.html') %-->">hpr2627 :: Home Phone Setup!!</a> is a perfect example of this.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="procrastination">Procrastination is the enemy<a href="<!--% absolute_url(baseurl,'contribute.html#procrastination') %-->">.</a></summary>
|
||||
<p>
|
||||
If it's taking too long to edit the episode then you are less likely to submit the show.
|
||||
Send this show in, and employ your lessons learned in the next one.
|
||||
</p>
|
||||
<p>
|
||||
A rule of thumb is to never spend more time editing than recording.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="introduce_yourself">Introduce yourself in each show<a href="<!--% absolute_url(baseurl,'contribute.html#introduce_yourself') %-->">.</a></summary>
|
||||
<p>
|
||||
Don't forget to <strong>introduce yourself</strong> in your show.
|
||||
We have hundreds of hosts and thousands of episodes.
|
||||
While you may have done many shows, some people listen randomly,
|
||||
so this may be the first time they hear your voice.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="background_music">Avoid Bedding/background music<a href="<!--% absolute_url(baseurl,'contribute.html#background_music') %-->">.</a></summary>
|
||||
<p>
|
||||
You may include backing music but it's best if you don't.
|
||||
Most long time podcast listeners speed up their shows,
|
||||
as this allows them to cram more shows into a day.
|
||||
Having bedding music makes it more difficult to understand,
|
||||
and prevents tools like <em>truncate silence</em> from working correctly.
|
||||
</p>
|
||||
<p>
|
||||
Others will convert shows to mono to listen in one ear leaving the other free to carry out their other chores.
|
||||
Still more slow the shows down so that they can improve their English.
|
||||
Others are hard of hearing and backing music makes it difficult to understand the text.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="encoding">We mix down to Mono<a href="<!--% absolute_url(baseurl,'contribute.html#encoding') %-->">.</a></summary>
|
||||
<p>
|
||||
We will by default mix down your show to one channel mono and we will
|
||||
<a href="https://repo.anhonesthost.net/HPR/hpr-tools/src/branch/main/workflow/hpr-process_episode.bash">transcode</a> to opus, 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.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="no_metadata">No need to add Metadata to the file<a href="<!--% absolute_url(baseurl,'contribute.html#no_metadata') %-->">.</a></summary>
|
||||
<p>
|
||||
There is no need to add any information to the file as that will be inserted based on the information you provide when you upload the show.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="no_themes">Do not add any Theme to the show<a href="<!--% absolute_url(baseurl,'contribute.html#no_themes') %-->">.</a></summary>
|
||||
<p>
|
||||
The HPR Intro, and the Outro will be added automatically.
|
||||
While we did ask people to add it in the past, this is no longer the case.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<h2 id="recording">Recording<a href="<!--% absolute_url(baseurl,'contribute.html#recording') %-->">.</a></h2>
|
||||
<details>
|
||||
<summary id="recording_smartphone">Recording with a Smartphone<a href="<!--% absolute_url(baseurl,'contribute.html#recording_smartphone') %-->">.</a></summary>
|
||||
<p>
|
||||
Some of our hosts recommend <a href="https://github.com/Dimowner/AudioRecorder">Audio Recorder</a> by Dmytro Ponomarenko on Android.
|
||||
It's available on <a href="https://f-droid.org/packages/com.dimowner.audiorecorder/">F-Droid</a>
|
||||
and <a href="https://play.google.com/store/apps/details?id=com.dimowner.audiorecorder&hl=en">Google Play</a>.
|
||||
These are the recommended settings:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Recording Format: Wav</li>
|
||||
<li>Sample Rate: 44.1 kHz</li>
|
||||
<li>Audio Channels - Mono</li>
|
||||
</ul>
|
||||
|
||||
</p>
|
||||
<p>On iphone you can use Apples <a href="https://apps.apple.com/us/app/voice-memos/id1069512134">Voice Memos</a> built in app.
|
||||
<ul>
|
||||
<li>Recording Mode: Mono</li>
|
||||
<li>Audio Quality: Lossless</li>
|
||||
</ul>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="editing">Recording/Editing using your Computer<a href="<!--% absolute_url(baseurl,'contribute.html#editing') %-->">.</a></summary>
|
||||
<p>
|
||||
</p>
|
||||
<p>
|
||||
The majority of podcasters use <a href="https://audacity.sourceforge.net/download/">Audacity</a>.
|
||||
First set the Project Rate to 44100Hz, then you can either record your show in Audacity itself or
|
||||
import the file you recorded earlier and edit it as you wish.
|
||||
</p>
|
||||
<p>
|
||||
<img srcset="images/contribute-audacity-record-sm.png 460w, images/contribute-audacity-record.png 640w"
|
||||
sizes="(max-width: 460px) 95vw, 640px"
|
||||
src="images/contribute-audacity-record.png" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
||||
</p>
|
||||
<blockquote>Audacity is a free, easy-to-use and multilingual audio editor and recorder for
|
||||
Windows, Mac OS X, GNU/Linux and other operating systems.</blockquote>
|
||||
<a href="https://www.youtube.com/watch?v=ss8CyTwBOPY">Video of hpr1404 Ken Fallon Editing prerecorded audio in Audacity</a>
|
||||
<p>
|
||||
When you have finished editing your podcast you can export it.
|
||||
</p>
|
||||
<ol>
|
||||
<li>Confirm that the Project Rate is set to 44100 Hz (bottom left).</li>
|
||||
<li><em>File -> Export</em> and select <strong>FLAC File</strong>.</li>
|
||||
<li>Click <em>Options...</em> to reveal FLAC Export Setup.</li>
|
||||
<li>Set <em>Level</em> to <strong>8 (best)</strong>.</li>
|
||||
<li>Set <em>Bit depth</em> to <strong>24</strong>.</li>
|
||||
</ol>
|
||||
<p>
|
||||
<img srcset="images/contribute-audacity-export-sm.png 460w, images/contribute-audacity-export.png 640w"
|
||||
sizes="(max-width: 460px) 95vw, 640px"
|
||||
src="images/contribute-audacity-export.png" alt="Audacity Export Settings" title="Audacity Screenshot of an Export" >
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="round_table">Recording round table discussions<a href="<!--% absolute_url(baseurl,'contribute.html#round_table') %-->">.</a></summary>
|
||||
<p>
|
||||
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>
|
||||
Walk through the audio wizard and then pop into the <strong>Hacker Public Radio</strong> room.
|
||||
Once you are ready press the <strong>recording</strong> button, select <em>multichannel</em> and then <em>start</em>.
|
||||
That will record a single track which you can edit and then submit.
|
||||
<br>
|
||||
The <a href="<!--% absolute_url(baseurl) %-->mumble-howto">Mumble tutorial</a> has more information.
|
||||
Thanks to <a href="<!--% absolute_url(baseurl) %-->correspondents/0228.html">Delwin</a> for providing the server.
|
||||
</p>
|
||||
<p>
|
||||
<img srcset="images/contribute-mumble-record-sm.png 460w, images/contribute-mumble-record.png 640w"
|
||||
sizes="(max-width: 460px) 95vw, 640px"
|
||||
src="images/contribute-mumble-record.png" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<p>
|
||||
For more tips see the <a href="<!--% absolute_url(baseurl,'series/0045.html') %-->">In-Depth Series: Podcasting HowTo</a>.
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="requesting_slot">Deciding when your show is released</h1>
|
||||
</header>
|
||||
<p>
|
||||
The HPR Schedule is entirely community driven, so <strong>you decide</strong> when your show will be released.
|
||||
Once you have your audio ready you can post your show by going to the <a href="<!--% hub_baseurl %-->calendar.php">Calendar</a>
|
||||
page.
|
||||
</p>
|
||||
<p>
|
||||
New hosts, Interviews, and other time critical shows should use the <a href="<!--% hub_baseurl %-->calendar.php">first free slot</a>.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Otherwise, when the queue is filling up then <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/queue.md">leave some free slots</a>
|
||||
for new contributors.
|
||||
</p>
|
||||
|
||||
<details>
|
||||
<summary id="reserve_pool">If you <strong>do not care</strong> when your show will be released,
|
||||
then you can just <a href="https://hub.hackerpublicradio.org/request.php?id=9999">add it to the reserve pool</a><a href="<!--% absolute_url(baseurl,'contribute.html#reserve_pool') %-->">.</a></summary>
|
||||
<p>
|
||||
This is intended for <strong>non urgent shows that are timeless</strong>, as there may be a year or more before the show gets aired.
|
||||
Reserve shows should <strong>not be dependant</strong> on others in the reserve pool, as they may be posted out of order.
|
||||
</p>
|
||||
<p>
|
||||
The reserve pool shows will be used when there is a gap in the schedule.
|
||||
Empty slots might be filled by reserve shows up to ten days prior to release.
|
||||
(Reserve shows are not considered in the "two week" rule).
|
||||
They will normally be used on a first come first go basis, but there is no guarantee of the posting order.
|
||||
</p>
|
||||
<p>
|
||||
These shows will contain a message alerting listeners to the fact that a reserve show is in use.
|
||||
The <a href="https://repo.anhonesthost.net/HPR/hpr-tools/src/branch/main/workflow/hpr-prepare-reserve.bash">severity of the message</a>
|
||||
will increase as the number of reserve shows decrease.
|
||||
</p>
|
||||
|
||||
</details>
|
||||
<p>
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/request_a_slot.png" alt="" height="110">
|
||||
</p>
|
||||
|
||||
|
||||
<details>
|
||||
<summary id="thank_you">You should then see a <strong>thank you page</strong><a href="<!--% absolute_url(baseurl,'contribute.html#thank_you') %-->">.</a></summary>
|
||||
<p>
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/email_thank_you_for_uploading.png" alt="" height="110">
|
||||
</p>
|
||||
</details>
|
||||
<p>
|
||||
The thank you page, and confirmation email, both contain all the information we collect about you.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="confirmation_email">Confirmation Email</h1>
|
||||
</header>
|
||||
|
||||
<p>
|
||||
We will then send you a <strong>unique link</strong> which you can use to upload your show.
|
||||
</p>
|
||||
|
||||
<details>
|
||||
<summary id="marked_as_spam">The Confirmation Email may be <strong>marked as spam</strong><a href="<!--% absolute_url(baseurl,'contribute.html#marked_as_spam') %-->">.</a></summary>
|
||||
<p>
|
||||
The email should arrive within seconds of you pressing <em>next</em> above.
|
||||
We have had reports that sometimes gmail and hotmail consider the messages as spam.
|
||||
If it is not there within five minutes, then please check your <strong>spam</strong> folder.
|
||||
</p>
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/gmail-spam.png" alt="" height="110">
|
||||
<p>
|
||||
Please consider <a href="https://www.wikihow.com/Whitelist-an-Email" target="_blank">whitelisting</a>
|
||||
the email address <em>robot@hobbypublicradio.com</em>.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="reservation_time_limit">The reservation expires after <strong>15 Minutes</strong><a href="<!--% absolute_url(baseurl,'contribute.html#reservation_time_limit') %-->">.</a></summary>
|
||||
<p>
|
||||
You have 15 minutes to open this link or your reservation will automatically be deleted so that the slot can become available to another host.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="slot_time_limit">The slot will be released after <strong>4 hours</strong><a href="<!--% absolute_url(baseurl,'contribute.html#slot_time_limit') %-->">.</a></summary>
|
||||
<p>
|
||||
Once you open the link, you have a maximum of 4 Hours to post your show.
|
||||
If you do not do so then the entire reservation will be removed so another host can avail of the slot.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="same_ip_address">You must upload from the <strong>same IP Address</strong><a href="<!--% absolute_url(baseurl,'contribute.html#same_ip_address') %-->">.</a></summary>
|
||||
<p>
|
||||
As a security measure, you must upload your show for the same IP Address as your reservation.
|
||||
</p>
|
||||
<p>
|
||||
Errors resulting from this may be caused by:
|
||||
<ul>
|
||||
<li>Making a request on one network (work), and processing it on another (home)</li>
|
||||
<li>Your ISP is using NAT, and is assigning a new ip from the pool for the next request</li>
|
||||
<li>You are using a VPN, and the IP address changed.</li>
|
||||
<li>Your router rebooted and you got a new IP address.</li>
|
||||
<li>You switched from 5G to WiFi.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="one_open_reservation">You can only reserve <strong>one show at a time</strong><a href="<!--% absolute_url(baseurl,'contribute.html#one_open_reservation') %-->">.</a></summary>
|
||||
<p>
|
||||
As a security measure, we do not allow multiple reservations.
|
||||
Your first show must be posted before you can reserve a slot for your second.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="what_we_log">We share <strong>what we log</strong><a href="<!--% absolute_url(baseurl,'contribute.html#what_we_log') %-->">.</a></summary>
|
||||
<p>
|
||||
We log the date you uploaded, from which IP Address you used, and your user agent.
|
||||
Once your show is processed this information is removed from the database.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="delete_a_reservation">You can also <strong>delete the reservation</strong><a href="<!--% absolute_url(baseurl,'contribute.html#delete_a_reservation') %-->">.</a></summary>
|
||||
<p>
|
||||
Click on the link supplied, and select "<em>Delete this reservation ...</em>" at the bottom of the page.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<p>
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/email_confirmation_of_request_to_reserve.png" alt="" height="110">
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="uploading_an_episode">Uploading an Episode</h1>
|
||||
</header>
|
||||
<p>
|
||||
When you click on the link sent by email, you can manage both the episode, and information about yourself that is displayed on HPR.
|
||||
</p>
|
||||
<p>
|
||||
<strong>All information you provide will be displayed publicly</strong>.
|
||||
</p>
|
||||
<p>
|
||||
The only exception is that your email address will be sent
|
||||
in the feed with some anti-spam additions.
|
||||
For example <em>hpr@example.com</em> will become <em>hpr.nospam@nospam.example.com</em>
|
||||
</p>
|
||||
|
||||
<h2 id="personal_information">Personal Information</h2>
|
||||
|
||||
<p>
|
||||
Your profile information is used on the website, in the RSS feeds, and on social media sites.
|
||||
</p>
|
||||
|
||||
<details>
|
||||
<summary id="profile_email"><strong>email:</strong> <em>already populated</em><a href="<!--% absolute_url(baseurl,'contribute.html#email') %-->">.</a></summary>
|
||||
<p>
|
||||
Your email is the one provided in the request form earlier.
|
||||
</p>
|
||||
<p>
|
||||
Please always use <strong>the same email</strong> for HPR, as otherwise we will consider you a new host.
|
||||
<a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">Contact</a> the Janitors and they will change your email address for you.
|
||||
</p>
|
||||
<p>
|
||||
Some hosts like to set up an email alias, or add a <em>+hpr</em> <a href="https://www.howtogeek.com/plus-sub-email-addressing/">after their email name</a>.
|
||||
Expand <a href="<!--% absolute_url(baseurl,'contribute.html#email_address') %-->">the notes above</a> for more information.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="profile_image"><strong>image:</strong> Your profile picture/avatar<a href="<!--% absolute_url(baseurl,'contribute.html#profile_image') %-->">.</a></summary>
|
||||
<p>
|
||||
<em>Optional</em>
|
||||
</p>
|
||||
<p>
|
||||
If you have a <a href="https://en.gravatar.com/">Gravatar</a> image associated with an email address, then we will use that.
|
||||
Otherwise you can upload a profile image.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="profile_name_handle"><strong>Name/Handle:</strong> How you wish to be known<a href="<!--% absolute_url(baseurl,'contribute.html#profile_name_handle') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
It should be the name you wish to be known as on HPR. It can be your real name, an Internet handle or both.
|
||||
<a href="<!--% absolute_url(baseurl,'about.html#contact') %-->">Contact</a> the Janitors and they will change your Handle for you.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="profile_default_license"><strong>Your Default license:</strong> defaults to CC-BY-SA<a href="<!--% absolute_url(baseurl,'contribute.html#profile_default_license') %-->">.</a></summary>
|
||||
<p>
|
||||
This field tells us what your work is normally licensed under.
|
||||
</p>
|
||||
<p>
|
||||
We recommend you use 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.
|
||||
That means that while you continue to retain the copyright to your show you are allowing us (and everyone else) to use it; provided we give you attribution
|
||||
and that we release it under the same license.
|
||||
</p>
|
||||
<p>
|
||||
We allow the following licenses:
|
||||
<ul>
|
||||
<li><a href="https://wiki.creativecommons.org/wiki/CC0">CC 0</a> - This is a public domain license.</li>
|
||||
<li><a href="https://creativecommons.org/licenses/by/4.0/">CC BY</a> - This license is similar to a MIT/BSD source software license.</li>
|
||||
<li><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA</a> - This license is similar to a copyleft free and open source software license and is our default license.</li>
|
||||
<li><a href="https://opensource.org/licenses">Other</a> - This is for other OSI Approved Licenses.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="profile"><strong>Profile:</strong> Where people can find more information about you<a href="<!--% absolute_url(baseurl,'contribute.html#profile') %-->">.</a></summary>
|
||||
<p>
|
||||
<em>Optional</em>
|
||||
</p>
|
||||
<p>
|
||||
Enter some text about yourself with links to your blog or other online presence.
|
||||
You can use the <a href="https://en.wikipedia.org/wiki/WYSIWYG">what you see is what you get</a>/WYSIWYG
|
||||
editor to format your profile as you would like to see it rendered.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<p>
|
||||
You can change your profile information at any time, by submitting another show.
|
||||
</p>
|
||||
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/upload_form.png" alt="" height="110">
|
||||
|
||||
<h2 id="episode_information">Episode Information</h2>
|
||||
<p>
|
||||
Your show information is used on the website, in the RSS feeds, and on social media sites.
|
||||
</p>
|
||||
|
||||
|
||||
<details>
|
||||
<summary id="episode_title"><strong>Title:</strong> A descriptive title<a href="<!--% absolute_url(baseurl,'contribute.html#episode_title') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
This will be a short 100 character descriptive title and will be used everywhere to identify your show.
|
||||
Any valid utf-8 character is acceptable, but keep the length short and clear.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_short_summary"><strong>Summary:</strong> A short summary of what your show is about<a href="<!--% absolute_url(baseurl,'contribute.html#episode_short_summary') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
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,
|
||||
on printed brochures, on text to speech announcements, on <a href="https://infosec.exchange/@hpr">Mastodon</a> etc.<br>
|
||||
Please refer to yourself in the <strong>third person</strong>. Instead of "<em>I talk ...</em>", rather use ""<em>Bob talks ...</em>".</li>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_explicit"><strong>Explicit:</strong> If your show is <em>Explicit</em> or <em>Clean</em><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
See <a href="https://web.archive.org/web/20150326185817/http://www.apple.com/uk/itunes/podcasts/specs.html">iTunes</a> for more information.
|
||||
We flag HPR as Explicit by default but you are free to mark it <em>Clean</em> if you wish.
|
||||
Expand <a href="<!--% absolute_url(baseurl,'contribute.html#explicit_content') %-->">the note about explicit content</a> above.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_license"><strong>License:</strong> defaults to CC-BY-SA<a href="<!--% absolute_url(baseurl,'contribute.html#episode_license') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
This field tells us what your work is licensed under.
|
||||
</p>
|
||||
<p>
|
||||
We recommend you use 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.
|
||||
That means that while you continue to retain the copyright to your show you are allowing us (and everyone else) to use it; provided we give you attribution
|
||||
and that we release it under the same license.
|
||||
</p>
|
||||
<p>
|
||||
We allow the following licenses:
|
||||
<ul>
|
||||
<li><a href="https://wiki.creativecommons.org/wiki/CC0">CC 0</a> - This is a public domain license.</li>
|
||||
<li><a href="https://creativecommons.org/licenses/by/4.0/">CC BY</a> - This license is similar to a MIT/BSD source software license.</li>
|
||||
<li><a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA</a> - This license is similar to a copyleft free and open source software license and is our default license.</li>
|
||||
<li><a href="https://opensource.org/licenses">Other</a> - This is for other OSI Approved Licenses.</li>
|
||||
</ul>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_show_notes"><strong>Show Notes:</strong> Enter a description about your show, including links to the topics you discussed.<a href="<!--% absolute_url(baseurl,'contribute.html#episode_show_notes') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
If you allow JavaScript, you can use the <a href="https://en.wikipedia.org/wiki/WYSIWYG">what you see is what you get</a>/WYSIWYG editor buttons to add additional formatting.
|
||||
It supports, Headings, Number and Bullet lists, Bold, Italic, Underline, and Strike through formatting, Code Blocks, Blockquotes, and links.
|
||||
</p>
|
||||
<p>
|
||||
You can include images as well. We <strong>automatically create thumbnails</strong>,
|
||||
so please upload and place the full size images in the notes.
|
||||
Add the descriptive text under the image.
|
||||
</p>
|
||||
<p>
|
||||
Optionally - You can paste in <strong>Rendered</strong> HTML but we will remove any styling.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Do not paste un-rendered markup (HTML, Markdown, RestructuredText)</strong> unless your intention is to have un-rendered markup as shownotes.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
It is important to provide good show notes because:
|
||||
<ul>
|
||||
<li><strong>They provide the listeners with more information on the topic.</strong><br>
|
||||
You have taken the time to record a show on a topic, so many people will want to find out more on the subject,
|
||||
therefore you should include links to give more information. It is not enough to just give it in the show itself
|
||||
as people may be listening while away from the Internet, and they may have forgotten or misheard your links.
|
||||
</li>
|
||||
<li><strong>You are making more work for the Janitors.</strong><br>
|
||||
It is always better if you send us show notes yourself as you know best what information you are trying to convey.
|
||||
If you do not supply show notes then your show notes will need to be edited manually by an HPR volunteer.
|
||||
As we do not listen to the show when posting, your show will first be added without show notes.
|
||||
Once it has been published in the <a href="<!--% absolute_url(baseurl,'syndication.html#feed_future') %-->">Future Feed</a>
|
||||
we can listen to it and create the show notes.
|
||||
Once they are done we then need to go back and republish the show to the website.
|
||||
We also need to edit the Internet Archive page created for your show.
|
||||
This runs the risk that the podcast platforms will not pick up the change.
|
||||
</li>
|
||||
<li><strong>They encourage people to download your show.</strong><br>
|
||||
We produce a lot of shows and many people download based on the text in the show notes.
|
||||
If the show notes are not descriptive then it is less likely that
|
||||
it will get as many downloads as other shows with good show notes.</li>
|
||||
<li><strong>They allow your show to be indexed by search engines.</strong><br>
|
||||
Search engines cannot determine the content of your show from the audio alone.
|
||||
The only way for your show to be indexed is for you to describe in the associated text what you say in the audio.</li>
|
||||
<li><strong>They make your show accessible to the deaf and hard of hearing.</strong><br>
|
||||
Your audio is completely inaccessible to those who have hearing problems,
|
||||
It helps them 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>
|
||||
</ul>
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_series"><strong>Series:</strong> Select a series from the drop down<a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></summary>
|
||||
<p><em>Optional</em></p>
|
||||
<p>
|
||||
See if your show fits into a <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a>.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_tags"><strong>Tags:</strong> Add a list of comma separated tags<a href="<!--% absolute_url(baseurl,'contribute.html#episode_tags') %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<p>
|
||||
Pick the most important words from the show notes.
|
||||
Your tags are added as <a href="https://en.wikipedia.org/wiki/Hashtag">#hashtags</a> on social media.
|
||||
This helps people find your show by topic keyword on our
|
||||
<a href="<!--% absolute_url(baseurl,'search.html#tags') %-->">tags page</a>.
|
||||
</p>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="episode_upload_method"><strong>Upload Method:</strong> How you are going to send us your audio<a href="<!--% absolute_url(baseurl,'contribute.html#'episode_upload_method) %-->">.</a></summary>
|
||||
<p><em>Mandatory</em></p>
|
||||
<ul>
|
||||
<li id="episode_upload_method_browser"><strong>Upload now via this browser</strong><br>
|
||||
You can upload single or multiple files using this method.
|
||||
Chrome will display the percentage uploaded, but in Firefox you will need to just wait.
|
||||
</li>
|
||||
<li id="episode_upload_method_url"><strong>Provide a url for us to get it from</strong><br>
|
||||
Using this option may cause delays as a HPR volunteer will need to troubleshoot any issues that may occur,
|
||||
and this can result in your show not been posted on time.
|
||||
This must be publicly accessable using a curl or wget command.
|
||||
Please avoid services that require login or downloading via a browser.
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
If you want to submit an additional file with your show, then put them in a zip, or tgz file.
|
||||
Link to them using just the file name "<em>example_output.pdf</em>" without any paths.
|
||||
Do not add any additional images this way, just include them in the show notes.
|
||||
</p>
|
||||
<p>
|
||||
If you provide a subtitle, transcript with your upload we will automatically use that.
|
||||
<code>
|
||||
<pre>
|
||||
whisper --language en --output_format srt myshow.flac
|
||||
</pre>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
Will produce a <em>srt</em> file with the same name as your audio.
|
||||
You can then edit the text but leave the timing in place.
|
||||
</p>
|
||||
<p>
|
||||
<code>
|
||||
<pre>
|
||||
$ ls myshow.*
|
||||
myshow.flac myshow.srt
|
||||
</pre>
|
||||
</code>
|
||||
</p>
|
||||
<p>
|
||||
During the upload hold the <em>Ctrl</em> key and click on both files.
|
||||
You should see <em>Two Files Selected</em> next to the Browse button.
|
||||
</p>
|
||||
|
||||
|
||||
</details>
|
||||
|
||||
|
||||
<p>
|
||||
The slots will only be allocated once the shows have been successfully processed.
|
||||
Any missing information can result in a show missing the requested slot.
|
||||
</p>
|
||||
|
||||
<p>
|
||||
Press <strong>submit</strong> and your show will be sent to the HPR Volunteers to be processed.
|
||||
Keep an eye on the <a href="<!--% hub_baseurl %-->calendar.php">calendar</a> for when it is posted.
|
||||
For more information on the process of <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/workflow/uploading_a_show.md">Uploading a show</a>
|
||||
and <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/workflow/processing_a_show.md">Show Processing</a> can be found on our GitTea repo.
|
||||
</p>
|
||||
|
||||
</div>
|
||||
@@ -3,50 +3,22 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS "queries-correspondent.tpl.html" %-->
|
||||
<!--% 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) %-->
|
||||
<!--% hpr_shows_to_count = results_hpr_show_count.execute(id); %-->
|
||||
<!--% hpr_result_status = results_hpr_show_count.execute(id); %-->
|
||||
<!--% hpr_shows = results_hpr_shows.execute(id); %-->
|
||||
<!--% hpr_show_count = 0 %-->
|
||||
<!--% FOREACH show IN hpr_shows_to_count %-->
|
||||
<!--% hpr_show_count = hpr_show_count +1; %-->
|
||||
<!--% END %-->
|
||||
<!--% hpr_show_count = results_hpr_show_count.fetchrow_array %-->
|
||||
|
||||
<!--% query_twat_show_count = DBI.prepare('
|
||||
SELECT id
|
||||
FROM twat_eps AS eps
|
||||
WHERE eps.hostid = ?
|
||||
')
|
||||
%-->
|
||||
<!--% query_twat_shows = DBI.prepare('
|
||||
SELECT
|
||||
eps.id,
|
||||
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS 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 twat_eps AS eps
|
||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
WHERE hosts.hostid = ?
|
||||
ORDER BY eps.id DESC
|
||||
')
|
||||
%-->
|
||||
<!--% twat_shows_to_count = query_twat_show_count.execute(id); %-->
|
||||
<!--% twat_shows = query_twat_shows.execute(id); %-->
|
||||
<!--% twat_show_count = 0 %-->
|
||||
<!--% FOREACH show IN twat_shows_to_count %-->
|
||||
<!--% twat_show_count = twat_show_count +1; %-->
|
||||
<!--% END %-->
|
||||
<!--% results_hpr_shows = DBI.prepare(query_twt_shows) %-->
|
||||
<!--% results_twt_show_count = DBI.prepare(query_twt_show_count) %-->
|
||||
<!--% twt_result_status = results_twt_show_count.execute(id); %-->
|
||||
<!--% twt_shows = results_hpr_shows.execute(id); %-->
|
||||
<!--% twt_show_count = results_twt_show_count.fetchrow_array %-->
|
||||
|
||||
<!--% hosts = DBI.tie('hosts', 'hostid') %-->
|
||||
|
||||
<!--% this_host = hosts.$id %-->
|
||||
<!--% page_title = "HPR ~ Host: " _ this_host.host %-->
|
||||
<h2 class="title">Correspondent</h2>
|
||||
<div id="host" class="lane">
|
||||
<div id="host_id">
|
||||
@@ -57,22 +29,23 @@
|
||||
<div id="host_meta">
|
||||
<p><label>email:</label> <u><!--% this_host.email %--></u></p>
|
||||
<div><label>profile:</label> <!--% this_host.profile %--></div>
|
||||
<p><label>episodes:</label> <strong><!--% hpr_show_count + twat_show_count %--></strong></p>
|
||||
<p><label>episodes:</label> <strong><!--% hpr_show_count + twt_show_count %--></strong></p>
|
||||
<p><a href="<!--% absolute_url(baseurl,'//correspondents') %-->/<!--% zero_pad_left(this_host.hostid) %-->/playlist.m3u8">Download the M3U playlist</a>.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lane stack">
|
||||
<div id="episodes" class="lane stack">
|
||||
<!--% FOREACH hpr_show IN hpr_shows; %-->
|
||||
<article>
|
||||
<!--% show_summary(hpr_show, 'hide_host') %-->
|
||||
<p class="listen-in"><!--% display_listen_in(hpr_show.id) %--></p>
|
||||
</article>
|
||||
<!--% END %-->
|
||||
<!--% FOREACH twat_show IN twat_shows; %-->
|
||||
<!--% FOREACH twt_show IN twt_shows; %-->
|
||||
<article>
|
||||
|
||||
<!--% twat_show_summary(twat_show, 'hide_host') %-->
|
||||
<p class="listen-in"><!--% display_listen_in(twat_show.id,"twat") %--></p>
|
||||
<!--% twt_show_summary(twt_show, 'hide_host') %-->
|
||||
<p class="listen-in"><!--% display_listen_in(twt_show.id,"twt") %--></p>
|
||||
</article>
|
||||
<!--% END %-->
|
||||
</div>
|
||||
<p><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
||||
<p><a href="<!--% absolute_url(baseurl) %-->../about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
||||
|
||||
@@ -1,7 +1,8 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS 'shared-avatar.tpl.html' %-->
|
||||
<!--% page_title = "HPR ~ Hosts/Correspondents" %-->
|
||||
<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) %-->
|
||||
<!--% host_cnt = 0 %-->
|
||||
<table id="hosts" class="hosts lane stack">
|
||||
@@ -18,18 +19,17 @@
|
||||
from hosts as h
|
||||
inner join (select hostid, max(date) as date from eps group by hostid) as e
|
||||
on h.hostid = e.hostid
|
||||
order by h.host'
|
||||
order by h.host COLLATE NOCASE asc'
|
||||
) %-->
|
||||
<tr class="lane">
|
||||
<td><!--% get_avatar(host.hostid, host.host, host_cnt > 8) %--></td>
|
||||
|
||||
<td><strong><!--% host.host %--></strong><br>
|
||||
|
||||
Host ID: <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(host.hostid) %-->.html"><!--% host.hostid %--></a></td>
|
||||
<td><a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(host.hostid) %-->.html"><strong><!--% host.host %--></strong><br>
|
||||
Host ID: <!--% host.hostid %--></a></td>
|
||||
<td><!--% host.license %--></td>
|
||||
<td><!--% host.date %--></td>
|
||||
</tr><!--% host_cnt = host_cnt + 1 %-->
|
||||
<!--% END %-->
|
||||
</tbody>
|
||||
</table>
|
||||
<p><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
||||
<p><a href="<!--% absolute_url(baseurl) %-->../about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--% page_title = "HPR ~ Download all the episodes" %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1>Download Archive</h1>
|
||||
|
||||
@@ -10,6 +10,7 @@
|
||||
<!--% FOREACH episode IN episode_result %-->
|
||||
<!--% in_window = ( episode.id > episode.latest || episode.id < ( episode.latest - 20 ) ? 0 : 1 ) %-->
|
||||
<!--% episode_navigation = step_navigation(baseurl,episode) %-->
|
||||
<!--% page_title = "HPR" _ zero_pad_left(episode.id) _ "::" _ episode.title %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1>hpr<!--% zero_pad_left(episode.id) %--> :: <!--% episode.title %--></h1>
|
||||
@@ -26,7 +27,7 @@ Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pa
|
||||
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
|
||||
<p><em><!--% episode.series_description %--></em></p>
|
||||
</header>
|
||||
<div><!--% episode.notes %--></div>
|
||||
<div id="show_notes"><!--% episode.notes %--></div>
|
||||
<footer>
|
||||
<p>
|
||||
<!--% episode_navigation %-->
|
||||
@@ -61,11 +62,11 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
||||
<h2>Leave Comment</h2>
|
||||
<p>
|
||||
<strong>Note to Verbose Commenters</strong><br />
|
||||
If you can't fit everything you want to say in the comment below then you really should <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> a response show instead.
|
||||
If you can't fit everything you want to say in the comment below then you really should <a href="<!--% absolute_url(baseurl) %-->../../about.html#so_you_want_to_record_a_podcast">record</a> a response show instead.
|
||||
</p>
|
||||
<p>
|
||||
<strong>Note to Spammers</strong><br />
|
||||
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> a show about yourself, or your industry, or any other topic we may find interesting. <em>We also check shows for spam :)</em>.
|
||||
All comments are moderated. All links are checked by humans. We strip out all html. Feel free to <a href="<!--% absolute_url(baseurl) %-->../../about.html#so_you_want_to_record_a_podcast">record</a> a show about yourself, or your industry, or any other topic we may find interesting. <em>We also check shows for spam :)</em>.
|
||||
</p>
|
||||
<form method="POST" action="<!--% hub_baseurl %-->comment_confirm.php">
|
||||
<fieldset>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
||||
<!--% PROCESS "queries-episodes.tpl.html" %-->
|
||||
<!--% page_title = "HPR ~ All the shows" %-->
|
||||
<h1>Complete Archive of Shows.</h1>
|
||||
<p>
|
||||
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.
|
||||
@@ -20,7 +21,7 @@
|
||||
<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>
|
||||
<p>Today With a Techie Radio was brought to you by <a href="https://en.wikipedia.org/wiki/Infonomicon">The Infonomicon Computer Club</a></p>
|
||||
<div class="lane stack">
|
||||
<!--% FOREACH twat_episode IN DBI.query('
|
||||
<!--% FOREACH twt_episode IN DBI.query('
|
||||
SELECT
|
||||
eps.id,
|
||||
eps.explicit,
|
||||
@@ -29,14 +30,14 @@
|
||||
hosts.hostid,
|
||||
hosts.host, hosts.email, hosts.local_image,
|
||||
miniseries.name AS series, miniseries.id AS seriesid
|
||||
FROM twat_eps as eps
|
||||
FROM twt_eps as eps
|
||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
ORDER BY eps.id DESC
|
||||
')
|
||||
%-->
|
||||
<article>
|
||||
<!--% twat_show_summary(twat_episode) %-->
|
||||
<!--% twt_show_summary(twt_episode) %-->
|
||||
</article>
|
||||
<!--% END %-->
|
||||
</div>
|
||||
|
||||
@@ -1 +1,4 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% IF date.format(date.now, '%m') == 11 || date.format(date.now, '%j') == 1 %-->
|
||||
<!--% PROCESS 'content-new_year_show_announcement.tpl.html' %-->
|
||||
<!--% END %-->
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
<!--% PROCESS 'shared-listen-now.tpl.html' %-->
|
||||
<!--% PROCESS 'shared-show-transcript.tpl.html' %-->
|
||||
<!--% PROCESS 'shared-call_for_shows.tpl.html' %-->
|
||||
<!--% INCLUDE 'content-index-announcement.tpl.html' %-->
|
||||
<!--% PROCESS "queries-index.tpl.html" %-->
|
||||
<!--% MACRO tidy_notes(all_lines) BLOCK %-->
|
||||
<!--% lines = all_lines %-->
|
||||
@@ -36,7 +35,8 @@
|
||||
|
||||
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
|
||||
<section id="welcome">
|
||||
<p>Hacker Public Radio is a technology focused podcast that releases shows every weekday Monday to Friday. Our shows are produced by listeners like you and can be on any topic that is of interest to hackers, makers, hobbyists, etc. We are a welcoming community that offers positive feedback and encourages respectful debate.</p>
|
||||
<p><!--% make_sfw(is_sfw, "Hobby", "Hacker") %--> Public Radio is a technology focused podcast that releases shows every weekday Monday to Friday. Our shows are produced by listeners like you and can be on any topic that is of interest to <!--% make_sfw(is_sfw, "hobbyists", "hackers, hobbyists") %-->, makers, etc. We are a welcoming community that offers positive feedback and encourages respectful debate.</p>
|
||||
<!--% PROCESS 'content-index-announcement.tpl.html' %-->
|
||||
<div id="call_for_shows">
|
||||
<!--% display_call_for_shows() %-->
|
||||
</div>
|
||||
@@ -44,7 +44,7 @@
|
||||
<section id="podcast_lane">
|
||||
<header><h2>The Podcast</h2></header>
|
||||
<div class="lane">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->about.html#recording_a_podcast">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->contribute.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/mic-fill.svg" alt="" height="110">
|
||||
<p>Record</p>
|
||||
</a>
|
||||
@@ -97,13 +97,14 @@
|
||||
<dl>
|
||||
<!--% FOREACH latest_episodes IN DBI.query(query_latest_episodes)
|
||||
%-->
|
||||
<dt><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">hpr<!--% latest_episodes.id %--> (<!--% latest_episodes.date %-->) :: <!--% latest_episodes.title %--></a> by <!--% latest_episodes.host %--></dt>
|
||||
<dt><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">hpr<!--% latest_episodes.id %--> (<!--% latest_episodes.date %-->) :: <!--% latest_episodes.title %--></a> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(latest_episodes.hostid) %-->.html"><!--% latest_episodes.host %--></a></dt>
|
||||
<dd>
|
||||
<!--% latest_episodes.summary %-->
|
||||
</dd>
|
||||
<!--% host_cnt = host_cnt + 1 %-->
|
||||
<!--% END %-->
|
||||
</dl>
|
||||
<p><a href="<!--% absolute_path(baseurl) %-->eps/index.html">More Episodes…</a></p>
|
||||
</section>
|
||||
<section id="latest_comments">
|
||||
<header><h2>Latest Comments</h2></header>
|
||||
@@ -138,5 +139,6 @@
|
||||
<dd>on hpr<!--% item.eps_id %--> (<!--% item.episode_date %-->) "<!--% item.episode_title %-->" by <!--% item.host %--></dd>
|
||||
<!--% END %-->
|
||||
</dl>
|
||||
<p><a href="<!--% absolute_path(baseurl) %-->comments_viewer.html">More Comments…</a></p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
112
templates/content-new_year.tpl.html
Normal file
@@ -0,0 +1,112 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
|
||||
<h1><u>The <!--% get_new_year_show_ordinal_year %--> Annual 26 Hour New Year's Eve Show</u></h1>
|
||||
<h2>Welcome every <a href="https://www.timeanddate.com/counters/multicountdown.html">TimeZone</a>!</h2>
|
||||
<p>
|
||||
<em>If you keep talking, we'll keep recording.</em>
|
||||
</p>
|
||||
<p>For those who don't know, on New Year's Eve <!--% get_new_year_show_start() %-->, we will have a recording going on the HPR Mumble server for anyone to come on and say "Happy New Year" and talk about whatever they want.
|
||||
We will leave the recording going until at least <!--% get_new_year_show_end() %-->, and keep recording until the conversation stops.</p>
|
||||
<p>
|
||||
So please stop in. Say "Hi" and maybe join in the conversation with other HPR listeners and contributors. It's always a good time!!<br />
|
||||
</p>
|
||||
|
||||
<h1>Listen to the live stream</h1>
|
||||
|
||||
<p>
|
||||
<!--% IF ((date.format(date.now, '%m') == 12 && date.format(date.now, '%d') > 28) || date.format(date.now, '%j') == 1) %-->
|
||||
<img src="images/livestream.png" /><br />
|
||||
<audio controls autoplay>
|
||||
<source src="https://files.shownotes.ooguy.com/stream" type="audio/mpeg" >
|
||||
</audio> <br />
|
||||
<a href="https://files.shownotes.ooguy.com/stream">https://files.shownotes.ooguy.com/stream</a><br />
|
||||
<a href="https://hackerpublicradio.org/live">https://hackerpublicradio.org/live</a><br />
|
||||
<!--% ELSE %-->
|
||||
<audio controls preload="none">
|
||||
<source src="<!--% absolute_path(baseurl) %-->promos/hpr-nye-promo.ogg" type="audio/ogg">
|
||||
</audio>
|
||||
<!--% END %-->
|
||||
</p>
|
||||
|
||||
<h1>Join the conversation on Mumble</h1>
|
||||
|
||||
<h2>Ground Rules</h2>
|
||||
<h3>Use Push to Talk, and a Headset</h3>
|
||||
|
||||
<p>With so many people on the chat, you must use push to talk.
|
||||
You also need to use a Headset so the audio of the room is not fed back.
|
||||
If there is a problem with your setup, then please drop and listen to the stream.
|
||||
Trying to correct poor audio in post is a lot of work, that someone else will have to do.</p>
|
||||
|
||||
<h3>Be Polite</h3>
|
||||
|
||||
<p>When you enter the room please do not interrupt ongoing conversations.
|
||||
Wait for a pause in the conversation and say Hi.
|
||||
It's quite common for people you might not know to join as they wish to speak with other people in the room.
|
||||
They may have been waiting all year for the chance to meet, so please give people the space to have these conversations.</p>
|
||||
|
||||
<h3>Do not announce the Time Zones</h3>
|
||||
|
||||
<p>As there are so <a moz-do-not-send="true" href="https://en.wikipedia.org/wiki/Time_zone">many Time Zones</a> there is no need to interrupt the conversation to announce every one.
|
||||
If you are joining from a time zone that is currently switching to the New Year, then please wait for a pause and wish people Happy New Year.</p>
|
||||
|
||||
<h3>Don't Fill Dead Air</h3>
|
||||
|
||||
<p>This is a relaxed meet-up, and not a traditional "Radio Broadcast".
|
||||
If there are no conversations going on at a given time, don't feel the need to "fill dead air".
|
||||
Before the recording is posted as a podcast the <a href="https://manual.audacityteam.org/man/truncate_silence.html">silences will be truncated</a>.</p>
|
||||
|
||||
<h3>Do not monopolise the conversation</h3>
|
||||
|
||||
<p>Please be mindful that you (or your beverage of choice) may be speaking too much ;-).</p>
|
||||
|
||||
<h3>You are a Guest</h3>
|
||||
|
||||
<p>Be respectful, and remember that attendance on the New Year Show does not <a href="https://hub.hackerpublicradio.org/calendar.php">constitute a show</a>.</p>
|
||||
|
||||
<h3>CC-BY-SA</h3>
|
||||
|
||||
<p>The recording will be released as a podcast on HPR under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/"> Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.
|
||||
The recordings will be released mid year, when there is a lull in submissions.</p>
|
||||
|
||||
<h2>Mumble Setup</h2>
|
||||
|
||||
<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 />
|
||||
<p>Get the Android Client Mumla <a href="https://f-droid.org/packages/se.lublin.mumla">https://f-droid.org/packages/se.lublin.mumla</a></p>
|
||||
<p>Then join the Server: <strong>chatter.skyehaven.net</strong><br />
|
||||
Port: <strong>64738</strong><br />
|
||||
Channel: <strong>HPR</strong></p>
|
||||
<p><strong>Use Push to Talk</strong>. With so many people hands free is not an option.</p>
|
||||
<p>For those who have never used Mumble before, see this <a href="https://hackerpublicradio.org/mumble-howto">how-to explaining the setup of the desktop Mumble client</a>,
|
||||
or listen to <a href="https://hackerpublicradio.org/eps.php?id=3503">hpr3503 :: Configuring Mumble</a>.</p>
|
||||
|
||||
<h3>Video Only (no audio) server</h3>
|
||||
|
||||
<p>
|
||||
For those who wish to see the video of some of the participants we have a jitsi server.<br />
|
||||
<a href="https://jitsi.minnix.dev/hprnye">https://jitsi.minnix.dev/hprnye</a><br />
|
||||
<strong>Please make sure your mic is muted!</strong>
|
||||
</p>
|
||||
|
||||
<h3>Add to the Show-notes</h2>
|
||||
<p>
|
||||
<strong>Please help fill out the show notes</strong><br />
|
||||
<a href="https://shownotes.lugcast.mywire.org/p/hpr-nye-2026">https://shownotes.lugcast.mywire.org/p/hpr-nye-2026</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>
|
||||
|
||||
<h2>History</h2>
|
||||
|
||||
<p>Suggested by <a href="https://hackerpublicradio.org/correspondents/0128.html">pokey</a> in 2011.
|
||||
As podcasting tends to be a one way conversation, he thought it would be nice to get all the FLOSS, Linux, Free Culture, podcasters and Listeners in one place to get together and chat in person.
|
||||
Initially it was planned to be just a few hours, but we kept missing members from other parts of the world.
|
||||
The show was extended to welcome ever time zone to the New Year, which actually turns out to be <a href="https://en.wikipedia.org/wiki/List_of_UTC_offsets">38 Timezones</a>, over 26 Hours.</p>
|
||||
|
||||
<p>So we will record for at least 26 Hours, but will keep the recording going for an "After Show".
|
||||
Some years the after show has been even longer than the show itself.
|
||||
While this is on the HPR Site, it is entirely a community initiative which is supported heavily by the fine folks over at the <a href="https://linuxlugcast.com/">LinuxLugCast</a>, with the Mumble Server been provided by <a href="https://hackerpublicradio.org/correspondents/0228.html">Delwin</a>.</p>
|
||||
|
||||
30
templates/content-new_year_show_announcement.tpl.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<h2 class="title"><a href="<!--% absolute_path(baseurl) %-->new_year.html">The <!--% get_new_year_show_ordinal_year %--> Annual 26 Hour New Year's Eve Show</a></h2>
|
||||
</header>
|
||||
<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 Year's Eve <!--% get_new_year_show_start() %-->, we will have a recording going on the HPR Mumble server for anyone to come on and say "Happy New Year" and talk about whatever they want.
|
||||
We will leave the recording going until at least <!--% get_new_year_show_end() %-->, and keep recording until the conversation stops.</p>
|
||||
<p>
|
||||
So please stop in. Say "Hi" and maybe join in the conversation with other HPR listeners and contributors. It's always a good time!!<br>
|
||||
<!--% IF date.format(date.now, '%m') == 11 || date.format(date.now, '%d') < 29 %-->
|
||||
<audio controls preload="none">
|
||||
<source src="<!--% absolute_path(baseurl) %-->promos/hpr-nye-promo.ogg" type="audio/ogg">
|
||||
</audio>
|
||||
<!--% ELSE %-->
|
||||
<img src="images/livestream.png" /><br />
|
||||
<audio controls autoplay>
|
||||
<source src="https://files.shownotes.ooguy.com/stream" type="audio/mpeg" >
|
||||
</audio> <br />
|
||||
<a href="https://files.shownotes.ooguy.com/stream">https://files.shownotes.ooguy.com/stream</a><br />
|
||||
<a href="https://hackerpublicradio.org/live">https://hackerpublicradio.org/live</a><br />
|
||||
<!--% END %-->
|
||||
</p>
|
||||
<p><a href="<!--% absolute_path(baseurl) %-->new_year.html">More information…</a></p>
|
||||
</article>
|
||||
</div>
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--% page_title = "HPR ~ Find a show" %-->
|
||||
<section id="search">
|
||||
<header>
|
||||
<h1>Search HPR.</h1>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS "queries-series.tpl.html" %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% page_title = "HPR ~ Show series" %-->
|
||||
<h1 class="title">In-Depth Series</h1>
|
||||
<div class="lane stack">
|
||||
<!--% FOREACH series IN DBI.query(query_episodes) %-->
|
||||
@@ -13,6 +14,7 @@
|
||||
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
||||
<li>Date of latest show: <!--% series.latest_show %--></li>
|
||||
<li>Series RSS feeds: <a href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php?series=<!--% series.id %-->">ogg</a>, <a href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php?series=<!--% series.id %-->">spx</a>, <a href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php?series=<!--% series.id %-->">mp3</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'//series') %-->/<!--% zero_pad_left(series.id) %-->.m3u8">Download the M3U playlist</a></li>
|
||||
</ul>
|
||||
<div class="series-description"><!--% series.description %--></div>
|
||||
</article>
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
%-->
|
||||
<!--% series_result = query_series.execute(id) %-->
|
||||
<!--% FOREACH series IN series_result %-->
|
||||
<!--% page_title = "HPR ~ Series: " _ series.name %-->
|
||||
<h1 class="title">In-Depth Series: <!--% series.name %--></h1>
|
||||
<ul>
|
||||
<li>Number of episodes: <!--% series.number_of_episodes %--></li>
|
||||
@@ -13,6 +14,7 @@
|
||||
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
||||
<li>Date of latest show: <!--% series.latest_show %--></li>
|
||||
<li>Series RSS feeds: <a href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php?series=<!--% series.id %-->&full=1&gomax=1">ogg</a>, <a href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php?series=<!--% series.id %-->&full=1&gomax=1">spx</a>, <a href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php?series=<!--% series.id %-->&full=1&gomax=1">mp3</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'//series') %-->/<!--% zero_pad_left(series.id) %-->.m3u8">Download the M3U playlist</a></li>
|
||||
</ul>
|
||||
<p><em><!--% series.description %--></em></p>
|
||||
<section id="series_episodes" class="lane stack">
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% page_title = "HPR ~ Sitemap" %-->
|
||||
<h1>Sitemap</h1>
|
||||
<ul>
|
||||
<li><a href="<!--% hub_baseurl %-->calendar.php"><strong>⇧Upload⇧</strong></a> ← Upload Your Show</li>
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
<h1>RSS Syndication</h1>
|
||||
<h2>Subscribe to our Feeds</h2>
|
||||
<!--% page_title = "HPR ~ Subscribe to our feeds" %-->
|
||||
<h1>RSS Syndication<a href="<!--% absolute_path(baseurl) %-->syndication.html">.</a></h1>
|
||||
<h2 id="subscribe">Subscribe to our Feeds<a href="<!--% absolute_path(baseurl) %-->syndication.html">.</a></h2>
|
||||
<p>
|
||||
Great that you want to listen. Have a look below at the feeds that best suite your listening habits.
|
||||
</p>
|
||||
@@ -7,7 +8,7 @@
|
||||
<article>
|
||||
<header>
|
||||
<hgroup>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> The Community News Summary</h2>
|
||||
<h2 id="feed_community_news"><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> The Community News Summary<a href="<!--% absolute_path(baseurl) %-->syndication.html#feed_community_news">.</a></h2>
|
||||
<p>One show a month</p>
|
||||
</hgroup>
|
||||
</header>
|
||||
@@ -27,7 +28,7 @@
|
||||
<article>
|
||||
<header>
|
||||
<hgroup>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Two week Audio feed</h2>
|
||||
<h2 id="feed_regular"><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Two week Audio feed<a href="<!--% absolute_path(baseurl) %-->syndication.html#feed_regular">.</a></h2>
|
||||
<p>5 shows a week</p>
|
||||
</hgroup>
|
||||
</header>
|
||||
@@ -45,20 +46,20 @@
|
||||
</article>
|
||||
<article>
|
||||
<header>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Entire Archive Audio feed</h2>
|
||||
<h2 id="feed_full"><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Entire Archive Audio feed<a href="<!--% absolute_path(baseurl) %-->syndication.html#feed_full">.</a></h2>
|
||||
</header>
|
||||
<p>
|
||||
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>
|
||||
<ul>
|
||||
<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_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 70G</li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_opus_rss.php">opus feed</a> Warning over 64G</li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_ogg_rss.php">ogg feed</a> Warning over 68G</li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr_total_rss.php">mp3 feed</a> Warning over 72G</li>
|
||||
</ul>
|
||||
</article>
|
||||
<article>
|
||||
<header>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Future feed</h2>
|
||||
<h2 id="feed_future"><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Future Feed<a href="<!--% absolute_path(baseurl) %-->syndication.html#feed_future">.</a></h2>
|
||||
</header>
|
||||
<p>
|
||||
Use this feed to get the shows as they are posted. The shows will be posted out of order as they come in and may be replaced/reposted if errors are found. This is intended as a means to provide find issues with metadata or the audio quality of new shows before they hit the main feed.
|
||||
@@ -69,7 +70,7 @@
|
||||
</article>
|
||||
<article>
|
||||
<header>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Comment feed</h2>
|
||||
<h2 id="feed_comment"><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Comment Feed<a href="<!--% absolute_path(baseurl) %-->syndication.html#feed_comment">.</a></h2>
|
||||
</header>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->comments.rss">Listener contributed comments to the episodes</a></li>
|
||||
@@ -81,7 +82,7 @@
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<h2>Site Replication Sources</h2>
|
||||
<h2 id="site_replication">Site Replication Sources<a href="<!--% absolute_path(baseurl) %-->syndication.html#site_replication">.</a></h2>
|
||||
</header>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr.sql">Daily Database Dump in SQL Format</a></li>
|
||||
@@ -91,7 +92,7 @@
|
||||
</article>
|
||||
<article>
|
||||
<header>
|
||||
<h2>External Sources</h2>
|
||||
<h2 id="external_sources">External Sources<a href="<!--% absolute_path(baseurl) %-->syndication.html#external_sources">.</a></h2>
|
||||
</header>
|
||||
<ul>
|
||||
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
|
||||
@@ -111,19 +112,19 @@
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<h2>Download Archive</h2>
|
||||
<h2 id="download_archive">Download Archive<a href="<!--% absolute_path(baseurl) %-->syndication.html#download_archive">.</a></h2>
|
||||
</header>
|
||||
<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 physically send episodes anywhere in the world if bandwidth is an issue.</p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<header><h2>Full Episode Guide</h2></header>
|
||||
<header><h2 id="full_episode_guide">Full Episode Guide<a href="<!--% absolute_path(baseurl) %-->syndication.html#full_episode_guide">.</a></h2></header>
|
||||
<p>The <a href="<!--% absolute_path(baseurl) %-->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>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<header><h2>Command line download</h2></header>
|
||||
<header><h2 id="cli_download">Command line download<a href="<!--% absolute_path(baseurl) %-->syndication.html#cli_download">.</a></h2></header>
|
||||
<p>You can download the audio of the episodes directly from the command line using the following commands:</p>
|
||||
<ul>
|
||||
<li>ogg:<br>
|
||||
@@ -133,5 +134,7 @@
|
||||
<li>mp3:<br>
|
||||
<code>curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].mp3' -o "hpr#1.mp3"</code></li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -6,23 +6,23 @@
|
||||
<!--% query_episodes = DBI.prepare('
|
||||
WITH episode_maxmin AS (
|
||||
SELECT MAX(id) AS \'latest\', MIN(id) AS \'earliest\', ? AS \'id\'
|
||||
FROM twat_eps AS eps
|
||||
FROM twt_eps AS eps
|
||||
),
|
||||
episode_date AS (
|
||||
SELECT eps.date
|
||||
FROM twat_eps AS eps
|
||||
FROM twt_eps AS eps
|
||||
WHERE eps.id = ?
|
||||
),
|
||||
episode_previous AS (
|
||||
SELECT MAX(id) AS \'previous\', ? AS \'id\'
|
||||
FROM twat_eps AS eps
|
||||
FROM twt_eps AS 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 twat_eps AS eps
|
||||
FROM twt_eps AS eps
|
||||
INNER JOIN episode_date
|
||||
ON eps.date > episode_date.date
|
||||
)
|
||||
@@ -34,7 +34,7 @@
|
||||
hosts.hostid, hosts.host,
|
||||
miniseries.name AS \'series\', miniseries.id AS \'seriesid\',
|
||||
miniseries.description AS \'series_description\'
|
||||
FROM twat_eps AS eps
|
||||
FROM twt_eps AS 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
|
||||
@@ -46,6 +46,7 @@
|
||||
<!--% episode_result = query_episodes.execute(id, id, id, id, id) %-->
|
||||
<!--% FOREACH episode IN episode_result %-->
|
||||
<!--% episode_navigation = step_navigation(baseurl,episode,"twt") %-->
|
||||
<!--% page_title = "TWT" _ episode.id _ "::" _ episode.title %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1><!--% episode.id %--> :: <!--% episode.title %--></h1>
|
||||
@@ -55,8 +56,8 @@
|
||||
<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><!--% 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>
|
||||
<!--% listen_now(episode, "twat", baseurl, media_baseurl) %-->
|
||||
<!--% display_listen_in(episode.id, "twat") %-->
|
||||
<!--% listen_now(episode, "twt", baseurl, media_baseurl) %-->
|
||||
<!--% display_listen_in(episode.id, "twt") %-->
|
||||
</p>
|
||||
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
|
||||
<p><em><!--% episode.series_description %--></em></p>
|
||||
7
templates/ids-correspondent_m3u.tpl.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% FOREACH host IN DBI.query(
|
||||
'select h.hostid from hosts as h'
|
||||
) %-->
|
||||
,<!--% host.hostid %-->
|
||||
<!--% END %-->
|
||||
|
||||
7
templates/ids-series_episodes_m3u.tpl.html
Normal file
@@ -0,0 +1,7 @@
|
||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||
<!--% FOREACH series IN DBI.query(
|
||||
'select s.id from miniseries as s'
|
||||
) %-->
|
||||
,<!--% series.id %-->
|
||||
<!--% END %-->
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% FOREACH episode IN DBI.query(
|
||||
'select eps.id from twat_eps AS eps'
|
||||
'select eps.id from twt_eps AS eps'
|
||||
) %-->
|
||||
,<!--% episode.id %-->
|
||||
<!--% END %-->
|
||||
24
templates/m3u-correspondent.tpl.m3u8
Normal file
@@ -0,0 +1,24 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS 'queries-correspondent.tpl.html' %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% results_hpr_shows = DBI.prepare(query_hpr_shows) %-->
|
||||
<!--% hpr_shows = results_hpr_shows.execute(id); %-->
|
||||
<!--% FOREACH hpr_show IN hpr_shows; %-->
|
||||
#EXTINF: <!--% hpr_show.duration %-->,<!--% hpr_show.host %--> - <!--% hpr_show.title %-->
|
||||
|
||||
|
||||
<!--% media_path(hpr_show.id, 'hpr', 'mp3', baseurl, media_baseurl) %-->
|
||||
|
||||
|
||||
<!--% END %-->
|
||||
<!--% results_hpr_shows = DBI.prepare(query_twt_shows) %-->
|
||||
<!--% twt_result_status = results_twt_show_count.execute(id); %-->
|
||||
<!--% twt_shows = results_hpr_shows.execute(id); %-->
|
||||
<!--% FOREACH hpr_show IN twt_shows; %-->
|
||||
#EXTINF: <!--% hpr_show.duration %-->,<!--% hpr_show.host %--> - <!--% hpr_show.title %-->
|
||||
|
||||
|
||||
<!--% media_path(hpr_show.id, 'twt', 'mp3', baseurl, media_baseurl) %-->
|
||||
|
||||
|
||||
<!--% END %-->
|
||||
13
templates/m3u-series_episodes.tpl.m3u8
Normal file
@@ -0,0 +1,13 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS 'queries-series_episodes.tpl.html' %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% results_hpr_shows = DBI.prepare(query_shows_sql) %-->
|
||||
<!--% hpr_shows = results_hpr_shows.execute(id); %-->
|
||||
<!--% FOREACH hpr_show IN hpr_shows; %-->
|
||||
#EXTINF: <!--% hpr_show.duration %-->,<!--% hpr_show.host %--> - <!--% hpr_show.title %-->
|
||||
|
||||
|
||||
<!--% media_path(hpr_show.id, 'hpr', 'mp3', baseurl, media_baseurl) %-->
|
||||
|
||||
|
||||
<!--% END %-->
|
||||
2
templates/m3u.tpl.m3u8
Normal file
@@ -0,0 +1,2 @@
|
||||
#EXTM3U
|
||||
<!--% INCLUDE $content %-->
|
||||
@@ -1,9 +1,18 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% USE date %-->
|
||||
<!--% page_title = make_sfw(is_sfw, "Hobby", "Hacker") _ " Public Radio (HPR) ~ The Technology Community Podcast" %-->
|
||||
<!--% WRAPPER page
|
||||
# The default page_title variable set above can be overridden
|
||||
# in each individual $content template (i.e. templates/conten-<template name>.tpl.html)
|
||||
# processed below.
|
||||
%-->
|
||||
<!--% PROCESS $content %-->
|
||||
<!--% END %-->
|
||||
<!--% BLOCK page %-->
|
||||
<!DOCTYPE HTML>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>Hacker Public Radio ~ The Technology Community Podcast</title>
|
||||
<title><!--% page_title %--></title>
|
||||
<!--% IF baseurl %-->
|
||||
<base href="<!--% baseurl %-->">
|
||||
<!--% END %-->
|
||||
@@ -11,12 +20,12 @@
|
||||
<meta http-equiv="X-Clacks-Overhead" content="GNU Terry Pratchett" />
|
||||
<meta http-equiv="last-modified" content="<!--% format_feed_date(date.now) %-->">
|
||||
<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." />
|
||||
<link rel="shortcut icon" href="/hpr.ico" >
|
||||
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Opus RSS" href="<!--% absolute_path(baseurl) %-->hpr_opus_rss.php" />
|
||||
<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="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" />
|
||||
<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." />
|
||||
<link rel="shortcut icon" href="<!--% absolute_url(baseurl) %-->hpr.ico" >
|
||||
<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="<!--% 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="<!--% 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="<!--% 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 href="/css/hpr.css" rel="stylesheet" />
|
||||
<!--[if IE]>
|
||||
@@ -41,7 +50,7 @@
|
||||
<hgroup id="title">
|
||||
<h1 id="site_acronym"><a href="<!--% absolute_path(baseurl) %-->index.html">HPR</a></h1>
|
||||
<p id="site_name">
|
||||
<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) %-->syndication.html">R</a>adio
|
||||
</p>
|
||||
@@ -54,7 +63,8 @@
|
||||
</div>
|
||||
</header>
|
||||
<main id="main_content" role="main">
|
||||
<!--% INCLUDE $content %-->
|
||||
<!--% content %-->
|
||||
<!--% page_title = "acck" %-->
|
||||
</main>
|
||||
<footer role="contentinfo">
|
||||
<hr class="no-css">
|
||||
@@ -70,3 +80,4 @@
|
||||
</footer>
|
||||
</body>
|
||||
</html>
|
||||
<!--% END %-->
|
||||
|
||||
@@ -1,4 +1,11 @@
|
||||
<!--% query_hpr_shows = '
|
||||
<!--% query_hpr_shows = 'WITH
|
||||
comment_tallies AS (
|
||||
SELECT
|
||||
eps_id,
|
||||
COUNT(eps_id) AS eps_tally
|
||||
FROM comments
|
||||
GROUP BY eps_id
|
||||
)
|
||||
SELECT
|
||||
eps.id,
|
||||
eps.explicit,
|
||||
@@ -8,17 +15,44 @@
|
||||
hosts.local_image,
|
||||
hosts.hostid,
|
||||
hosts.host, hosts.email, hosts.profile,
|
||||
miniseries.name AS series, miniseries.id AS seriesid
|
||||
miniseries.name AS series, miniseries.id AS seriesid,
|
||||
COALESCE(comment_tallies.eps_tally,0) AS commentsTally
|
||||
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 hosts.hostid = ? AND eps.date < date(\'now\', \'+1 days\')
|
||||
ORDER BY eps.id + 0 DESC
|
||||
'
|
||||
%-->
|
||||
<!--% query_hpr_show_count = '
|
||||
SELECT id
|
||||
SELECT COUNT(id) as Tally
|
||||
FROM eps
|
||||
WHERE eps.hostid = ? AND eps.date < date(\'now\', \'+1 days\')
|
||||
'
|
||||
%-->
|
||||
<!--% query_twt_show_count = '
|
||||
SELECT COUNT(id) as Tally
|
||||
FROM twt_eps AS eps
|
||||
WHERE eps.hostid = ?
|
||||
'
|
||||
%-->
|
||||
<!--% query_twt_shows = '
|
||||
SELECT
|
||||
eps.id,
|
||||
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS 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 twt_eps AS eps
|
||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||
WHERE hosts.hostid = ?
|
||||
ORDER BY eps.id DESC
|
||||
'
|
||||
%-->
|
||||
|
||||
|
||||
@@ -1,14 +1,24 @@
|
||||
<!--% query_episodes = 'SELECT
|
||||
<!--% query_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.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
|
||||
miniseries.name AS series, miniseries.id AS seriesid,
|
||||
COALESCE(comment_tallies.eps_tally,0) AS commentsTally
|
||||
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 <= date(\'now\')
|
||||
ORDER BY eps.id + 0 DESC'
|
||||
%-->
|
||||
|
||||
@@ -14,14 +14,24 @@
|
||||
WHERE miniseries.id = ?
|
||||
ORDER BY name'
|
||||
%-->
|
||||
<!--% query_shows_sql = 'SELECT
|
||||
<!--% query_shows_sql = 'WITH
|
||||
comment_tallies AS (
|
||||
SELECT
|
||||
eps_id,
|
||||
COUNT(eps_id) AS eps_tally
|
||||
FROM comments
|
||||
GROUP BY eps_id
|
||||
)
|
||||
SELECT
|
||||
id, date, title,
|
||||
duration, summary, notes,
|
||||
explicit, eps.license, tags,
|
||||
hosts.host, hosts.hostid
|
||||
hosts.host, hosts.hostid,
|
||||
COALESCE(comment_tallies.eps_tally,0) AS commentsTally
|
||||
FROM eps
|
||||
INNER JOIN hosts
|
||||
ON eps.hostid = hosts.hostid
|
||||
LEFT JOIN comment_tallies ON eps.id = comment_tallies.eps_id
|
||||
WHERE series = ? AND eps.date < date(\'now\', \'+1 days\')
|
||||
ORDER BY eps.id DESC
|
||||
'
|
||||
|
||||
@@ -1 +1 @@
|
||||
<!--% query_tags = 'SELECT id, tags FROM eps' %-->
|
||||
<!--% query_tags = 'SELECT id, tags FROM eps WHERE eps.date <= date(\'now\')' %-->
|
||||
|
||||
@@ -41,7 +41,7 @@ or
|
||||
<span><label>Flag:</label> <!--% display_explicit(show.explicit) %-->.</span>
|
||||
<span><!--% show_series(show.series, show.seriesid) %--></span> <br>
|
||||
<!--% IF hide_tags == "" %--><!--% display_tags(show.tags) %--><!--% END %-->
|
||||
<!--% IF show.comentsTally || show.commentsTally == 0 %-->
|
||||
<!--% IF show.commentsTally || show.commentsTally == 0 %-->
|
||||
<span><label>Comments:</label> <!--% display_comments_tally(show.id, show.commentsTally) %--></span>
|
||||
<!--% END %-->
|
||||
<!--% END %-->
|
||||
@@ -56,7 +56,7 @@ or
|
||||
<p class="summary"><!--% show.summary %--></p>
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO twat_show_summary(show, hide_host) BLOCK %-->
|
||||
<!--% MACRO twt_show_summary(show, hide_host) BLOCK %-->
|
||||
|
||||
<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>
|
||||
|
||||
@@ -93,7 +93,7 @@
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO media_path(episode_id, episode_type, media_type, baseurl, media_baseurl) BLOCK %-->
|
||||
<!--% IF episode_type == "twat" %-->
|
||||
<!--% IF episode_type == "twt" %-->
|
||||
<!--% episode_type = "twt" %-->
|
||||
<!--% padding = 3 %-->
|
||||
<!--% media_folder = "eps/"; padding = 3 %-->
|
||||
@@ -117,16 +117,74 @@
|
||||
<!--% IF folder %-->
|
||||
<!--% folder = folder %--><!--% ELSE %--><!--% folder = "hpr" %-->
|
||||
<!--% END %-->
|
||||
<small><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.earliest) %-->/index.html" rel="first"><< First</a>,
|
||||
<!--% arrow_first = "arrow-first.svg" %-->
|
||||
<!--% arrow_prev = "arrow-previous.svg" %-->
|
||||
<!--% arrow_next = "arrow-next.svg" %-->
|
||||
<!--% arrow_last = "arrow-last.svg" %-->
|
||||
<nav class="episodes" aria-description="Navigation to other episodes"><span><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.earliest) %-->/index.html" rel="first" aria-label="first episode"><!--% INSERT $arrow_first %--><span class="no-css"><< </span>First</a></span>,
|
||||
<!--% IF links.previous %-->
|
||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.previous) %-->/index.html" rel="previous">< Previous</a>,
|
||||
<span><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.previous) %-->/index.html" rel="previous" aria-label="previous episode"><!--% INSERT $arrow_prev %--><span class="no-css">< </span>Previous</a></span>,
|
||||
<!--% ELSE %-->
|
||||
<span><</span> Previous,
|
||||
<span class="no-link"><!--% INSERT $arrow_prev %--><span class="no-css">< </span>Previous</span>,
|
||||
<!--% END %-->
|
||||
<!--% IF links.next %-->
|
||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.next) %-->/index.html" rel="next">Next ></a>,
|
||||
<span><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.next) %-->/index.html" rel="next" aria-label="next episode">Next<span class="no-css"> ></span><!--% INSERT $arrow_next %--></a></span>,
|
||||
<!--% ELSE %-->
|
||||
Next <span>></span>
|
||||
<span class="no-link">Next<span class="no-css"> ></span><!--% INSERT $arrow_next %--></span>,
|
||||
<!--% END %-->
|
||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last">Latest >></a></small>
|
||||
<span><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last" aria-label="latest episode">Latest<span class="no-css"> >></span><!--% INSERT $arrow_last %--></a></span></nav>
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO get_new_year_show_start BLOCK %-->
|
||||
<!--% start_year = date.format(date.now, '%Y') %-->
|
||||
<!--% IF date.format(date.now, '%m') != 12 || date.format(date.now, '%j') == 1 %-->
|
||||
<!--% start_year = start_year - 1 %-->
|
||||
<!--% END %-->
|
||||
<time datetime="<!--% start_year %-->-12-31T10:00Z"><!--% start_year %-->-12-31 10:00 UTC (5:00 AM EST)</time>
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO get_new_year_show_end BLOCK %-->
|
||||
<!--% end_year = date.format(date.now, '%Y') %-->
|
||||
<!--% IF date.format(date.now, '%m') == 12 || date.format(date.now, '%j') == 1 %-->
|
||||
<!--% end_year = end_year + 1 %-->
|
||||
<!--% END %-->
|
||||
<time datetime="<!--% end_year %-->-01-01T12:00Z"><!--% end_year %-->-01-01 12:00 UTC (7:00 AM EST)</time>
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO get_new_year_show_ordinal_year BLOCK %-->
|
||||
<!--% ordinal_year = date.format(date.now, '%Y') - 2011 %-->
|
||||
<!--% IF date.format(date.now, '%m') != 12 || date.format(date.now, '%j') == 1 %-->
|
||||
<!--% ordinal_year = ordinal_year - 1 %-->
|
||||
<!--% END %-->
|
||||
<!--% years.0 = 'th'
|
||||
years.1 = 'st'
|
||||
years.2 = 'nd'
|
||||
years.3 = 'rd'
|
||||
years.4 = 'th'
|
||||
years.5 = 'th'
|
||||
years.6 = 'th'
|
||||
years.7 = 'th'
|
||||
years.8 = 'th'
|
||||
years.9 = 'th'
|
||||
years.14 = 'Fourteenth'
|
||||
years.15 = 'Fifteenth'
|
||||
years.16 = 'Sixteenth'
|
||||
years.17 = 'Seventeenth'
|
||||
years.18 = 'Eighteenth'
|
||||
years.19 = 'Nineteenth'
|
||||
years.20 = 'Twentieth'
|
||||
years.30 = 'Thirtieth'
|
||||
years.40 = 'Fortieth'
|
||||
years.50 = 'Fiftieth' %-->
|
||||
<!--% index = ordinal_year % 10 %-->
|
||||
<!--% IF ordinal_year < 21 || (index == 0 && ordinal_year < 51) %-->
|
||||
<!--% years.$ordinal_year %-->
|
||||
<!--% ELSE %-->
|
||||
<!--% ordinal_year %--><sup><!--% years.$index %--></sup>
|
||||
<!--% END %-->
|
||||
<!--% END %-->
|
||||
|
||||
<!--% MACRO make_sfw(swf, sfw_text, nsfw_text) BLOCK %-->
|
||||
<!--% IF swf == 0 %--><!--% sfw_text %-->
|
||||
<!--% ELSE %--><!--% nsfw_text %-->
|
||||
<!--% END %--><!--% END %-->
|
||||
|
||||