Compare commits
224 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 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
|
|||
|
b3e9ccc546
|
|||
| 5f601251db | |||
|
af2da91d7c
|
|||
|
3c7f02a09c
|
|||
|
81c8220e30
|
|||
|
b694a6f547
|
|||
| d0f5fac2b4 | |||
|
82563d0a48
|
|||
|
4ff0738531
|
|||
|
69c298922a
|
|||
|
a87e7f12a6
|
|||
|
4fbf32eaa9
|
|||
|
dc274983fe
|
|||
|
ee749cf1bb
|
|||
|
6bc40e11c1
|
|||
|
4e853f04f3
|
|||
|
fb01dd8e3f
|
|||
|
61aabd8ef1
|
|||
|
b32544f938
|
|||
|
bca63a36fb
|
|||
|
9d1b94f686
|
|||
|
a9ff01f392
|
|||
|
fbcf5be2a6
|
|||
| 5310ee1912 | |||
| bc7f7a7347 | |||
|
fc1dedf4b2
|
|||
|
181c9fbad9
|
|||
|
a2fb6b1f6a
|
|||
|
5e48d9e064
|
|||
|
454d548ce7
|
|||
|
023c041706
|
|||
|
edebce3fd3
|
|||
| dcfd801b9a | |||
|
|
4654adaa42 | ||
|
|
f3b156b31f | ||
|
7ae15005de
|
|||
|
be17edd6ac
|
|||
|
3454bb717e
|
|||
|
7118a3da0a
|
|||
|
a8f4eea501
|
|||
|
edf64b668c
|
|||
|
|
7235230e7f | ||
|
9c2b43e11f
|
|||
|
8bf4f67cce
|
|||
|
bad3e3e3da
|
|||
|
4e08ebad63
|
|||
|
310f14c4bd
|
|||
|
97116aad4b
|
|||
|
02864bed9e
|
|||
|
b12a7fb4e7
|
|||
|
ca90c1f580
|
|||
|
8a20ac971e
|
|||
|
798ccc42bc
|
|||
|
0bdc847f0f
|
|||
|
|
6915d74de1 | ||
|
6b8c97815a
|
|||
|
4336183437
|
|||
|
e5d8d20e85
|
|||
|
3991c95533
|
|||
|
29e2647c85
|
|||
|
96d4f14b6f
|
|||
|
f2b00145ad
|
|||
|
e9df7bc900
|
|||
|
c742794f15
|
|||
|
90710665c9
|
|||
|
6347b39d74
|
|||
|
033fc310bf
|
|||
|
6acaf1b28c
|
|||
|
115d831c94
|
|||
|
f58aa02980
|
|||
| 2e43f79d52 | |||
|
38d81cedda
|
|||
|
8e2fb783b6
|
|||
|
d0727a0f0c
|
|||
|
|
00ab3b3065 | ||
|
|
4af0c021eb | ||
|
|
3abeb25b03 | ||
|
|
e2fd890669 | ||
|
60e02a1435
|
|||
|
11bc99a2f0
|
|||
|
7f1420a76e
|
|||
|
c68a7f12a2
|
|||
|
0b977264dc
|
|||
|
38b4a704f9
|
|||
|
9dce59fdee
|
|||
|
65528d2025
|
|||
|
ec8335daab
|
|||
|
7f559f26e3
|
|||
|
82ee6c808c
|
|||
|
a5c73f5874
|
|||
|
829bdb7708
|
|||
|
91000b7c6f
|
|||
|
80315d296c
|
|||
|
69b26429a8
|
|||
|
51ed253bbd
|
|||
|
fcd73c05d7
|
|||
|
71c1c46cfb
|
|||
|
991f088ded
|
|||
|
ebe230ee0a
|
|||
|
da62e4ec51
|
|||
|
34d13fa0c6
|
|||
| e21f434c2a |
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
|
||||
@@ -111,7 +146,7 @@ file are found in the comments within the file.
|
||||
|
||||
Any database supported by the Perl:DBI and Perl::DBD modules can be used with
|
||||
the site-generator program. Currently the hpr_generator project works with
|
||||
a MySQL or SQLite database.
|
||||
an SQLite database.
|
||||
|
||||
Find the [DBI] section of the file. It should look like the following
|
||||
|
||||
@@ -146,26 +181,6 @@ The hpr.db section of the driver option `dbi:SQLite:hpr.db` is the path
|
||||
to the sqlite file. The default assumes the hpr.db file is located in the same
|
||||
directory as the site-generator.
|
||||
|
||||
### MySQL
|
||||
|
||||
Remove the comment character from the start of the database, driver,
|
||||
user, and password option lines:
|
||||
|
||||
```
|
||||
# Configuration settings for MySQL
|
||||
database: mysql
|
||||
driver: dbi:mysql:database=hpr_hpr:hostname=localhost
|
||||
user: hpr-generator
|
||||
password: *********
|
||||
```
|
||||
|
||||
This assumes that the MySQL database service is available at the localhost
|
||||
hostname, that the database name (hpr_hpr) is the database created from
|
||||
the hpr.sql dump file or manually created by you, that the user (hpr-generator)
|
||||
was added by you and has read rights to the hpr_hpr database, and that the
|
||||
password (replace ********* with the actual password) matches the password set
|
||||
for the hpr-generator database user.
|
||||
|
||||
## Configuring the website for viewing locally
|
||||
|
||||
For HTML links to work when viewing the files on your local machine using the
|
||||
|
||||
17
NEWSITE_CONTRIBUTERS.md
Normal file
@@ -0,0 +1,17 @@
|
||||
# Basic Concept, Design and Guiding Light
|
||||
|
||||
* Ken Fallon
|
||||
|
||||
# Implementaion and Design Touches
|
||||
|
||||
* Lee Hanken
|
||||
* Roan Horning
|
||||
|
||||
# Constructive Feedback and Forward Looks
|
||||
|
||||
* Archer72 (Mark Rice)
|
||||
* Dave Morris
|
||||
* kwoot
|
||||
|
||||
Thanks to all the contributers who helped give HPR
|
||||
its 2025 facelift!
|
||||
20
README.md
@@ -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
|
||||
@@ -15,15 +18,6 @@ Static web page generator for the Hacker Public Radio website.
|
||||
2. Run `./utils/update-hpr.sh`
|
||||
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries. Must convert WITH
|
||||
clauses to sub-queries when using earlier versions of SQLite.
|
||||
* With MySQL
|
||||
* Create database hpr_hpr in the MySQL server from HPR dump file.
|
||||
- ``sudo mysql --host=localhost < hpr.sql``
|
||||
* Create a user that will be used by the site-generator.
|
||||
- Suggested username: hpr-generator
|
||||
- ``CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';``
|
||||
* Limit the user's privileges to EXECUTE and SELECT
|
||||
- ``GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';``
|
||||
- ``GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';``
|
||||
* Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
||||
* Getopt::Long
|
||||
* Pod::Usage
|
||||
@@ -35,11 +29,15 @@ Static web page generator for the Hacker Public Radio website.
|
||||
* Template::Plugin::HTML::Strip
|
||||
* DBI
|
||||
* Tie::DBI
|
||||
* DBD::SQLite or DBD::mysql
|
||||
* DBD::SQLite
|
||||
* Date::Calc
|
||||
* 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.
|
||||
|
||||
@@ -76,4 +74,6 @@ and add the label "**Feature Request**".
|
||||
* gordons
|
||||
* Ken Fallon
|
||||
* norrist
|
||||
* Paul Jewell
|
||||
* Lee Hanken
|
||||
|
||||
|
||||
1
_sql/sqlite/Rename_twt_table.sql
Normal file
@@ -0,0 +1 @@
|
||||
ALTER TABLE twat_eps RENAME TO twt_eps;
|
||||
BIN
public_html/css/bebas/BebasNeue.otf
Normal file
BIN
public_html/css/bebas/BebasNeue.woff
Normal file
BIN
public_html/css/bebas/BebasNeue.woff2
Normal file
BIN
public_html/css/bebas/BebasNeueLight.otf
Normal file
93
public_html/css/bebas/OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
public_html/css/patrickhand/BebasNeue.woff
Normal file
93
public_html/css/patrickhand/OFL.txt
Normal file
@@ -0,0 +1,93 @@
|
||||
Copyright (c) 2010-2012 Patrick Wagesreiter (mail@patrickwagesreiter.at)
|
||||
|
||||
This Font Software is licensed under the SIL Open Font License, Version 1.1.
|
||||
This license is copied below, and is also available with a FAQ at:
|
||||
https://openfontlicense.org
|
||||
|
||||
|
||||
-----------------------------------------------------------
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font
|
||||
Software, subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
BIN
public_html/css/patrickhand/PatrickHand-Regular.ttf
Normal file
BIN
public_html/css/patrickhand/PatrickHand-Regular.woff
Normal file
BIN
public_html/css/patrickhand/PatrickHand-Regular.woff2
Normal file
122
public_html/images/Richard_Querin_atomic-plain.svg
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
public_html/images/charcoal.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
public_html/images/contribute-audacity-export-sm.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
public_html/images/contribute-audacity-record-sm.png
Normal file
|
After Width: | Height: | Size: 114 KiB |
BIN
public_html/images/contribute-mumble-record-sm.png
Normal file
|
After Width: | Height: | Size: 93 KiB |
88
public_html/images/hpr-splatter-logo.svg
Normal file
|
After Width: | Height: | Size: 96 KiB |
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 |
1
public_html/images/icons/calendar-2-line.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M9 1V3H15V1H17V3H21C21.5523 3 22 3.44772 22 4V20C22 20.5523 21.5523 21 21 21H3C2.44772 21 2 20.5523 2 20V4C2 3.44772 2.44772 3 3 3H7V1H9ZM20 11H4V19H20V11ZM8 13V15H6V13H8ZM13 13V15H11V13H13ZM18 13V15H16V13H18ZM7 5H4V9H20V5H17V7H15V5H9V7H7V5Z"/></svg>
|
||||
|
After Width: | Height: | Size: 339 B |
1
public_html/images/icons/mic-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M11.9998 1C14.7612 1 16.9998 3.23858 16.9998 6V10C16.9998 12.7614 14.7612 15 11.9998 15C9.23833 15 6.99976 12.7614 6.99976 10V6C6.99976 3.23858 9.23833 1 11.9998 1ZM3.05469 11H5.07065C5.55588 14.3923 8.47329 17 11.9998 17C15.5262 17 18.4436 14.3923 18.9289 11H20.9448C20.4837 15.1716 17.1714 18.4839 12.9998 18.9451V23H10.9998V18.9451C6.82814 18.4839 3.51584 15.1716 3.05469 11Z"/></svg>
|
||||
|
After Width: | Height: | Size: 476 B |
1
public_html/images/icons/question-mark.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M12 19C12.8284 19 13.5 19.6716 13.5 20.5C13.5 21.3284 12.8284 22 12 22C11.1716 22 10.5 21.3284 10.5 20.5C10.5 19.6716 11.1716 19 12 19ZM12 2C15.3137 2 18 4.68629 18 8C18 10.1646 17.2474 11.2907 15.3259 12.9231C13.3986 14.5604 13 15.2969 13 17H11C11 14.526 11.787 13.3052 14.031 11.3989C15.5479 10.1102 16 9.43374 16 8C16 5.79086 14.2091 4 12 4C9.79086 4 8 5.79086 8 8V9H6V8C6 4.68629 8.68629 2 12 2Z"/></svg>
|
||||
|
After Width: | Height: | Size: 497 B |
1
public_html/images/icons/rss-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M3 3C12.9411 3 21 11.0589 21 21H18C18 12.7157 11.2843 6 3 6V3ZM3 10C9.07513 10 14 14.9249 14 21H11C11 16.5817 7.41828 13 3 13V10ZM3 17C5.20914 17 7 18.7909 7 21H3V17Z"/></svg>
|
||||
|
After Width: | Height: | Size: 264 B |
57
public_html/images/icons/search.svg
Normal file
@@ -0,0 +1,57 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
viewBox="0 0 24 24"
|
||||
fill="currentColor"
|
||||
version="1.1"
|
||||
id="svg883"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/">
|
||||
<title
|
||||
id="title18331">Search Icon</title>
|
||||
<defs
|
||||
id="defs887" />
|
||||
<ellipse
|
||||
style="opacity:0.995734;fill:none;stroke:#010001;stroke-width:1.81467;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;paint-order:fill markers stroke"
|
||||
id="path1376"
|
||||
cx="14.284247"
|
||||
cy="9.0682373"
|
||||
rx="6.5925374"
|
||||
ry="6.5925369" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1.84169;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 2.8483937,21.838389 10.399215,13.84375"
|
||||
id="path1882" />
|
||||
<path
|
||||
id="path1376-6"
|
||||
style="opacity:0.995734;fill:none;stroke:#010001;stroke-width:1.21;stroke-linecap:square;stroke-miterlimit:4;stroke-dasharray:none;paint-order:fill markers stroke"
|
||||
d="M 14.133134,5.0939128 C 16.342061,5.259387 18.056426,6.9596051 18.240557,9.1075843 18.055629,6.9365 16.307909,5.2286717 14.133134,5.0939128 Z" />
|
||||
<metadata
|
||||
id="metadata18329">
|
||||
<rdf:RDF>
|
||||
<cc:License
|
||||
rdf:about="http://creativecommons.org/publicdomain/zero/1.0/">
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Reproduction" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#Distribution" />
|
||||
<cc:permits
|
||||
rdf:resource="http://creativecommons.org/ns#DerivativeWorks" />
|
||||
</cc:License>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<cc:license
|
||||
rdf:resource="http://creativecommons.org/publicdomain/zero/1.0/" />
|
||||
<dc:title>Search Icon</dc:title>
|
||||
<dc:date>2025-08-05</dc:date>
|
||||
<dc:creator>
|
||||
<cc:Agent>
|
||||
<dc:title>Roan Horning</dc:title>
|
||||
</cc:Agent>
|
||||
</dc:creator>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
1
public_html/images/icons/stack-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M20.0833 10.4999L21.2854 11.2212C21.5221 11.3633 21.5989 11.6704 21.4569 11.9072C21.4146 11.9776 21.3557 12.0365 21.2854 12.0787L11.9999 17.6499L2.71451 12.0787C2.47772 11.9366 2.40093 11.6295 2.54301 11.3927C2.58523 11.3223 2.64413 11.2634 2.71451 11.2212L3.9166 10.4999L11.9999 15.3499L20.0833 10.4999ZM20.0833 15.1999L21.2854 15.9212C21.5221 16.0633 21.5989 16.3704 21.4569 16.6072C21.4146 16.6776 21.3557 16.7365 21.2854 16.7787L12.5144 22.0412C12.1977 22.2313 11.8021 22.2313 11.4854 22.0412L2.71451 16.7787C2.47772 16.6366 2.40093 16.3295 2.54301 16.0927C2.58523 16.0223 2.64413 15.9634 2.71451 15.9212L3.9166 15.1999L11.9999 20.0499L20.0833 15.1999ZM12.5144 1.30864L21.2854 6.5712C21.5221 6.71327 21.5989 7.0204 21.4569 7.25719C21.4146 7.32757 21.3557 7.38647 21.2854 7.42869L11.9999 12.9999L2.71451 7.42869C2.47772 7.28662 2.40093 6.97949 2.54301 6.7427C2.58523 6.67232 2.64413 6.61343 2.71451 6.5712L11.4854 1.30864C11.8021 1.11864 12.1977 1.11864 12.5144 1.30864Z"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
1
public_html/images/icons/user-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M4 22C4 17.5817 7.58172 14 12 14C16.4183 14 20 17.5817 20 22H4ZM12 13C8.685 13 6 10.315 6 7C6 3.685 8.685 1 12 1C15.315 1 18 3.685 18 7C18 10.315 15.315 13 12 13Z"/></svg>
|
||||
|
After Width: | Height: | Size: 260 B |
1
public_html/images/icons/volume-up-fill.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24" fill="currentColor"><path d="M2 16.0001H5.88889L11.1834 20.3319C11.2727 20.405 11.3846 20.4449 11.5 20.4449C11.7761 20.4449 12 20.2211 12 19.9449V4.05519C12 3.93977 11.9601 3.8279 11.887 3.73857C11.7121 3.52485 11.3971 3.49335 11.1834 3.66821L5.88889 8.00007H2C1.44772 8.00007 1 8.44778 1 9.00007V15.0001C1 15.5524 1.44772 16.0001 2 16.0001ZM23 12C23 15.292 21.5539 18.2463 19.2622 20.2622L17.8445 18.8444C19.7758 17.1937 21 14.7398 21 12C21 9.26016 19.7758 6.80629 17.8445 5.15557L19.2622 3.73779C21.5539 5.75368 23 8.70795 23 12ZM18 12C18 10.0883 17.106 8.38548 15.7133 7.28673L14.2842 8.71584C15.3213 9.43855 16 10.64 16 12C16 13.36 15.3213 14.5614 14.2842 15.2841L15.7133 16.7132C17.106 15.6145 18 13.9116 18 12Z"/></svg>
|
||||
|
After Width: | Height: | Size: 785 B |
BIN
public_html/images/lane-button-background-dark.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
BIN
public_html/images/lane-button-background.png
Normal file
|
After Width: | Height: | Size: 24 KiB |
BIN
public_html/images/main-header-background-dark.png
Normal file
|
After Width: | Height: | Size: 611 KiB |
BIN
public_html/images/main-header-background.png
Normal file
|
After Width: | Height: | Size: 529 KiB |
BIN
public_html/images/qr_code_logo.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
@@ -1,4 +1,4 @@
|
||||
#!/usr/bin/perl
|
||||
#!/usr/bin/env perl
|
||||
|
||||
# {{{ POD documentation
|
||||
|
||||
@@ -56,19 +56,9 @@ Perl Template Toolkit.
|
||||
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries.
|
||||
Must convert WITH clauses to sub-queries when using earlier versions of SQLite.
|
||||
|
||||
With MySQL
|
||||
* Create database hpr_hpr in the MySQL server from HPR dump file.
|
||||
- sudo mysql --host=localhost < hpr.sql
|
||||
* Create a user that will be used by the site-generator.
|
||||
- Suggested username: hpr-generator
|
||||
- CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';
|
||||
* Limit the user's privileges to EXECUTE and SELECT
|
||||
- GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';
|
||||
- GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';
|
||||
|
||||
Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
||||
* Config::Std
|
||||
* DBD::SQLite or DBD:mysql
|
||||
* DBD::SQLite
|
||||
* DBI
|
||||
* Data::Dumper
|
||||
* Date::Calc
|
||||
|
||||
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,11 +3,12 @@
|
||||
<!--% 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>
|
||||
<hr />
|
||||
<hr class="no-css">
|
||||
<section id="comments" class="lane stack">
|
||||
<!--% FOREACH item IN DBI.query('
|
||||
SELECT C.*,
|
||||
H.host, H.hostid AS host_id,
|
||||
@@ -26,18 +27,18 @@
|
||||
LIMIT 30
|
||||
')
|
||||
%-->
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<h1><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></h1>
|
||||
<p><small>Posted at <!--% item.comment_timestamp %--> relating to the show <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html">hpr<!--% item.eps_id %--></a> which was released on <!--% item.episode_date %--> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a> entitled <em><!--% item.episode_title %--></em></small>
|
||||
</p>
|
||||
<h2><!--% item.comment_author_name %--> says: <!--% item.comment_title %--></h2>
|
||||
</header>
|
||||
<p class="show-meta">Posted at <!--% item.comment_timestamp %--> relating to the show <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html">hpr<!--% item.eps_id %--></a> which was released on <!--% item.episode_date %--> by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a> entitled <em><!--% item.episode_title %--></em></small>
|
||||
</p>
|
||||
<p class="comment">
|
||||
<!--% item.comment_text FILTER html_line_break %-->
|
||||
</p>
|
||||
<footer>
|
||||
Listen in <a href="<!--% media_path(item.eps_id, 'hpr', 'ogg', baseurl, media_baseurl) %-->">ogg</a>, <a href="<!--% media_path(item.eps_id, 'hpr', 'spx', baseurl, media_baseurl) %-->">spx</a>, or <a href="<!--% media_path(item.eps_id, 'hpr', 'mp3', baseurl, media_baseurl) %-->">mp3</a> format.</p></footer>
|
||||
</article>
|
||||
<hr />
|
||||
<hr class="no-css">
|
||||
<!--% END %-->
|
||||
</section>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!--% page_title = "HPR ~ Contact the Community" %-->
|
||||
<article>
|
||||
<header>
|
||||
<h1>Contact</h1>
|
||||
|
||||
994
templates/content-contribute.tpl.html
Normal file
@@ -0,0 +1,994 @@
|
||||
<!--% 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>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#wikipedia') %-->">You will no longer be allowed to edit HPR pages on Wikipedia</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#syndication') %-->">We do not syndicate shows not produced for HPR</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#license') %-->">You are agreeing to license your show CC BY-SA 4.0</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#permission') %-->">You have permission to redistribute your show in its entirety</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#not_moderated') %-->">The audio of your show will not be moderated</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#explicit_content') %-->">Your show will be signaled as containing explicit content</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#schedule') %-->">You determine when your show will be released</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#utf8') %-->">We use UTF-8 end to end</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#accessibility') %-->">Keep accessibility in mind</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#international') %-->">Your show will be heard by an International Audience</a></li>
|
||||
</ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#pick_a_topic') %-->">Pick a Topic</a></li>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
</ul>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->"></a></li>
|
||||
</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 easy as possible 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 allows sharing it to other locations.
|
||||
</p>
|
||||
<p>
|
||||
We will continue to promote new podcasts, and other creative commons material,
|
||||
thought 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.
|
||||
Click the <a href="https://creativecommons.org/licenses/by-sa/4.0/">link</a> for more information.
|
||||
</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 processes, <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>Containing Harassment, Trolling, Spamming, etc, Content</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 you upload your show <a href="<!--% absolute_url(baseurl,'contribute.html#upload_your_show') %-->">when it should be released</a>.
|
||||
You can pick a day, or put it in the reserve pool and let the Janitors use it there are free slots.</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>
|
||||
<blockquote>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>.
|
||||
</blockquote>
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary id="accessibility">Keep <strong>accessibility</strong> in mind<a href="<!--% absolute_url(baseurl,'contribute.html#accessibility') %-->">.</a></summary>
|
||||
<p>
|
||||
When you includes 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 decide on a topic for your show.
|
||||
|
||||
OMG I just learned, broke, hacked, discovered this cool thing and noone in my house get’s it.
|
||||
Check out our 91 in depth series, or 6,938 unique tags for ideas.
|
||||
|
||||
You might already have an idea,
|
||||
but if not you can have a look at our <a href="<!--% absolute_url(baseurl) %-->eps/index.html">Archive</a> page for examples of shows people have recorded in the past.
|
||||
<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>
|
||||
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#requested_topics') %-->">Requested Topics</a>, or our
|
||||
<a href="<!--% absolute_url(baseurl) %-->series/index.html">Series</a> page to see if you can add your knowledge to the pool.
|
||||
</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>
|
||||
<p>
|
||||
If you can't think of anything to talk about then please just record a show telling us
|
||||
<a href="<!--% absolute_url(baseurl) %-->series/0029.html">how you got into tech</a>
|
||||
as a way to introducing yourself to the community.
|
||||
</p>
|
||||
|
||||
</article>
|
||||
|
||||
<h2 id="record_your_show">3. Record your show<a href="<!--% absolute_url(baseurl,'contribute.html#record_your_show') %-->">.</a></h2>
|
||||
<p>
|
||||
Please select <a href="<!--% absolute_url(baseurl,'contribute.html#recording_a_podcast') %-->">more detailed information</a>
|
||||
on how to record a show:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Recording with a <a href="<!--% absolute_url(baseurl,'contribute.html#portable_media_player') %-->">portable media player</a>.</li>
|
||||
<li>Recording with a <a href="<!--% absolute_url(baseurl,'contribute.html#smart_phone') %-->">smart phone</a>.</li>
|
||||
<li><a href="<!--% absolute_url(baseurl,'contribute.html#editing') %-->">Recording/Editing</a> using your Computer.</li>
|
||||
<li>Recording Interviews with the <a href="<!--% absolute_url(baseurl,'contribute.html#phone_interviews') %-->">Phone</a>.</li>
|
||||
<li>Recording <a href="<!--% absolute_url(baseurl,'contribute.html#round_table') %-->">round table</a> discussions.</li>
|
||||
<li>Avoid <a href="<!--% absolute_url(baseurl,'contribute.html#background_music') %-->">Bedding/background</a> music.</li>
|
||||
<li>We mix down to <a href="<!--% absolute_url(baseurl,'contribute.html#encoding') %-->">Mono</a>.</li>
|
||||
<li>No need to add <a href="<!--% absolute_url(baseurl,'contribute.html#no_metadata') %-->">Metadata</a> to the file.</li>
|
||||
</ul>
|
||||
<p>Don't forget to <strong>introduce yourself</strong> in your show.</p>
|
||||
|
||||
<h2 id="upload_your_show">4. Upload your show<a href="<!--% absolute_url(baseurl,'contribute.html#upload_your_show') %-->">.</a></h2>
|
||||
<p>
|
||||
Once you have your audio ready you can post your show by going to the <a href="<!--% hub_baseurl %-->calendar.php">Calendar</a>
|
||||
page or press the <a href="<!--% hub_baseurl %-->calendar.php"><strong>⇧Upload⇧</strong></a> button.
|
||||
</p>
|
||||
<p>
|
||||
After you have selected a date you will be redirected to the <a href="<!--% hub_baseurl %-->request.php">request page</a>,
|
||||
where you will be asked to select your show and email address.
|
||||
We will send a link to where you can upload your show to this address and so it must be a valid working address
|
||||
that you can access quickly.
|
||||
We intend to use <a href="https://www.gnupg.org/">GPG</a> to speed up the validation of hosts,
|
||||
so you may wish to use an email address that has an associated public key available on public key servers.
|
||||
</p>
|
||||
<p>
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->">More Information</a>.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<li>You determine where in the <a href="<!--% absolute_url(baseurl,'contribute.html#schedule') %-->">schedule</a> your show will be released.</li>
|
||||
<li>We use <a href="<!--% absolute_url(baseurl,'contribute.html#utf8') %-->">UTF-8</a> end to end.</li>
|
||||
<li>Your show will be heard by an <a href="<!--% absolute_url(baseurl,'contribute.html#international') %-->">International</a> Audience.</li>
|
||||
<li>We also need <a href="<!--% absolute_url(baseurl,'contribute.html#reserve_queue') %-->">reserve</a> shows.</li>
|
||||
<li>You will no longer be allowed to edit HPR pages on
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#faq_wikipedia') %-->">Wikipedia</a>.</li>
|
||||
</ul>
|
||||
|
||||
<h1 id="scheduling">Deciding when to post your show</h1>
|
||||
|
||||
<p>Y</p>
|
||||
|
||||
<p>We have a <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/raw/branch/main/workflow/SchedulingGuidlinesFlowChart.odg">flow diagram</a> if that helps.</p>
|
||||
|
||||
<p>Please see <a href="https://repo.anhonesthost.net/HPR/hpr_documentation/src/branch/main/queue.md">for more information on the queue</a>.</p>
|
||||
|
||||
<h2 id="regular_queue">Regular Queue</h2>
|
||||
<ol>
|
||||
<li>You must have your audio recording ready to upload <strong>before</strong> you pick a slot.</li>
|
||||
<li>All hosts must leave at least 9 slots (approximately two weeks) between their shows.</li>
|
||||
<li>New hosts, Interviews, and other time critical shows should use the first free slot.
|
||||
Otherwise, when the queue is filling up then leave some slots free for new contributors by selecting a slot in the first empty week.</li>
|
||||
</ol>
|
||||
|
||||
|
||||
<h2 id="reserve_pool">Reserve Pool</h2>
|
||||
|
||||
|
||||
|
||||
<li>If you have a non urgent show that is timeless, then add it to the <a href="<!--% absolute_url(baseurl,'contribute.html#reserve_pool') %-->">reserve pool</a>.</li>
|
||||
</article>
|
||||
|
||||
future feed
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<p>
|
||||
Over the years
|
||||
|
||||
The HPR Schedule is entirely community driven and we recommend that <strong>you</strong> pick the date or show number
|
||||
as then you know when your show will be released.
|
||||
However 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>
|
||||
The reserve pool is intended only to be used in the cases where there is still a gap in the schedule one week prior to release.
|
||||
This was known as the emergency queue, but now can also be used when the hosts don't care when the shows are scheduled.
|
||||
They will be used on a first come first go basis, when there is no conflict with the scheduling Rules.
|
||||
These shows contain a message alerting listeners to the fact that we had free slots that were not filled.
|
||||
</p>
|
||||
<p>
|
||||
<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>.
|
||||
</p>
|
||||
|
||||
|
||||
|
||||
<h2 id="reserving">All reservations need to be approved<a href="<!--% absolute_url(baseurl,'contribute.html#reserving') %-->">.</a></h2>
|
||||
|
||||
<h3 id="regular_queue">Regular Queue<a href="<!--% absolute_url(baseurl,'contribute.html#regular_queue') %-->">.</a></h3>
|
||||
<p>
|
||||
Any host can select any free slot a up to year in advance. However the audio must be ready at time of picking a slot
|
||||
so that it can be upload immediately afterwards.
|
||||
</p>
|
||||
<p>
|
||||
In exceptional circumstances it may be necessary to reserve a slot while not having the audio available,
|
||||
but 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>
|
||||
<li>The days following new year.</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h3 id=""><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></h3>
|
||||
<h3 id=""><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></h3>
|
||||
<h3 id=""><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></h3>
|
||||
<h3 id=""><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></h3>
|
||||
<h3 id=""><a href="<!--% absolute_url(baseurl,'contribute.html#') %-->">.</a></h3>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="requesting_slot">Picking a slot for your show</h1>
|
||||
</header>
|
||||
<p>
|
||||
Any host can select any free slot a up to year in advance, by recording their show and uploading it to the desired slot.
|
||||
In exceptional circumstances it may be necessary to reserve a slot while not having the audio available,
|
||||
but 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.
|
||||
[<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2018-February/003482.html">?</a>]
|
||||
</p>
|
||||
<p>
|
||||
You can post your show by going to the <a href="<!--% hub_baseurl %-->calendar.php">Calendar</a> page.
|
||||
Once you have selected a date you will be redirected to the <a href="<!--% hub_baseurl %-->request.php">request page</a>,
|
||||
where you will be asked to select your show and email address.
|
||||
We will send a link to where you can upload your show to this address and therefore it must be a valid working address
|
||||
that you can access quickly. We intend to use <a href="https://www.gnupg.org/">GPG</a> to speed up the validation of hosts,
|
||||
so you may wish to use an email address that has an associated public key available on public key servers.
|
||||
</p>
|
||||
<p>
|
||||
The audio of your show will not be moderated, however <em>the information provided in the upload form
|
||||
<strong>may be moderated</strong></em>.
|
||||
All publicly facing material is managed by the HPR Community as a whole, and not just the host providing the show.
|
||||
The show <a href="<!--% absolute_url(baseurl) %-->eps/hpr2210/index.html">hpr2210 :: On Freedom of Speech and Censorship</a>
|
||||
describes the agreed approach to this topic.
|
||||
</p>
|
||||
<p><strong>Note:</strong> 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.
|
||||
Where we publish it we pad it with dot nospam at-sign nospam dot. <br>
|
||||
i.e. <em>hpr@example.com</em> becomes <em>hpr.nospam@nospam.example.com</em>.
|
||||
If you do not want to have your email exposed, please contact the admin@hpr team to arrange a alias.
|
||||
</p>
|
||||
<p>
|
||||
Once you press <em>next</em>, an email will be sent to your email address pointing to where you can upload the show.
|
||||
You need to <em>open</em> the link within <strong>15 minutes</strong> or the temporary lock will be released.
|
||||
Once you open the link, you can fill in the information at your leisure.
|
||||
The upload form works on the assumption you will be posting one show at a time, from the same IP address.
|
||||
Once you have pressed submit you will not be able to edit any of the information.
|
||||
</p>
|
||||
|
||||
<ul>
|
||||
|
||||
|
||||
<h2 id="questions">Questions ?<a href="<!--% absolute_url(baseurl,'contribute.html#questions') %-->">.</a></h2>
|
||||
<p>
|
||||
Got any questions not covered here, then just email <strong>"admin" at "HPR"</strong>,
|
||||
and we'll get in touch with you with all you need to know about getting your show published.<br>
|
||||
You can chat with other podcasters using IRC in the <strong>#oggcastplanet</strong> channel on the
|
||||
<a href="https://web.libera.chat/gamja/?channels=oggcastplanet">libera.chat</a> network.
|
||||
Follow us on <a href="https://infosec.exchange/@hpr">Mastodon</a> (use the tag <strong>#hpr</strong>)
|
||||
and on <a href="https://twitter.com/hpr">Twitter</a> (use the tag <strong>#hpr</strong>).
|
||||
We have a <a href="https://www.facebook.com/HenryPartickReilly">Facebook</a> and
|
||||
<a href="https://www.linkedin.com/groups?mostPopular=&gid=3737302">LinkedIn</a> group,
|
||||
so please join and spread the word.</p>
|
||||
|
||||
<h2 id="response_episode">Response Episode</h2>
|
||||
|
||||
https://lists.hackerpublicradio.com/pipermail/hpr/2021-September/004250.html
|
||||
|
||||
<h2 id="motto">Our Mottos</h2>
|
||||
<blockquote>Any audio is better than no audio.</blockquote>
|
||||
<blockquote>Any topic of intrest to <!--% make_sfw(is_sfw, "hobbyist", "hacker") %-->s.</blockquote>
|
||||
<blockquote>It ain't a show unless it's on the server.</blockquote>
|
||||
<blockquote>If you tell us you are doing a show, then you owe us a show.</blockquote>
|
||||
|
||||
<p>You don't need anyones permission to upload a show, but if you have any questions then drop into the
|
||||
<a href="https://web.libera.chat/gamja/?channels=oggcastplanet">#oggcastplanet</a> channel on libera.chat
|
||||
and chat with a live person 24/7.
|
||||
</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. Our golden rule is <strong>Any audio is better than no audio.</strong>
|
||||
so keep that in mind. Don't forget to <strong>introduce yourself</strong> in your show.
|
||||
</p>
|
||||
<h2 id="portable_media_player">Recording with a portable media player
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#portable_media_player') %-->">.</a></h2>
|
||||
<p>
|
||||
Many of today's <a href="https://wiki.xiph.org/PortablePlayers">portable media players</a> support recording audio out of the box.
|
||||
Search for "Voice Recorder", to see if there is an application for your smartphone.
|
||||
Whichever option you have close to hand, try and set the recording to the best quality format
|
||||
(<a href="https://en.wikipedia.org/wiki/WAV">WAV</a> or <a href="https://en.wikipedia.org/wiki/FLAC">FLAC</a>),
|
||||
and set everything else to the highest setting.
|
||||
It's always the goal to get the best quality audio but here at Hacker Public Radio we value content over quality
|
||||
and so long as it's audible we'll take it.
|
||||
</p>
|
||||
<p>
|
||||
Then just record your show, <a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->">request a slot</a>,
|
||||
and we'll do the rest.
|
||||
</p>
|
||||
|
||||
<h2 id="smart_phone">Recording with a portable media player<a href="<!--% absolute_url(baseurl,'contribute.html#smart_phone') %-->">.</a></h2>
|
||||
<p>
|
||||
Some of our hosts recommend <a href="https://gitlab.com/axet/android-audio-recorder">Android Audio Recorder</a> on my android phone.
|
||||
It's available on <a href="https://f-droid.org/en/packages/com.github.axet.audiorecorder/">F-Droid</a>
|
||||
and <a href="https://play.google.com/store/apps/details?id=com.github.axet.audiorecorder">Google Play</a>.
|
||||
These are the recommended settings:
|
||||
</p>
|
||||
<ul>
|
||||
<li>Recording Source - Unprocessed</li>
|
||||
<li>Sample Rate - 44.1 kHz</li>
|
||||
<li>Encoding - .flac</li>
|
||||
<li>Audio Channels - Mono</li>
|
||||
</ul>
|
||||
|
||||
|
||||
<h2 id="editing">Recording/Editing using your Computer<a href="<!--% absolute_url(baseurl,'contribute.html#editing') %-->">.</a></h2>
|
||||
<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>
|
||||
<iframe id="youtube" src="//www.youtube.com/embed/ss8CyTwBOPY"></iframe>
|
||||
<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>
|
||||
|
||||
<h2 id="phone_interviews">Recording Interviews with the Phone<a href="<!--% absolute_url(baseurl,'contribute.html#phone_interviews') %-->">.</a></h2>
|
||||
<p>
|
||||
If you want to record a one-to-one interview with someone then you can use
|
||||
<a href="https://www.skype.com/en/">Skype</a> in conjunction with <a href="https://atdot.ch/scr/">Skype Call Recorder</a>.
|
||||
If everyone is using skype then it won't cost you anything otherwise you will need to pay for SkypeOut service.
|
||||
Although the quality is usually terrible, you could also put your phone on hands free and
|
||||
record with a <a href="https://wiki.xiph.org/PortablePlayers">portable media player</a>.
|
||||
</p>
|
||||
|
||||
<h2 id="round_table">Recording round table discussions<a href="<!--% absolute_url(baseurl,'contribute.html#round_table') %-->">.</a></h2>
|
||||
<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 multiple tracks, one for each participant which you can edit and then submit.
|
||||
<br>
|
||||
Kwisher made a <a href="<!--% absolute_url(baseurl) %-->mumble-howto">Mumble tutorial</a>
|
||||
which you might find useful and <a href="<!--% absolute_url(baseurl) %-->correspondents/0228.html">Delwin</a>
|
||||
has produced a number of short shows on how to configure the audio quality.
|
||||
</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>
|
||||
|
||||
<h2 id="background_music">Avoid Bedding/background music<a href="<!--% absolute_url(baseurl,'contribute.html#background_music') %-->">.</a></h2>
|
||||
<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.<br/>
|
||||
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>
|
||||
|
||||
<h2 id="encoding">We mix down to Mono<a href="<!--% absolute_url(baseurl,'contribute.html#encoding') %-->">.</a></h2>
|
||||
<p>
|
||||
We will by default mix down your show to one channel mono and we will
|
||||
<a href="https://gitorious.org/hpr-scheduling-system/hpr-scheduling-system/source/2d526e000d31e79afa3d863ea8659503e2074267:transcoding/hprtranscode">transcode</a> to MP3, ogg and spx formats. If you want to control this in more detail then please email admin at Hacker Public Radio for more information.
|
||||
</p>
|
||||
|
||||
<h2 id="no_metadata">No need to add Metadata to the file<a href="<!--% absolute_url(baseurl,'contribute.html#no_metadata') %-->">.</a></h2>
|
||||
<p>
|
||||
There is no need to add any information to the file as that will be inserted based on the information you fill in when you upload the show.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="promote_hpr">Please promote HPR<a href="<!--% absolute_url(baseurl,'contribute.html#promote_hpr') %-->') %-->">.</a></h1>
|
||||
</header>
|
||||
<p>Feel free to use the promotional material to spread the word in your podcasts, or have them played on to other shows.</p>
|
||||
<h2>General HPR promotion</h2>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/HPRpromoKlaatu.ogg">Klaatu explains HPR Daily podcast by the
|
||||
Community for the Community</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/HPRpromoNewsCast.ogg">HPR Promo NewsCast theme by Klaatu</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/HPRpromoSkirlet.ogg">HPR Promo by Skirlet</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/hpr-contributor-promo-sax.ogg">HPR Promo sax theme by slick0</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/hpr-contributor-promo-basenettheme.ogg">HPR Promo basenet roll theme by slick0</a></li>
|
||||
</ul>
|
||||
|
||||
<h2>New Year Promo</h2>
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->promos/hpr-nye-promo.ogg">HPR New Years Promo</a></li>
|
||||
</ul>
|
||||
</article>
|
||||
|
||||
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="adding_an_episode">Adding an Episode</h1>
|
||||
</header>
|
||||
<p>
|
||||
The unique link sent by email will allow you to manage both the episode and information about yourself that is displayed on HPR.
|
||||
The following information will be requested:
|
||||
</p>
|
||||
<h2 id="personal_information">Personal Information</h2>
|
||||
<p>
|
||||
Remember <em>All information will be displayed publicly</em>. The only exception is that your email address will be sent
|
||||
in the feed with some anti-spam additions.<br>
|
||||
For example <em>hpr@example.com</em> will become <em>hpr.nospam@nospam.example.com</em>
|
||||
</p>
|
||||
<ul>
|
||||
<li id="email"><strong>email:</strong> <em>already populated</em><br>
|
||||
See notes <a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->">above</a><br>
|
||||
</li>
|
||||
<li id="image"><strong>image:</strong> <em>Optional</em><br>
|
||||
If you have associated a <a href="https://en.gravatar.com/">Gravatar</a> image with an email address,
|
||||
then it will be displayed here.
|
||||
Otherwise you can upload a 80x80 image .</li>
|
||||
<li id="Name_Handle"><strong>Name/Handle:</strong> <em>Mandatory</em><br>
|
||||
It should be the name you wish to be known as on HPR. It can be your real name, an Internet handle or both.</li>
|
||||
<li id="Default_license"><strong>Your Default license:</strong> <em>Mandatory</em><br>
|
||||
This field tells us what your work is normally licensed under. 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. Click the <a href="https://creativecommons.org/licenses/by-sa/4.0/">link</a>
|
||||
for more information.</li>
|
||||
<li id="Profile"><strong>Profile:</strong> <em>Optional</em><br>
|
||||
Enter some text about yourself with links to your blog or other online presence.</li>
|
||||
</ul>
|
||||
<p>
|
||||
Your profile information is used on the website, in the RSS feeds, and on social media sites. You can change your profile information at any time, by submitting another show.
|
||||
</p>
|
||||
<h2 id="episode_information">Episode Information</h2>
|
||||
<ul>
|
||||
<li id="Title"><strong>Title:</strong> <em>Mandatory</em><br>
|
||||
This will be a short 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.</li>
|
||||
<li id="Short_Summary"><strong>Summary:</strong> <em>Mandatory</em><br>
|
||||
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 twitter, <a href="https://infosec.exchange/@hpr">Mastodon</a> etc.</li>
|
||||
<li id="Theme"><strong>Theme:</strong> <em>Automatic</em><br>
|
||||
The Intro, and the Outro will be added automatically. Please do not add it.
|
||||
</li>
|
||||
<li id="Explicit"><strong>Explicit:</strong> <em>Mandatory</em><br>
|
||||
See <a href="https://web.archive.org/web/20150326185817/http://www.apple.com/uk/itunes/podcasts/specs.html">iTunes</a>
|
||||
for more information.</li>
|
||||
<li id="License"><strong>License:</strong> <em>Mandatory</em><br>
|
||||
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.
|
||||
Click the <a href="https://creativecommons.org/licenses/by-sa/4.0/">link</a> for more information.</li>
|
||||
<li id="show_notes"><strong>show notes:</strong> <em>Mandatory</em><br>
|
||||
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>They ensure your show gets posted on time.</strong><br>
|
||||
If you do not supply show notes then your show notes will need to be edited manually by an HPR volunteer and
|
||||
this will most likely result in delays. During that time other shows will be processed and may get posted
|
||||
before your show.
|
||||
It is always better if you send us show notes yourself as you know best what information you are trying to convey.</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,
|
||||
so the only way for your show to be of help to them is if you distill the essence of the show into the show notes.
|
||||
If you are using a script to prepare your show then include that.</li>
|
||||
<li><strong>Adding the shownotes</strong>
|
||||
<ul>
|
||||
<li>Add text and use the WYSIWYG editor buttons to add additional formatting</li>
|
||||
<li>Optionally - You can paste in <strong>Rendered</strong> HTML</li>
|
||||
<li><strong>Do not paste un-rendored markup (HTML, Markdown,
|
||||
RestructuredText)</strong> unless your intention is to have un-rendored
|
||||
markup as shownotes.</li>
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li id="series"><strong>Series:</strong> <em>Optional</em><br>
|
||||
Select the <a href="<!--% absolute_url(baseurl) %-->series/index.html">series</a> if any that your show is a part of.</li>
|
||||
<li id="tags"><strong>Tags:</strong> <em>Optional</em><br>
|
||||
Add a list of comma separated tags. Pick the most important words from the shownotes.
|
||||
These are used to <a href="<!--% absolute_url(baseurl) %-->tags.html">find shows via the tags page</a>.</li>
|
||||
<li id="upload_method"><strong>Upload Method:</strong> <em>Optional</em><br>
|
||||
You have the choice of the following options:<br>
|
||||
<ul>
|
||||
<li id="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 to see this in Firefox you will need to install a
|
||||
<a href="https://addons.mozilla.org/en-US/firefox/addon/uploadprogress/">plugin</a>, or just wait.
|
||||
</li>
|
||||
<li id="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>
|
||||
<li id="upload_later"><strong>Other</strong><br>
|
||||
The postal information will be sent to you after submission.
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
If you want to submit an additional file with your show, then put them in a zip, or tgz file.
|
||||
This should expand to a directory with a index.html file that refers to the other files.
|
||||
This will be hosted in the eps directory under a new directory with the episode number.
|
||||
<pre>
|
||||
<!--% absolute_url(baseurl) %-->eps/hpr9999/full_shownotes.html
|
||||
<!--% absolute_url(baseurl) %-->eps/hpr9999/other-file.pdf
|
||||
<!--% absolute_url(baseurl) %-->eps/hpr9999/yet-other-file.c
|
||||
...
|
||||
</pre>
|
||||
Ensure that all links are full urls, as relative urls will not work in RSS feeds.
|
||||
Adding additional files will delay processing as they need to be verified manually.</li>
|
||||
</li>
|
||||
</ul>
|
||||
<p>
|
||||
Press submit 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.
|
||||
Your show information is used to process the media files, on the website, in the RSS feeds, and on social media sites.
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="workflow">Workflow</h1>
|
||||
</header>
|
||||
<ol>
|
||||
<li>REQUEST_UNVERIFIED - </li>
|
||||
<li>REQUEST_EMAIL_SENT - email sent</li>
|
||||
<li>EMAIL_LINK_CLICKED - pending upload</li>
|
||||
<li>SHOW_SUBMITTED - upload complete</li>
|
||||
<li>METADATA_PROCESSED - shownotes.{json,txt} processed to html</li>
|
||||
<li>SHOW_POSTED - show in the database</li>
|
||||
<li>MEDIA_TRANSCODED - audio all generated</li>
|
||||
<li>UPLOADED_TO_IA - on the IA and visible</li>
|
||||
<li>UPLOADED_TO_RSYNC_NET - archived on rsync.net</li>
|
||||
</ol>
|
||||
</article>
|
||||
|
||||
<hr class="no-css">
|
||||
<article>
|
||||
<header>
|
||||
<p class="index-link"><a href="/contribute.html#TOP">↑ Go to top</a></p>
|
||||
<h1 id="faq">Frequently Asked Questions</h1>
|
||||
</header>
|
||||
|
||||
<h2 data-number="0.2" id="what-is-a-show"><span class="header-section-number">0.2</span> What is a show?</h2>
|
||||
<ul>
|
||||
<li><p>A show is your <em>audio</em> presentation (which we do not moderate),
|
||||
with an <em>intro</em>, <em>outro</em>, a <em>title</em> and a <em>summary</em>.</p></li>
|
||||
<li><p>The <em>audio</em> is the recording you have made and sent in to HPR.</p></li>
|
||||
<li><p>The <em>intro</em> (introduction) is a piece of audio introducing the show. The components are:</p>
|
||||
<ul>
|
||||
<li>a synopsis taken from the details submitted with the show (added automatically)</li>
|
||||
<li>acknowledgement of our hosting provider (added automatically)</li>
|
||||
<li>HPR introduction music (added automatically)</li>
|
||||
</ul></li>
|
||||
<li><p>The <em>outro</em> is added automatically. It contains the HPR outro music.</p></li>
|
||||
<li><p>Each show needs a <em>title</em> to describe what it is about.</p></li>
|
||||
<li><p>Similarly, a <em>summary</em> helps to add more information describing the show so a potential listener
|
||||
can decide whether to listen to it or not.</p></li>
|
||||
<li><p>Each show is expected to have certain mandatory attributes listed
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#what-are-the-mandatory-elements-of-an-hpr-show') %-->">below</a>.</p></li>
|
||||
<li><p>HPR shows are usually expected to be informative or educational, and as such some sort of accompanying written material
|
||||
is highly desirable. This might consist of brief notes, links to relevant web sites, or possibly longer notes
|
||||
and examples. Photographs, diagrams and example files are also welcome if the host feels
|
||||
it helps to get the message across.</p></li>
|
||||
<li><p>Shows are released under a <a href="">Creative Commons Attribution-ShareAlike 3.0 Unported</a> license.
|
||||
See <a href="<!--% absolute_url(baseurl,'contribute.html#stuff_you_need_to_know') %-->"><em>Stuff you need to know</em></a>
|
||||
for much more detail about this and related issues.</p></li>
|
||||
<li><p>As a contributor you can choose when your show will be released.
|
||||
We only release one show a day, during week days,
|
||||
but if a slot is free you can claim it. Go to the <a href="<!--% hub_baseurl %-->calendar.php"><em>calendar</em></a>
|
||||
page to do this. You need to have your show ready to upload before you reserve a slot though.</p></li>
|
||||
</ul>
|
||||
|
||||
<h2 data-number="0.4" id="what-defines-a-show-as-being-produced-for-hacker-public-radio"><span class="header-section-number">0.4</span>
|
||||
What defines a show as being "<em>Produced for Hacker Public Radio</em>"?</h2>
|
||||
<ul>
|
||||
<li>If you create material and post it first on HPR then it meets the requirements of "<em>being produced for HPR</em>".
|
||||
That means once you upload it to the HPR server you can publish it anywhere else you like.</li>
|
||||
</ul>
|
||||
<h2 data-number="0.5" id="what-are-the-mandatory-elements-of-an-hpr-show"><span class="header-section-number">0.5</span>
|
||||
What are the mandatory elements of an HPR show?</h2>
|
||||
<ul>
|
||||
<li><p>See <a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->"><em>Picking a slot for your show</em></a>
|
||||
for the full details of how to submit a show and what information is required.</p></li>
|
||||
<li><p>A quick summary of the main components is:</p>
|
||||
<ul>
|
||||
<li>A show title</li>
|
||||
<li>A summary of what the show is about</li>
|
||||
<li>The <em>explicit</em>/<em>clean</em> flag</li>
|
||||
<li>License</li>
|
||||
<li>Show notes</li>
|
||||
<li>Tags</li>
|
||||
<li>Audio</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<h2 data-number="0.6" id="what-are-tags"><span class="header-section-number">0.6</span> What are tags?</h2>
|
||||
<ul>
|
||||
<li><p>We are trying to maintain a collection of tags to allow people to find shows on the same (or similar) topic.</p></li>
|
||||
<li><p>Tags are simple words or short phrases describing aspects of a show such as what topics are covered in it.
|
||||
To get hints about what tags have already been used you can view all the current tags in alphabetical order on this page:
|
||||
<a href="<!--% absolute_url(baseurl) %-->tags.html">Tag summary</a></p></li>
|
||||
<li><p>Some examples are: <b>android</b>, <b>creative commons</b> and <b>gaming</b>.</p></li>
|
||||
<li><p>Are there any tags that are best avoided?</p></li>
|
||||
</ul>
|
||||
<h2 data-number="0.7" id="is-it-ok-if-i-dont-include-notes-with-my-show') %-->"><span class="header-section-number">0.7</span>
|
||||
Is it OK if I don't include notes with my show?</h2>
|
||||
<ul>
|
||||
<li><strong>Please don't do that</strong>. It is important to provide good show notes for reasons described on the
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#requesting_slot') %-->"><em>Picking a slot for your show</em></a> page:
|
||||
<ul>
|
||||
<li>They provide the listeners with more information on the topic your show is covering</li>
|
||||
<li>They ensure your show gets posted on time (the volunteers don't have to make notes for you)</li>
|
||||
<li>They encourage people to download your show</li>
|
||||
<li>They allow your show to be indexed by search engines</li>
|
||||
<li>They make your show accessible to the deaf and hard of hearing</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
<h2 data-number="0.8" id="how-do-i-include-photographs-or-other-files-with-my-show"><span class="header-section-number">0.8</span>
|
||||
How do I include photographs or other files with my show?</h2>
|
||||
<ul>
|
||||
<li>TBA</li>
|
||||
</ul>
|
||||
<h2 data-number="0.9" id="what-is-and-is-not-edited-in-a-show-after-submission"><span class="header-section-number">0.9</span>
|
||||
What is and is not edited in a show after submission?</h2>
|
||||
<ul>
|
||||
<li><p>We don't listen to the audio before posting a show to the website, so we don't change the content.</p></li>
|
||||
<li><p>Unless you have done so and told us you have, we add an introduction to the audio announcing what it is.
|
||||
Similarly we add an <em>outro</em>. This is not <u>editing</u> since we don't change the content.</p></li>
|
||||
<li><p>We may make changes to the show title, summary or tags. Usually these are minor changes such as spelling corrections.
|
||||
The intention is not any sort of censorship, merely to make these items more understandable or easier to index.</p></li>
|
||||
<li><p>Depending on the form the show notes take we may modify these.</p>
|
||||
<ul>
|
||||
<li>If what is submitted is plain text we convert it to Markdown in order to generate HTML.</li>
|
||||
<li>If the notes are one of the permitted markup formats (mostly Markdown flavours) we may adjust this to ensure
|
||||
that valid HTML is generated.</li>
|
||||
<li>If the notes are HTML we run them through an HTML checker and correct any mistakes it highlights.</li>
|
||||
<li>We may correct spelling, grammar and punctuation if this clarifies anything which might otherwise be unclear.</li>
|
||||
<li>If despite the request for show notes of some kind, none are provided, we may add notes which help to clarify
|
||||
the content of the show. This may be done after the show is released (when we have had a chance to listen to it).</li>
|
||||
</ul></li>
|
||||
<li><p>We are working on the production of reports about any changes made, which will be sent to the host after we have
|
||||
processed the show.</p></li>
|
||||
<li><p>We may make changes to a show's metadata if the host requests it (see the item on
|
||||
<a href="<!--% absolute_url(baseurl,'contribute.html#if-i-notice-an-error-in-my-shows-details-how-can-it-be-fixed') %-->">
|
||||
fixing errors after upload</a>).</p></li>
|
||||
<li><p>If a show contains links to resources which disappear after a period of time, we may at some future time change
|
||||
the notes to refer to any <em>Wayback Machine</em> copy that can be found.</p></li>
|
||||
</ul>
|
||||
<h2 data-number="0.10" id="what-are-some-common-errors-in-show-notes"><span class="header-section-number">0.10</span>
|
||||
What are some common errors in show notes?</h2>
|
||||
<p>It depends on the note format to some extent:</p>
|
||||
<h3 data-number="0.10.1" id="html-notes"><span class="header-section-number">0.10.1</span> HTML notes</h3>
|
||||
<ul>
|
||||
<li><p>It's very easy to hand-write bad HTML. That's why we use an HTML checker on it, and fix the errors it reports.</p></li>
|
||||
<li><p>A common fault is to write <code><code><pre></code> to define a pre-formatted block of text using a fixed-width font.
|
||||
However it's illegal because the <code><pre></code> tag can't be enclosed in other tags like
|
||||
<code><code></code>. Use <code><pre><code></code> instead.</p></li>
|
||||
</ul>
|
||||
<h3 data-number="0.10.2" id="markdown-notes"><span class="header-section-number">0.10.2</span> Markdown notes</h3>
|
||||
<ul>
|
||||
<li>This is quite a forgiving format. Some people embed HTML in the Markdown, and the HTML used suffers from some
|
||||
of the issues discussed in this document. These are <em>much</em> harder to spot. The HTML checker can't
|
||||
really help unless it's run on the output from Pandoc.</li>
|
||||
</ul>
|
||||
<h3 data-number="0.10.3" id="general-errors"><span class="header-section-number">0.10.3</span> General errors</h3>
|
||||
<ul>
|
||||
<li><p>Spelling is often an issue in notes. As the notes are processed they are edited in the Vim editor with the
|
||||
spell check option turned on. In most cases spelling problems flagged by Vim are corrected.</p></li>
|
||||
<li><p>Grammar and punctuation can also be issues. We do not have very effective grammar checking tools in the note
|
||||
preparation workflow. Modifications may be made to split up extra-long (often <em>comma-spliced</em>) sentences,
|
||||
rationalise the use of capital letters and similar.</p></li>
|
||||
</ul>
|
||||
<h2 data-number="0.11" id="if-i-notice-an-error-in-my-shows-details-how-can-it-be-fixed"><span class="header-section-number">0.11</span>
|
||||
If I notice an error in my show's details how can it be fixed?</h2>
|
||||
<ul>
|
||||
<li><p>The HPR administrators can make changes to show titles, summaries, notes and so forth. Ideally send an
|
||||
email to <code>admin</code> at <code><!--% make_sfw(is_sfw, "hobby", "hacker") %-->publicradio.org</code> explaining what the problem is and we'll fix it for you.
|
||||
We'll also ensure that the changes are propagated to the relevant page on archive.org.</p></li>
|
||||
<li><p>Don't be tempted to send in your corrections as a comment. Comments are not propagated to archive.org, so people
|
||||
referring to that copy will not see the changes.</p></li>
|
||||
</ul>
|
||||
<h2 data-number="0.12" id="does-hobbypublicradio.com-have-anything-to-do-with-hpr"><span class="header-section-number">0.12</span>
|
||||
Does <code>hobbypublicradio.com</code> have anything to do with HPR?</h2>
|
||||
<ul>
|
||||
<li><p>Some environments prevent access to sites which use the word <code>'hacker'</code> or <code>'hackers'</code>
|
||||
in their names (or content in extreme cases). The site names <code>hobbypublicradio.{com,net,org}</code> have been created,
|
||||
which link to the main HPR site, in order to get around this restriction.</p></li>
|
||||
<li><p>See the mailing list thread here:
|
||||
<a href="https://lists.hackerpublicradio.com/pipermail/hpr/2015-February/002493.html" class="uri">
|
||||
https://lists.hackerpublicradio.com/pipermail/hpr/2015-February/002493.html</a></p></li>
|
||||
</ul>
|
||||
<h2 data-number="0.13" id="how-can-i-talk-to-other-hpr-hosts-and-listeners"><span class="header-section-number">0.13</span>
|
||||
How can I talk to other HPR hosts and listeners?</h2>
|
||||
<ul>
|
||||
<li>You have a number of choices:
|
||||
<ul>
|
||||
<li>The mailing list <a href="mailto:hpr@hackerpublicradio.org" class="email">hpr@hackerpublicradio.org</a> is where various
|
||||
policy matters are discussed and announcements made. You need to be a member of the list to post to it.
|
||||
Visit the <a href="<!--% absolute_url(baseurl,'/maillist') %-->" ><em>listinfo page</em></a> to sign up.</li>
|
||||
<li>You can join the <strong>#oggcastplanet</strong> channel on IRC.
|
||||
Visit the <a href="http://webchat.freenode.net/?channels=oggcastplanet">freenode.net</a> network to sign up.</li>
|
||||
<li>A number of HPR messages may be found on Twitter and
|
||||
<a href="https://infosec.exchange/@hpr">Mastodon</a>.</li>
|
||||
<li>There is a <a href="https://t.me/+6fEhQrf5IEc4ZGU8">chat group on Telegram</a></li>
|
||||
<li>An HPR tradition exists where we record a 26-hour show at the turn of the year celebrating the
|
||||
arrival of the New Year around the world. We use Mumble to record the show and anyone can connect
|
||||
to the Mumble server and speak to other HPR listeners and hosts. The recording is used to make multiple
|
||||
shows which are released when they are ready.</li>
|
||||
</ul></li>
|
||||
</ul>
|
||||
|
||||
<h2 data-number="0.15" id="faq_anonymous_post"><span class="header-section-number">0.15</span> I'd like to post a show but I would
|
||||
rather not have my email address published on the site.?</h2>
|
||||
<p>
|
||||
The mail is just a way for us to get back to you if there was an issue posting the show.
|
||||
</p>
|
||||
<p>
|
||||
If you trust the janitors to know your real email we can just use an alias for you on the web site and have it
|
||||
forward the email to you automatically. That runs the risk that were the redirect list compromised then your
|
||||
real email would get exposed.
|
||||
</p>
|
||||
<p>
|
||||
If you prefer, we can use the janitor email for your shows with your own host id. Then if any emails come in we can manually
|
||||
forward them at some point. The risk is that you are trusting the janitors to protect your email but again it could be compromised.
|
||||
</p>
|
||||
<p>
|
||||
In both cases 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.
|
||||
</p>
|
||||
</article>
|
||||
</div>
|
||||
@@ -3,68 +3,49 @@
|
||||
<!--% 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') %-->
|
||||
|
||||
<article>
|
||||
<!--% 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">
|
||||
<h2><!--% this_host.host %--></h2>
|
||||
<p><!--% get_avatar(this_host.hostid, this_host.host) %--><br>
|
||||
<label>Host ID</label>: <!--% this_host.hostid %--><br><br>
|
||||
<label>email:</label> <u><!--% this_host.email %--></u><br>
|
||||
<label>profile:</label> <!--% this_host.profile %--><br><br>
|
||||
<label>episodes:</label> <strong><!--% hpr_show_count + twat_show_count %--></strong>
|
||||
</p>
|
||||
<label>Host ID</label>: <!--% this_host.hostid %--></p>
|
||||
</div>
|
||||
<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 + 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 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>
|
||||
<!--% END %-->
|
||||
<!--% FOREACH twat_show IN twat_shows; %-->
|
||||
|
||||
<!--% twat_show_summary(twat_show, 'hide_host') %-->
|
||||
<p class="listen-in"><!--% display_listen_in(twat_show.id,"twat") %--></p>
|
||||
<!--% END %-->
|
||||
</article>
|
||||
<p><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
||||
<!--% END %-->
|
||||
<!--% FOREACH twt_show IN twt_shows; %-->
|
||||
<article>
|
||||
|
||||
<!--% 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>
|
||||
|
||||
@@ -1,33 +1,35 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS 'shared-avatar.tpl.html' %-->
|
||||
<article>
|
||||
<!--% 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 class="hosts">
|
||||
<table id="hosts" class="hosts lane stack">
|
||||
<tbody class="lane stack">
|
||||
<tr class="no-css">
|
||||
<th>Avatar</th>
|
||||
<th>Name & Host ID</th>
|
||||
<th>License</th>
|
||||
<th>Last Show</th>
|
||||
</tr>
|
||||
<!--% FOREACH host IN DBI.query(
|
||||
'select h.hostid, h.host, h.license, e.date,
|
||||
h.local_image
|
||||
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>
|
||||
<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>
|
||||
</article>
|
||||
<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,24 +1,27 @@
|
||||
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
||||
<!--% PROCESS "queries-episodes.tpl.html" %-->
|
||||
<article>
|
||||
<header>
|
||||
<!--% 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.
|
||||
</p>
|
||||
</header>
|
||||
<div class="lane stack">
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% FOREACH episodes IN DBI.query(query_episodes)
|
||||
%-->
|
||||
<article>
|
||||
<!--% show_summary(episodes) %-->
|
||||
<p class="listen-in"><!--% display_listen_in(episodes.id) %--></p>
|
||||
</article>
|
||||
<!--% END %-->
|
||||
</div>
|
||||
<h2 id="twt_episodes">Today With a Techie Archived Shows</h2>
|
||||
<p>
|
||||
<!-- Creative Commons License -->
|
||||
<a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="https://creativecommons.org/images/public/somerights20.png" width="88" height="31" /></a><br>The following work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</a>.</p>
|
||||
<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>
|
||||
<!--% FOREACH twat_episode IN DBI.query('
|
||||
<div class="lane stack">
|
||||
<!--% FOREACH twt_episode IN DBI.query('
|
||||
SELECT
|
||||
eps.id,
|
||||
eps.explicit,
|
||||
@@ -27,14 +30,16 @@
|
||||
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
|
||||
')
|
||||
%-->
|
||||
<!--% twat_show_summary(twat_episode) %-->
|
||||
<!--% END %-->
|
||||
|
||||
<article>
|
||||
<!--% 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 %-->
|
||||
@@ -23,11 +22,6 @@
|
||||
<!--% END %-->
|
||||
<!--% after_html %-->
|
||||
<!--% END %-->
|
||||
<hr>
|
||||
<article>
|
||||
<header>
|
||||
<h3>Welcome to HPR, the Community Podcast</h3>
|
||||
</header>
|
||||
<!--% days_till_next_episode = 0 %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% USE date %-->
|
||||
@@ -40,44 +34,111 @@
|
||||
<!--% days_till_next_episode = calc.Delta_Days(now.0,now.1,now.2,slot_date.0,slot_date.1,slot_date.2) %-->
|
||||
|
||||
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
|
||||
<p>We started producing shows as <a href="<!--% absolute_path(baseurl) %-->eps/index.html#twt_episodes"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. Our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topics</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)">hackers</a>"</strong>. If you listen to HPR then please consider contributing one show a year. If you <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> your show now it could be <a href="<!--% hub_baseurl %-->calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p>
|
||||
</article>
|
||||
<section id="welcome">
|
||||
<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() %-->
|
||||
<hr>
|
||||
</div>
|
||||
</section>
|
||||
<section id="podcast_lane">
|
||||
<header><h2>The Podcast</h2></header>
|
||||
<div class="lane">
|
||||
<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>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% hub_baseurl %-->calendar.php">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/calendar-2-line.svg" alt="" height="110">
|
||||
<p>Schedule</p>
|
||||
</a>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->syndication.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/rss-fill.svg" alt="" height="110">
|
||||
<p>Subscribe</p>
|
||||
</a>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->eps/index.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/volume-up-fill.svg" alt="" height="110">
|
||||
<p>Listen</p>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<section id="project_lane">
|
||||
<header><h2>The Project</h2></header>
|
||||
<div class="lane">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->correspondents/index.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/user-fill.svg" alt="" height="110">
|
||||
<p>Hosts</p>
|
||||
</a>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->series/index.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/stack-fill.svg" alt="" height="110">
|
||||
<p>Series</p>
|
||||
</a>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->about.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/question-mark.svg" alt="" height="110">
|
||||
<p>About</p>
|
||||
</a>
|
||||
<br class="no-css">
|
||||
<a class="lane-button" href="<!--% absolute_path(baseurl) %-->search.html">
|
||||
<img src="<!--% absolute_path(baseurl) %-->images/icons/search.svg" alt="" height="110">
|
||||
<p>Search</p>
|
||||
</a>
|
||||
</div>
|
||||
</section>
|
||||
<section id="latest_lane" class="lane">
|
||||
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
||||
<h1>Latest Shows</h1>
|
||||
<section id="latest_shows">
|
||||
<header><h2>Latest Shows</h2></header>
|
||||
<!--% host_cnt = 0 %-->
|
||||
<dl>
|
||||
<!--% FOREACH latest_episodes IN DBI.query(query_latest_episodes)
|
||||
%-->
|
||||
<hr>
|
||||
<article>
|
||||
<header>
|
||||
<h1><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">hpr<!--% latest_episodes.id %--> :: <!--% latest_episodes.title %--></a></h1>
|
||||
<h3><!--% latest_episodes.summary%--></h3>
|
||||
<p class="meta"$><!--% show_avatar(latest_episodes.hostid, latest_episodes.host, host_cnt) %-->
|
||||
Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(latest_episodes.hostid) %-->.html"><!--% latest_episodes.host %--></a> on <!--% day_and_date(latest_episodes.date) %--> is flagged as <!--% display_explicit(latest_episodes.explicit) %--> and released under a <!--% latest_episodes.license %--> license. <br>
|
||||
<!--% display_tags(latest_episodes.tags) %-->
|
||||
<span><!--% show_series(latest_episodes.series, latest_episodes.seriesid) %--></span>
|
||||
<span><label>Comments: </label><!--% display_comments_tally(latest_episodes.id, latest_episodes.eps_tally) %--></span><br>
|
||||
<!--% listen_now(latest_episodes, "hpr", baseurl, media_baseurl) %-->
|
||||
</p>
|
||||
</header>
|
||||
<p>See <a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(latest_episodes.id) %-->/index.html">episode show notes</a> for more information.</p>
|
||||
</article>
|
||||
<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 %-->
|
||||
<article id="previous_five_weeks">
|
||||
<header>
|
||||
<hr>
|
||||
<h1>Previous five weeks</h1>
|
||||
</header>
|
||||
<!--% FOREACH last_5_weeks_episodes IN DBI.query(query_last_5_weeks_episodes)
|
||||
</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>
|
||||
<dl>
|
||||
<!--% FOREACH item IN DBI.query('
|
||||
WITH episode_comment_rank AS (
|
||||
SELECT
|
||||
comments.eps_id
|
||||
, comments.id as comment_id
|
||||
, comments.comment_author_name
|
||||
, comments.comment_timestamp
|
||||
, comments.comment_title
|
||||
, RANK() OVER (PARTITION BY eps_id ORDER BY id ) AS comment_number
|
||||
FROM comments
|
||||
)
|
||||
SELECT
|
||||
episode_comment_rank.*
|
||||
, hosts.host
|
||||
, eps.title AS episode_title
|
||||
, eps.date AS episode_date
|
||||
FROM episode_comment_rank
|
||||
INNER JOIN eps
|
||||
ON episode_comment_rank.eps_id = eps.id
|
||||
INNER JOIN hosts
|
||||
ON eps.hostid = hosts.hostid
|
||||
ORDER BY episode_comment_rank.comment_timestamp DESC
|
||||
LIMIT 10;
|
||||
|
||||
')
|
||||
%-->
|
||||
<!--% show_summary(last_5_weeks_episodes) %-->
|
||||
<p class="listen-in"><!--% display_listen_in(last_5_weeks_episodes.id) %--></p>
|
||||
<dt><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comment_<!--% item.comment_id%-->">Comment <!--% item.comment_number %-->: <!--% item.comment_author_name %--> on <!--% item.comment_timestamp %-->: "<!--% item.comment_title %-->"</a></dt>
|
||||
<dd>on hpr<!--% item.eps_id %--> (<!--% item.episode_date %-->) "<!--% item.episode_title %-->" by <!--% item.host %--></dd>
|
||||
<!--% END %-->
|
||||
</article>
|
||||
<h1>Older Shows</h1>
|
||||
<p>
|
||||
Get a <a href="<!--% absolute_path(baseurl) %-->eps/index.html">full list</a> of all our shows.
|
||||
</p>
|
||||
</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,45 +1,124 @@
|
||||
<article>
|
||||
<!--% page_title = "HPR ~ Find a show" %-->
|
||||
<section id="search">
|
||||
<header>
|
||||
<h1>Search HPR.</h1>
|
||||
</header>
|
||||
<hr />
|
||||
<h2>Search Show Tags</h2>
|
||||
<p>
|
||||
<a href="<!--% absolute_path(baseurl) %-->tags.html">Complete list of all the Tags</a></p>
|
||||
<hr />
|
||||
<h2>Google</h2>
|
||||
<form name="google-search" method="get" action="https://www.google.com/search">
|
||||
<input type="hidden" name="sitesearch" value="https://www.hackerpublicradio.org/" />
|
||||
<input name="q" type="text" placeholder="Search HPR with Google"/>
|
||||
<input type="submit" name="sa" value="Search HPR with Google" />
|
||||
</form>
|
||||
<br />
|
||||
<a href="https://www.google.com/policies/privacy/">privacy policy</a>
|
||||
</p>
|
||||
<hr />
|
||||
<h2>DuckDuckGo</h2>
|
||||
<div class="lane">
|
||||
<form method="get" id="search" action="https://duckduckgo.com/">
|
||||
<fieldset><legend>DuckDuckGo</legend>
|
||||
<input type="hidden" name="sites" value="https://www.hackerpublicradio.org/"/>
|
||||
<input type="hidden" name="k8" value="#444444"/>
|
||||
<input type="hidden" name="k9" value="#D51920"/>
|
||||
<input type="hidden" name="kt" value="h"/>
|
||||
<input type="text" name="q" maxlength="255" placeholder="Search HPR with DuckDuckGo"/>
|
||||
<input type="submit" value="Search HPR with DuckDuckGo" />
|
||||
</form>
|
||||
<br />
|
||||
<p>
|
||||
<a href="https://duckduckgo.com/privacy">privacy policy</a>
|
||||
</p>
|
||||
<hr />
|
||||
<h2>Bing</h2>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form name="google-search" method="get" action="https://www.google.com/search">
|
||||
<fieldset><legend>Google</legend>
|
||||
<input type="hidden" name="sitesearch" value="https://www.hackerpublicradio.org/" />
|
||||
<input name="q" type="text" placeholder="Search HPR with Google"/>
|
||||
<input type="submit" name="sa" value="Search HPR with Google" />
|
||||
<p>
|
||||
<a href="https://www.google.com/policies/privacy/">privacy policy</a>
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
<form method="get" action="https://www.bing.com/search">
|
||||
<fieldset><legend>Bing</legend>
|
||||
<input type="hidden" name="cp" value="utf-8" />
|
||||
<input type="hidden" name="FORM" value="FREESS" />
|
||||
<input type="text" name="q" size="30" placeholder="Search HPR with Bing"/>
|
||||
<input type="submit" value="Search HPR with Bing" />
|
||||
<input type="hidden" name="q1" value="site:www.hackerpublicradio.org" />
|
||||
</form>
|
||||
<br />
|
||||
<p>
|
||||
<a href="https://www.microsoft.com/privacystatement/en-us/bing/default.aspx">privacy policy</a>
|
||||
</p>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
<section id="tags">
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS "queries-tags.tpl.html" %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
<!--% PERL %-->
|
||||
$Template::Stash::PRIVATE = undef; # Allow . in tag
|
||||
<!--% END %-->
|
||||
<!--% USE String %-->
|
||||
<!--% uniq_tag_count = 0 %-->
|
||||
<!--% FOREACH episode IN DBI.query(query_tags);
|
||||
ep_id = episode.id;
|
||||
ep_tags = episode.tags;
|
||||
FOREACH tag_str IN ep_tags.csv_parse;
|
||||
NEXT UNLESS tag_str;
|
||||
NEXT IF tag_str == '';
|
||||
tag = tag_str.lower;
|
||||
tag_index = String.new(tag).push('_');
|
||||
first_char = tag.substr(0,1);
|
||||
IF first_char == '.';
|
||||
first_char = '.'; # Unicode .
|
||||
END;
|
||||
IF all_tags.${first_char}.exists(tag_index);
|
||||
all_tags.${first_char}.${tag_index}.count = all_tags.${first_char}.${tag_index}.count + 1;
|
||||
all_tags.${first_char}.${tag_index}.urls.push(ep_id);
|
||||
ELSE;
|
||||
all_tags.${first_char}.${tag_index}.count = 1;
|
||||
uniq_tag_count = uniq_tag_count + 1;
|
||||
all_tags.${first_char}.${tag_index}.urls = [ep_id];
|
||||
END;
|
||||
END;
|
||||
END %-->
|
||||
<!--% USE date %-->
|
||||
<!--% all_first = ['#','.','/','0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] %-->
|
||||
<header>
|
||||
<hgroup>
|
||||
<h1 id="TOP" class="title">Search by Tag</h1>
|
||||
<p class="date">Generated on <!--% date.format(date.now, format => '%Y-%m-%d at %H:%M:%S UTC', gmt => 1) %--></p>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>This section summarises all of the tags currently used throughout the
|
||||
database. The tags are in alphabetical order and each is followed by links to
|
||||
the show numbers where it is used so you can see the context the author used
|
||||
it in. There are currently <!--% uniq_tag_count %--> unique tags in the system.</p>
|
||||
<h4>Alphabetical index</h4>
|
||||
<p>This is an index to the initial letters of the tags below.</p>
|
||||
<ul id="tag_initial_letter_index">
|
||||
<!--% FOREACH first_char IN all_first %-->
|
||||
<!--% IF all_tags.${first_char} %-->
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->search.html#<!--% tag_to_id(String.new(all_tags.${first_char}.keys.sort.first).chop) %-->"><strong><!--% first_char %--></strong></a></li>
|
||||
<!--% END %-->
|
||||
<!--% END %-->
|
||||
</ul>
|
||||
<hr class="no-css">
|
||||
<!--% FOREACH first_char IN all_first %-->
|
||||
<!--% IF all_tags.${first_char} %-->
|
||||
<p class="index-link"><a href="<!--% absolute_path(baseurl) %-->search.html#TOP">↑ Go to index</a></p>
|
||||
<h3>Tags beginning with '<!--% first_char %-->'</h3>
|
||||
<ul class="tag-index">
|
||||
<!--% FOREACH tag_index IN all_tags.${first_char}.keys.sort %-->
|
||||
<!--% tag = String.new(tag_index).chop; tag_id = String.new(tag_index).chop; %-->
|
||||
<li>
|
||||
<a id="<!--% tag_to_id(tag_id) %-->"><strong><!--% tag %--></strong></a>:
|
||||
<!--% ep_links = [] %-->
|
||||
<!--% FOREACH ep_id IN all_tags.${first_char}.${tag_index}.urls.nsort;
|
||||
ep_links.push("<a href=\"${absolute_path(baseurl)}eps/hpr" _ zero_pad_left(ep_id) _ '/index.html"'
|
||||
' target="_blank" aria-label="' _ tag _
|
||||
' - show ' _ ep_id _ '">' _ ep_id _ '</a>');
|
||||
END %-->
|
||||
<!--% ep_links.join(', ') %-->
|
||||
</li>
|
||||
<!--% END %-->
|
||||
</ul>
|
||||
<!--% END %-->
|
||||
<!--% END %-->
|
||||
<p><a href="#TOP">Go to TOP of page</a></p>
|
||||
</article>
|
||||
<!--% PERL %-->
|
||||
$Template::Stash::PRIVATE = 1;
|
||||
<!--% END %-->
|
||||
|
||||
</section>
|
||||
|
||||
@@ -1,17 +1,22 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS "queries-series.tpl.html" %-->
|
||||
<article>
|
||||
<!--% 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) %-->
|
||||
<h2><a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series.id) %-->.html"><!--% series.name %--></a></h2>
|
||||
|
||||
<article>
|
||||
<header><a href="<!--% absolute_path(baseurl) %-->series/<!--% zero_pad_left(series.id) %-->.html"><!--% series.name %--></a></header>
|
||||
<ul>
|
||||
<li>Number of episodes: <!--% series.number_of_episodes %--></li>
|
||||
<li>Open/closed: <!--% display_choice(series.private, 'closed', 'open') %--></li>
|
||||
<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>
|
||||
<em><!--% series.description %--></em>
|
||||
<!--% END %-->
|
||||
<div class="series-description"><!--% series.description %--></div>
|
||||
</article>
|
||||
<!--% END %-->
|
||||
</div>
|
||||
|
||||
@@ -5,8 +5,8 @@
|
||||
<!--% query_series = DBI.prepare(query_series_sql)
|
||||
%-->
|
||||
<!--% series_result = query_series.execute(id) %-->
|
||||
<article>
|
||||
<!--% 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>
|
||||
@@ -14,14 +14,18 @@
|
||||
<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>
|
||||
<div><em><!--% series.description %--></em></div>
|
||||
<!--% END %-->
|
||||
<p><em><!--% series.description %--></em></p>
|
||||
<section id="series_episodes" class="lane stack">
|
||||
<!--% query_shows = DBI.prepare(query_shows_sql)
|
||||
%-->
|
||||
<!--% show_results = query_shows.execute(id) %-->
|
||||
<!--% FOREACH show IN show_results %-->
|
||||
<article>
|
||||
<!--% show_summary(show) %-->
|
||||
<p class="listen-in"><!--% display_listen_in(show.id) %--></p>
|
||||
<!--% END %-->
|
||||
<footer class="listen-in"><!--% display_listen_in(show.id) %--></footer>
|
||||
</article>
|
||||
<!--% END %-->
|
||||
</section>
|
||||
<!--% END %-->
|
||||
|
||||
@@ -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,24 +1,21 @@
|
||||
<!--% page_title = "HPR ~ Subscribe to our feeds" %-->
|
||||
<h1>RSS Syndication</h1>
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<h2>Subscribe to our Feeds</h2>
|
||||
</header>
|
||||
<p>
|
||||
Great that you want to listen. Have a look below at the feeds that best suite your listening habits.
|
||||
</p>
|
||||
</article>
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<hgroup>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> The Community News Summary</h2>
|
||||
<h3>One show a month</h3>
|
||||
<p>One show a month</p>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>
|
||||
If you get overwhelmend by the amount of shows we produce, then this is a good place to start.
|
||||
</p>
|
||||
<p>
|
||||
Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month.
|
||||
</p>
|
||||
<p>If you get overwhelmend by the amount of shows we produce, then this is a good place to start.</p>
|
||||
|
||||
<p>Every month, the HPR Janitors put down their mops had have a chat about all the shows, and what else has been going on in the HPR community. This is a regular show scheduled for the first Monday of the month.</p>
|
||||
|
||||
<ul>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr_opus_rss.php?series=47">opus</a>.</li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php?series=47">ogg</a>.</li>
|
||||
@@ -30,8 +27,10 @@
|
||||
</article>
|
||||
<article>
|
||||
<header>
|
||||
<hgroup>
|
||||
<h2><img src="<!--% absolute_path(baseurl) %-->images/feed.png" alt="rss logo"> Two week Audio feed</h2>
|
||||
<h3>5 shows a week</h3>
|
||||
<p>5 shows a week</p>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>
|
||||
Use these feeds to keep up to date with the latest HPR Episodes.
|
||||
@@ -53,9 +52,9 @@
|
||||
Use this feed to get the archived episodes. The feed themselves run over 15Mb in size and so use them to download the archived episodes and when you are up to date switch back to the Two Week Feeds listed above.
|
||||
</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>
|
||||
@@ -77,8 +76,10 @@
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->comments.rss">Listener contributed comments to the episodes</a></li>
|
||||
</ul>
|
||||
</article>
|
||||
<hr />
|
||||
<div>
|
||||
<hr class="no-css">
|
||||
<h1>Other Download Options</h1>
|
||||
<div class="lane stack">
|
||||
<article>
|
||||
<header>
|
||||
<h2>Site Replication Sources</h2>
|
||||
@@ -111,25 +112,29 @@
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<h1>Download Archive</h1>
|
||||
<h2>Download Archive</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>
|
||||
</header>
|
||||
<h2>Full Episode Guide</h2>
|
||||
<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>
|
||||
<h2>Command line download</h2>
|
||||
<p>
|
||||
You can download the audio of the episodes directly from the command line using the following commands:
|
||||
</p>
|
||||
</article>
|
||||
|
||||
<article>
|
||||
<header><h2>Full Episode Guide</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>
|
||||
<p>You can download the audio of the episodes directly from the command line using the following commands:</p>
|
||||
<ul>
|
||||
<li>ogg:<br />
|
||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].ogg' -o "hpr#1.ogg"</span></li>
|
||||
<li>spx:<br />
|
||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].spx' -o "hpr#1.spx"</span></li>
|
||||
<li>mp3:<br />
|
||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].mp3' -o "hpr#1.mp3"</span></li>
|
||||
<li>ogg:<br>
|
||||
<code>curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].ogg' -o "hpr#1.ogg"</code></li>
|
||||
<li>spx:<br>
|
||||
<code>curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].spx' -o "hpr#1.spx"</code></li>
|
||||
<li>mp3:<br>
|
||||
<code>curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].mp3' -o "hpr#1.mp3"</code></li>
|
||||
</ul>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<section id="tags">
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<!--% PROCESS "queries-tags.tpl.html" %-->
|
||||
<!--% USE DBI(constants.driver) %-->
|
||||
@@ -30,39 +31,31 @@ $Template::Stash::PRIVATE = undef; # Allow . in tag
|
||||
END %-->
|
||||
<!--% USE date %-->
|
||||
<!--% all_first = ['#','.','/','0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'] %-->
|
||||
|
||||
<style>
|
||||
.columns3 { columns: 3 auto; list-style-type: none }
|
||||
hr.thin {
|
||||
border: 0;
|
||||
height: 0;
|
||||
border-top: 1px solid rgba(0, 0, 0, 0.1);
|
||||
border-bottom: 1px solid rgba(255, 255, 255, 0.3);
|
||||
}
|
||||
p.ralign { text-align: right }
|
||||
</style>
|
||||
<article>
|
||||
<a id="TOP"><h1 class="title">Tag summary</h1></a>
|
||||
<h4 class="date">Page generated on <!--% date.format(date.now, format => '%Y-%m-%d at %H:%M:%S UTC', gmt => 1) %--></h4>
|
||||
<header>
|
||||
<hgroup>
|
||||
<h1 class="title"><a id="TOP">Search by Tag</a></h1>
|
||||
<p class="date">Page generated on <!--% date.format(date.now, format => '%Y-%m-%d at %H:%M:%S UTC', gmt => 1) %--></p>
|
||||
</hgroup>
|
||||
</header>
|
||||
<p>This section summarises all of the tags currently used throughout the
|
||||
database. The tags are in alphabetical order and each is followed by links to
|
||||
the show numbers where it is used so you can see the context the author used
|
||||
it in. There are currently <!--% uniq_tag_count %--> unique tags in the system.</p>
|
||||
<h4>Alphabetical index</h4>
|
||||
<p>This is an index to the initial letters of the tags below.</p>
|
||||
<ul class="columns3">
|
||||
<ul id="tag_initial_letter_index">
|
||||
<!--% FOREACH first_char IN all_first %-->
|
||||
<!--% IF all_tags.${first_char} %-->
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% tag_to_id(String.new(all_tags.${first_char}.keys.sort.first).chop) %-->"><strong><!--% first_char %--></strong></a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->search.html#<!--% tag_to_id(String.new(all_tags.${first_char}.keys.sort.first).chop) %-->"><strong><!--% first_char %--></strong></a></li>
|
||||
<!--% END %-->
|
||||
<!--% END %-->
|
||||
</ul>
|
||||
<hr>
|
||||
<hr class="no-css">
|
||||
<!--% FOREACH first_char IN all_first %-->
|
||||
<!--% IF all_tags.${first_char} %-->
|
||||
<p class="ralign"><a href="<!--% absolute_path(baseurl) %-->tags.html#TOP">↑ Go to index</a></p>
|
||||
<p class="index-link"><a href="<!--% absolute_path(baseurl) %-->search.html#TOP">↑ Go to index</a></p>
|
||||
<h3>Tags beginning with '<!--% first_char %-->'</h3>
|
||||
<ul>
|
||||
<ul class="tag-index">
|
||||
<!--% FOREACH tag_index IN all_tags.${first_char}.keys.sort %-->
|
||||
<!--% tag = String.new(tag_index).chop; tag_id = String.new(tag_index).chop; %-->
|
||||
<li>
|
||||
@@ -84,3 +77,5 @@ END %-->
|
||||
<!--% PERL %-->
|
||||
$Template::Stash::PRIVATE = 1;
|
||||
<!--% END %-->
|
||||
|
||||
</section>
|
||||
@@ -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,11 +1,7 @@
|
||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||
<ul>
|
||||
<li><a href="<!--% hub_baseurl %-->calendar.php"><strong>⇧Upload⇧</strong></a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home »</strong></a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a></li>
|
||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Give Shows</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->about.html#how_to_help">Contribute</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->tags.html">Tags</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->index.html">Home</a></li>
|
||||
<li><a href="<!--% hub_baseurl %-->calendar.php">Upload</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Download</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->search.html">Search</a></li>
|
||||
</ul>
|
||||
|
||||
@@ -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,138 +20,64 @@
|
||||
<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." />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<!-- Internal CSS -->
|
||||
<style type="text/css">
|
||||
article, aside, dialog, figure, footer, header, hgroup, menu, nav, section {
|
||||
display: block;
|
||||
}
|
||||
#list1, #list2, #list3 {
|
||||
display:none;
|
||||
}
|
||||
</style>
|
||||
<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="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" />
|
||||
<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]>
|
||||
<link rel="stylesheet" href="/css/hpr.css" media="screen" type="text/css" />
|
||||
<script src="/JavaScript/html5.js"></script>
|
||||
<![endif]-->
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.5, user-scalable=yes"/>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes"/>
|
||||
</head>
|
||||
|
||||
<body id="give">
|
||||
<div id="container" class="shadow">
|
||||
<header>
|
||||
<a href="<!--% absolute_path(baseurl) %-->"><img id="hprlogo" src="<!--% absolute_path(baseurl) %-->images/hpr_logo.png" alt="hprlogo"></a>
|
||||
<div id="hpr_banner">
|
||||
<p id="accessible_menu">
|
||||
<a href="<!--% absolute_path(baseurl) %-->sitemap.html">Site Map</a>
|
||||
- <a href="#maincontent">skip to main content</a>
|
||||
</p>
|
||||
<h1 id="sitename">
|
||||
<a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">H</a>acker
|
||||
<body>
|
||||
<div id="top_navigation" class="sr-only">
|
||||
<nav id="accessible_menu">
|
||||
<menu>
|
||||
<li><a href="#main_content">Skip to Main Content</a></li>
|
||||
<li><a href="<!--% absolute_path(baseurl) %-->sitemap.html#main_content">Site Map</a></li>
|
||||
</menu>
|
||||
</nav>
|
||||
<hr class="no-css">
|
||||
</div>
|
||||
<header role="banner">
|
||||
<div class="bounding-box">
|
||||
<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><!--% 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
|
||||
</h1>
|
||||
<h2>Your ideas, projects, opinions - podcasted.</h2>
|
||||
<h3>New episodes every weekday Monday through Friday.<br />
|
||||
<em><small>This page was <a href="https://repo.anhonesthost.net/HPR/hpr_generator">generated</a> by <a href="mailto:<!--% generator_email %-->"><!--% generator_name %--></a> at <time dateTime="<!--% format_iso8601_date(date.now) %-->"><!--% format_feed_date(date.now) %--></time></small></em></h3>
|
||||
|
||||
</div>
|
||||
<hr />
|
||||
|
||||
<nav class="menu" role="navigation">
|
||||
<!--% INCLUDE $navigation %-->
|
||||
</nav>
|
||||
</header>
|
||||
|
||||
<main id="maincontent">
|
||||
<!--% INCLUDE $content %-->
|
||||
</main>
|
||||
|
||||
<footer id="footer_page">
|
||||
<h1 class="thick_bar">More Information...</h1>
|
||||
<div id="more_info">
|
||||
<nav class="column">
|
||||
<h2>Ancestry</h2>
|
||||
<ul>
|
||||
<li><a href="http://audio.textfiles.com/shows/radiofreekamerica/">Radio Freek America</a></li>
|
||||
<li><a href="http://audio.textfiles.com/shows/binrev/">BinRev Radio</a></li>
|
||||
<li><a href="http://audio.textfiles.com/shows/infonomicon/">Infonomicon</a></li>
|
||||
<li><a href="http://audio.textfiles.com/shows/twat/">Today With a Techie</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="column">
|
||||
<h2>Social</h2>
|
||||
<ul>
|
||||
<li><a href="https://lists.hackerpublicradio.com/mailman/listinfo/hpr" >Mailing list</a></li>
|
||||
<li><a rel="me" href="https://infosec.exchange/@hpr" >Mastodon</a></li>
|
||||
<li><a href="https://matrix.to/#/#hpr:matrix.org" >Matrix</a></li>
|
||||
<li><a href="mumble://chatter.skyehaven.net:64738/Hacker%20Public%20Radio?version=1.2.0" >Mumble</a></li>
|
||||
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li>
|
||||
<li><a href="https://t.me/+6fEhQrf5IEc4ZGU8">Telegram</a></li>
|
||||
<li><a href="https://twitter.com/HPR">Twitter.com</a></li>
|
||||
<li><a href="https://www.facebook.com/HenryPartickReilly" target="_blank">Facebook</a></li>
|
||||
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="column">
|
||||
<h2>Unaffiliates</h2>
|
||||
<ul>
|
||||
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
|
||||
<li><a href="https://music.amazon.fr/podcasts/9d9e6211-ff78-4501-93b6-6a9e560c4dbd/hacker-public-radio">Amazon Music</a></li>
|
||||
<li><a href="https://podcasts.google.com/feed/aHR0cDovL2hhY2tlcnB1YmxpY3JhZGlvLm9yZy9ocHJfcnNzLnBocA">Google Podcasts</a></li>
|
||||
<li><a href="https://www.iheart.com/podcast/256-hacker-public-radio-30994513/" target="_blank">iHeart Radio</a></li>
|
||||
<li><a href="https://podcasts.apple.com/us/podcast/hacker-public-radio/id281699640">iTunes</a></li>
|
||||
<li><a href="https://www.listennotes.com/de/podcasts/hacker-public-radio-hacker-public-radio-mNH-jsI7LcJ/">Listen Notes</a></li>
|
||||
<li><a href="https://www.mixcloud.com/hackerpublicradio/">MixCloud</a></li>
|
||||
<li><a href="https://player.fm/series/hacker-public-radio">PlayerFM</a></li>
|
||||
<li><a href="https://www.podchaser.com/podcasts/hacker-public-radio-76781">Podchaser</a></li>
|
||||
<li><a href="https://nl.radio.net/podcast/hacker-public-radio">Radio.net</a></li>
|
||||
<li><a href="https://open.spotify.com/show/7e2hYcnHj9vKgUzsIOf4r3">Spotify</a></li>
|
||||
<li><a href="https://toppodcast.com/podcast_feeds/hacker-public-radio/">Top Podcasts</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="column">
|
||||
<h2>Commons</h2>
|
||||
<ul>
|
||||
<li><a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a></li>
|
||||
<li><a href="https://archive.org/details/hackerpublicradio">archive.org</a></li>
|
||||
<li><a href="https://repo.anhonesthost.net/HPR/">HPR Source Code</a></li>
|
||||
<li><a href="https://cchits.net/">cchits.net</a></li>
|
||||
<li><a href="https://freesound.org/">freesound.org</a></li>
|
||||
<li><a href="https://librivox.org/">librivox.org</a></li>
|
||||
<li><a href="https://openclipart.org/">openclipart.org</a></li>
|
||||
<li><a href="https://openfontlibrary.org/">openfontlibrary.org</a></li>
|
||||
<li><a href="https://www.openrouteservice.org/">openrouteservice.org/</a></li>
|
||||
<li><a href="https://pixabay.com/">pixabay.com/</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
<nav class="column">
|
||||
<h2>Patrons</h2>
|
||||
<ul>
|
||||
<li><a href="https://anhonesthost.com/hosting/shared-hosting">AnHonestHost.com</a></li>
|
||||
<li><a href="https://archive.org/donate/">Archive.org</a></li>
|
||||
<li><a href="https://rsync.net/">rsync.net</a></li>
|
||||
</ul>
|
||||
</nav>
|
||||
</div><!-- more_info -->
|
||||
<h1 class="thick_bar">Copyright Information</h1>
|
||||
<div id="copyright">
|
||||
<p>
|
||||
Unless otherwise stated, our shows are released 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.</p>
|
||||
<p>
|
||||
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
|
||||
</p>
|
||||
</div><!-- copyright -->
|
||||
<hr />
|
||||
</footer>
|
||||
</hgroup>
|
||||
<hgroup id="tag_line">
|
||||
<h2 id="tag1">The Community Podcast</h2>
|
||||
<p id="tag2">Sharing your ideas, projects, opinions since 2005</p>
|
||||
<p id="tag3">New episodes every weekday </p>
|
||||
</hgroup>
|
||||
</div>
|
||||
<!-- shadow -->
|
||||
</header>
|
||||
<main id="main_content" role="main">
|
||||
<!--% content %-->
|
||||
<!--% page_title = "acck" %-->
|
||||
</main>
|
||||
<footer role="contentinfo">
|
||||
<hr class="no-css">
|
||||
<div id="copyright">
|
||||
<span>Unless otherwise stated, our shows are released 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.</span>
|
||||
<span>
|
||||
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
|
||||
</span>
|
||||
</div>
|
||||
<div id="generated_by">This page was <a href="https://repo.anhonesthost.net/HPR/hpr_generator">generated</a> by <a href="mailto:<!--% generator_email %-->"><!--% generator_name %--></a> at <time dateTime="<!--% format_iso8601_date(date.now) %-->"><!--% format_feed_date(date.now) %--></time></em>
|
||||
</div>
|
||||
</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\')' %-->
|
||||
|
||||
@@ -50,11 +50,11 @@
|
||||
%-->
|
||||
|
||||
<item>
|
||||
<title><!--% item.comment_author_name | html_strip | xml_entity %--> says: <!--% item.comment_title | html_strip | xml_entity %--></title>
|
||||
<author>feedback.nospam@nospam.hackerpublicradio.org (<!--% item.comment_author_name | html_strip | xml_entity %-->)</author>
|
||||
<title><!--% item.comment_author_name | html_strip %--> says: <!--% item.comment_title | html_strip %--></title>
|
||||
<author>feedback.nospam@nospam.hackerpublicradio.org (<!--% item.comment_author_name | html_strip %-->)</author>
|
||||
<link><!--% absolute_url(http_baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comments</link>
|
||||
<description><![CDATA[<strong>
|
||||
RE: hpr<!--% zero_pad_left(item.eps_id) %-->::<!--% item.episode_date %--> <em><!--% item.episode_title | html_strip | xml_entity %--></em> by <a href="<!--% absolute_url(http_baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a></strong><!--% rss_show_series(item.series_name, item.series_id) | html_strip | xml_entity %--><br />
|
||||
RE: hpr<!--% zero_pad_left(item.eps_id) %-->::<!--% item.episode_date %--> <em><!--% item.episode_title | html_strip %--></em> by <a href="<!--% absolute_url(http_baseurl) %-->correspondents/<!--% zero_pad_left(item.host_id) %-->.html"><!--% item.host %--></a></strong><!--% rss_show_series(item.series_name, item.series_id) | html_strip %--><br />
|
||||
<!--% display_episode_duration(item.episode_duration) %--><!--% display_listen_in(item.eps_id) %--><br /><!--% item.comment_text FILTER html_line_break %-->
|
||||
]]></description>
|
||||
<pubDate><!--% format_feed_date(item.comment_timestamp) %--></pubDate>
|
||||
|
||||
@@ -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 %-->
|
||||
|
||||
@@ -29,8 +29,7 @@ set -o nounset # Treat unset variables as an error
|
||||
function is_module_installed {
|
||||
HR="----------------------"
|
||||
perl -e "use ${1} "
|
||||
if [ $? -ne 0 ]
|
||||
then
|
||||
if [ $? -ne 0 ]; then
|
||||
echo ${HR}
|
||||
else
|
||||
echo "Found module ${1}"
|
||||
@@ -38,35 +37,30 @@ function is_module_installed {
|
||||
fi
|
||||
}
|
||||
|
||||
MODULES=( \
|
||||
"Getopt::Long" \
|
||||
"Pod::Usage" \
|
||||
"Config::Std" \
|
||||
"Template" \
|
||||
"Template::Plugin::File" \
|
||||
"Template::Plugin::DBI" \
|
||||
"Template::Plugin::HTML::Strip" \
|
||||
"DBI" \
|
||||
"Tie::DBI" \
|
||||
"DBD::SQLite" \
|
||||
"DBD::mysql" \
|
||||
"Date::Calc" \
|
||||
"Text::CSV_XS" \
|
||||
MODULES=(
|
||||
"Getopt::Long"
|
||||
"Pod::Usage"
|
||||
"Config::Std"
|
||||
"Template"
|
||||
"Template::Plugin::File"
|
||||
"Template::Plugin::DBI"
|
||||
"Template::Plugin::HTML::Strip"
|
||||
"DBI"
|
||||
"Tie::DBI"
|
||||
"DBD::SQLite"
|
||||
"Date::Calc"
|
||||
"Text::CSV_XS"
|
||||
)
|
||||
|
||||
echo "The following modules must be installed for the site-generator to function: "
|
||||
for module in "${MODULES[@]}"
|
||||
do
|
||||
for module in "${MODULES[@]}"; do
|
||||
echo "* ${module}"
|
||||
done
|
||||
echo "When MySQL is used, the DBD:mysql module is required (otherwise it is optional)"
|
||||
echo "When SQLite is used, then the DBD:SQLite module is required (otherwise it is optional)"
|
||||
|
||||
echo "Scanning for modules ..."
|
||||
echo "----------------------"
|
||||
|
||||
for module in "${MODULES[@]}"
|
||||
do
|
||||
for module in "${MODULES[@]}"; do
|
||||
is_module_installed "${module}"
|
||||
done
|
||||
|
||||
|
||||