forked from rho_n/hpr_generator
Compare commits
No commits in common. "main" and "I145_Various_bug_fixes" have entirely different histories.
main
...
I145_Vario
@ -31,11 +31,7 @@ apt install libconfig-std-perl \
|
|||||||
libtemplate-perl \
|
libtemplate-perl \
|
||||||
libtemplate-plugin-dbi-perl \
|
libtemplate-plugin-dbi-perl \
|
||||||
libdbd-sqlite3-perl libdate-calc-perl \
|
libdbd-sqlite3-perl libdate-calc-perl \
|
||||||
libtie-dbi-perl \
|
libtie-dbi-perl
|
||||||
libtext-csv-xs-perl \
|
|
||||||
libhtml-parser-perl \
|
|
||||||
libtemplate-plugin-html-strip-perl
|
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Using CPAN to install the modules
|
## Using CPAN to install the modules
|
||||||
|
@ -31,18 +31,12 @@ Static web page generator for the Hacker Public Radio website.
|
|||||||
* Template
|
* Template
|
||||||
* Template::Plugin::File
|
* Template::Plugin::File
|
||||||
* Template::Plugin::DBI
|
* Template::Plugin::DBI
|
||||||
* Template::Plugin::Date
|
|
||||||
* Template::Plugin::HTML::Strip
|
|
||||||
* DBI
|
* DBI
|
||||||
* Tie::DBI
|
* Tie::DBI
|
||||||
* DBD::SQLite or DBD:mysql
|
* DBD::SQLite or DBD:mysql
|
||||||
* Date::Calc
|
* Date::Calc
|
||||||
* Text::CSV_XS
|
* See the Getting Started tutorial (GETTING_STARTED.md) for more details on
|
||||||
* HTML::Entities
|
|
||||||
|
|
||||||
* See the [Getting Started](GETTING_STARTED.md) tutorial for more details on
|
|
||||||
installing the HPR generator.
|
installing the HPR generator.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
Generate two specific pages:
|
Generate two specific pages:
|
||||||
`site-generator index about`
|
`site-generator index about`
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
@charset "utf-8";
|
@charset "utf-8";
|
||||||
/* Website design Copyright Ken Fallon - Released into the public domain/
|
/* Website design Copyright Ken Fallon - Released into the public domain/
|
||||||
|
|
||||||
https://creativecommons.org/publicdomain/
|
http://creativecommons.org/publicdomain/
|
||||||
|
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@ -198,7 +198,7 @@ h1.showtitle { font-size: 125%;}
|
|||||||
|
|
||||||
p.author { font-size: 85%;}
|
p.author { font-size: 85%;}
|
||||||
p.shownotes { padding: .5em;}
|
p.shownotes { padding: .5em;}
|
||||||
#maincontent footer p { /* font-size: 75%; */ margin-bottom: 1em;}
|
#maincontent footer p { font-size: 75%; margin-bottom: 1em;}
|
||||||
/* link styling */
|
/* link styling */
|
||||||
a:link {text-decoration: none;}
|
a:link {text-decoration: none;}
|
||||||
|
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 1.4 MiB |
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because one or more lines are too long
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 1.3 MiB |
Binary file not shown.
Before Width: | Height: | Size: 838 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
589
site-generator
589
site-generator
@ -1,96 +1,88 @@
|
|||||||
#!/usr/bin/perl
|
#!/usr/bin/perl
|
||||||
|
|
||||||
# {{{ POD documentation
|
|
||||||
|
|
||||||
=head1 NAME
|
=head1 NAME
|
||||||
|
|
||||||
site-generator - HPR Site Generator
|
site-generator - HPR Site Generator
|
||||||
|
|
||||||
=head1 SYNOPSIS
|
=head1 SYNOPSIS
|
||||||
|
|
||||||
site-generator [OPTION]... PAGE|PAGE=<comma separated list of ids>...
|
site-generator [OPTION]... PAGE|PAGE=<comma separated list of ids>...
|
||||||
|
|
||||||
-a, --all generate all pages defined in configuration file
|
-a, --all generate all pages defined in configuration file
|
||||||
-c, --configuration path to configuration file
|
-c, --configuration path to configuration file
|
||||||
-l, --list print list of configured pages
|
-l, --list print list of configured pages
|
||||||
-p, --preview print generated pages to standard out
|
-p, --preview print generated pages to standard out
|
||||||
-q, --quiet suppress progress information while generating pages
|
-q, --quiet suppress progress information while generating pages
|
||||||
-v, --verbose print extended progress information while generating pages
|
-v, --verbose print extended progress information while generating pages
|
||||||
--help print this help message
|
--help print this help message
|
||||||
|
|
||||||
Where I<PAGE> is a file name of a web page
|
Where I<PAGE> is a file name of a web page
|
||||||
or the special I<ALL> (to generate all pages).
|
or the special I<ALL> (to generate all pages).
|
||||||
|
|
||||||
Examples:
|
Examples:
|
||||||
|
|
||||||
Generate two specific pages:
|
Generate two specific pages:
|
||||||
site-generator index about
|
site-generator index about
|
||||||
|
|
||||||
Generate the whole site:
|
Generate the whole site:
|
||||||
site-generator --all
|
site-generator --all
|
||||||
|
|
||||||
Generate pages based on the same template:
|
Generate pages based on the same template:
|
||||||
site-generator correspondent=1,3,5..10
|
site-generator correspondent=1,3,5..10
|
||||||
|
|
||||||
Generate two specific pages with a different configuration:
|
Generate two specific pages with a different configuration:
|
||||||
site-generator --configuration=site_sqlite.cfg index about
|
site-generator --configuration=site_sqlite.cfg index about
|
||||||
|
|
||||||
|
|
||||||
=head1 DESCRIPTION
|
=head1 DESCRIPTION
|
||||||
|
|
||||||
This is a site generator for the Hacker Public Radio website based upon the
|
This is a site generator for the Hacker Public Radio website based upon the Perl Templates Toolkit.
|
||||||
Perl Template Toolkit.
|
|
||||||
|
|
||||||
=head1 INSTALLATION
|
=head1 INSTALLATION
|
||||||
|
|
||||||
With SQLite
|
With SQLite
|
||||||
* Create the sqlite3 database from the hpr.sql MySQL dump file available on
|
* Create the sqlite3 database from the hpr.sql MySQL dump file available on
|
||||||
hackerpublicradio.org. The default name for the database file is "hpr.db"
|
hackerpublicradio.org. The default name for the database file is "hpr.db"
|
||||||
and should be located in the root of the project directory. The name and
|
and should be located in the root of the project directory. The name and
|
||||||
location can be set in the site.cfg file.
|
location can be set in the site.cfg file.
|
||||||
* An "update-hpr.sh" helper script is available in the utils directory. This
|
* An "update-hpr.sh" helper script is available in the utils directory. This
|
||||||
script will download the hpr.sql file, convert it to the SQLite hpr.db file,
|
script will download the hpr.sql file, convert it to the SQLite hpr.db file,
|
||||||
and regenerate the website using the site-generator.
|
and regenerate the website using the site-generator.
|
||||||
1. `cd` into the root of the project directory
|
1. `cd` into the root of the project directory
|
||||||
2. Run `./utils/update-hpr.sh`
|
2. Run `./utils/update-hpr.sh`
|
||||||
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries.
|
* SQLite v3.8.3 or greater is recommended. CTE WITH clauses are used in some template queries.
|
||||||
Must convert WITH clauses to sub-queries when using earlier versions of SQLite.
|
Must convert WITH clauses to sub-queries when using earlier versions of SQLite.
|
||||||
|
|
||||||
With MySQL
|
With MySQL
|
||||||
* Create database hpr_hpr in the MySQL server from HPR dump file.
|
* Create database hpr_hpr in the MySQL server from HPR dump file.
|
||||||
- sudo mysql --host=localhost < hpr.sql
|
- sudo mysql --host=localhost < hpr.sql
|
||||||
* Create a user that will be used by the site-generator.
|
* Create a user that will be used by the site-generator.
|
||||||
- Suggested username: hpr-generator
|
- Suggested username: hpr-generator
|
||||||
- CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';
|
- CREATE USER 'hpr-generator'@'localhost' IDENTIFIED BY '<password>';
|
||||||
* Limit the user's privileges to EXECUTE and SELECT
|
* Limit the user's privileges to EXECUTE and SELECT
|
||||||
- GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';
|
- GRANT SELECT ON hpr_hpr.* TO 'hpr-generator'@'localhost';
|
||||||
- GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';
|
- GRANT EXECUTE ON `hpr_hpr`.* TO 'hpr-generator'@'localhost';
|
||||||
|
|
||||||
Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
Install the needed Perl modules using preferred method (distribution packages, CPAN, etc.)
|
||||||
* Config::Std
|
* GetOpt
|
||||||
* DBD::SQLite or DBD:mysql
|
* Pod::Usage
|
||||||
* DBI
|
* Config::Std
|
||||||
* Data::Dumper
|
* Template
|
||||||
* Date::Calc
|
* Template::Plugin::File
|
||||||
* GetOpt::Long
|
* Template::Plugin::DBI
|
||||||
* HTML::Entities
|
* DBI
|
||||||
* Pod::Usage
|
* Tie::DBI
|
||||||
* Template
|
* DBD::SQLite or DBD:mysql
|
||||||
* Template::Plugin::DBI
|
* Date::Calc
|
||||||
* Template::Plugin::Date
|
|
||||||
* Template::Plugin::File
|
|
||||||
* Template::Plugin::HTML::Strip
|
|
||||||
* Text::CSV_XS
|
|
||||||
* Tie::DBI
|
|
||||||
|
|
||||||
=head1 AUTHOR
|
=head1 AUTHOR
|
||||||
|
|
||||||
Roan Horning <roan.horning@no-spam.gmail.com>
|
Roan Horning <roan.horning@no-spam.gmail.com>
|
||||||
|
|
||||||
=head1 LICENSE
|
=head1 LICENSE
|
||||||
|
|
||||||
site-generator -- a static website generator for HPR
|
site-generator -- a static website generator for HPR
|
||||||
Copyright (C) 2022 Roan Horning
|
Copyright (C) 2022 Roan Horning
|
||||||
|
|
||||||
This program is free software: you can redistribute it and/or modify
|
This program is free software: you can redistribute it and/or modify
|
||||||
it under the terms of the GNU Affero General Public License as published by
|
it under the terms of the GNU Affero General Public License as published by
|
||||||
@ -107,332 +99,249 @@ Perl Template Toolkit.
|
|||||||
|
|
||||||
=cut
|
=cut
|
||||||
|
|
||||||
# }}}
|
|
||||||
|
|
||||||
use 5.012;
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
use warnings;
|
||||||
use open ':encoding(UTF-8)';
|
|
||||||
|
|
||||||
use Getopt::Long qw(:config auto_help);
|
use Getopt::Long qw(:config auto_help);
|
||||||
use Pod::Usage;
|
use Pod::Usage;
|
||||||
use Config::Std;
|
use Config::Std;
|
||||||
use Text::CSV_XS;
|
|
||||||
#use HTML::Entities qw(encode_entities_numeric);
|
|
||||||
use HTML::Entities qw(encode_entities);
|
|
||||||
use Date::Calc;
|
|
||||||
use DBI;
|
|
||||||
use DBD::SQLite;
|
|
||||||
use Tie::DBI;
|
|
||||||
use Template;
|
use Template;
|
||||||
use Template::Plugin::Date;
|
|
||||||
use Template::Plugin::DBI;
|
|
||||||
use Template::Plugin::HTML::Strip;
|
|
||||||
|
|
||||||
use Data::Dumper;
|
use Data::Dumper;
|
||||||
|
|
||||||
exit main();
|
exit main();
|
||||||
|
|
||||||
sub main {
|
sub main {
|
||||||
|
|
||||||
# Argument parsing
|
# Argument parsing
|
||||||
my $all;
|
my $all;
|
||||||
my $configuration_path;
|
my $configuration_path;
|
||||||
my $preview;
|
my $preview;
|
||||||
my $verbose;
|
my $verbose;
|
||||||
my $quiet;
|
my $quiet;
|
||||||
GetOptions(
|
GetOptions(
|
||||||
'all' => \$all,
|
'all' => \$all,
|
||||||
'configuration=s' => \$configuration_path,
|
'configuration=s' => \$configuration_path,
|
||||||
'list' => \&print_available_pages,
|
'list' => \&print_available_pages,
|
||||||
'preview' => \$preview,
|
'preview' => \$preview,
|
||||||
'verbose' => \$verbose,
|
'verbose' => \$verbose,
|
||||||
'quiet' => \$quiet,
|
'quiet' => \$quiet,
|
||||||
) or pod2usage(1);
|
) or pod2usage(1);
|
||||||
pod2usage(1) unless @ARGV || $all;
|
pod2usage(1) unless @ARGV || $all;
|
||||||
my (@page_args) = @ARGV;
|
my (@page_args) = @ARGV;
|
||||||
|
|
||||||
if ($quiet) {
|
if ($quiet) {
|
||||||
$verbose = 'quiet';
|
$verbose = 'quiet';
|
||||||
};
|
};
|
||||||
|
|
||||||
if (!$configuration_path) {
|
if (!$configuration_path) {
|
||||||
$configuration_path = "site.cfg";
|
$configuration_path = "site.cfg";
|
||||||
}
|
}
|
||||||
|
|
||||||
my %config;
|
my %config;
|
||||||
if ( -f $configuration_path ) {
|
if ( -f $configuration_path ) {
|
||||||
# Load config file
|
# Load config file
|
||||||
read_config $configuration_path => %config;
|
read_config $configuration_path => %config;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
print STDOUT "Could not read configuration file: $configuration_path\n";
|
print STDOUT "Could not read configuration file: $configuration_path\n";
|
||||||
exit 1;
|
exit 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
my $tt = get_template_html($config{DBI}, $config{app_paths});
|
my $tt = get_template_html($config{DBI}, $config{app_paths});
|
||||||
|
|
||||||
#
|
# If command line option all is set, parse configuration file
|
||||||
# Define a TT² vmethod called 'csv_parse', it takes a scalar value and
|
# for all pages
|
||||||
# returns an arrayref. Also define a filter called 'xml_entity' which
|
if ($all) {
|
||||||
# numerically encodes non-ASCII characters.
|
@page_args = keys %config;
|
||||||
#
|
|
||||||
$tt->context->define_vmethod( 'scalar', 'csv_parse', \&parse_csv );
|
|
||||||
$tt->context->define_filter( 'xml_entity', \&xml_entity );
|
|
||||||
|
|
||||||
# If command line option all is set, parse configuration file
|
# Remove non page sections of the configuration file
|
||||||
# for all pages
|
# from the generated list of pages.
|
||||||
if ($all) {
|
@page_args= grep { $_ ne 'DBI' } @page_args;
|
||||||
@page_args = keys %config;
|
@page_args= grep { $_ ne 'root_template' } @page_args;
|
||||||
|
@page_args= grep { $_ ne 'app_paths' } @page_args;
|
||||||
|
|
||||||
# Remove non page sections of the configuration file
|
};
|
||||||
# from the generated list of pages.
|
foreach my $page_arg (@page_args) {
|
||||||
@page_args= grep { $_ ne 'DBI' } @page_args;
|
my %parsed_arg = parse_page_arg($page_arg);
|
||||||
@page_args= grep { $_ ne 'root_template' } @page_args;
|
if (exists($config{$parsed_arg{'page'}})) {
|
||||||
@page_args= grep { $_ ne 'app_paths' } @page_args;
|
my $page_config = $config{$parsed_arg{'page'}};
|
||||||
|
$page_config->{'page'} = $parsed_arg{'page'};
|
||||||
|
|
||||||
};
|
# Set page's root_template to the default root_template if the
|
||||||
foreach my $page_arg (@page_args) {
|
# page root_template property is not set in the configuration file.
|
||||||
my %parsed_arg = parse_page_arg($page_arg);
|
if (exists $page_config->{'root_template'} == 0) {
|
||||||
if (exists($config{$parsed_arg{'page'}})) {
|
$page_config->{'root_template'} = $config{root_template}{content};
|
||||||
my $page_config = $config{$parsed_arg{'page'}};
|
}
|
||||||
$page_config->{'page'} = $parsed_arg{'page'};
|
|
||||||
|
|
||||||
# Set page's root_template to the default root_template if the
|
# Set all config root_template properties as default page config properties
|
||||||
# page root_template property is not set in the configuration file.
|
# except the previously set root_template content property
|
||||||
if (exists $page_config->{'root_template'} == 0) {
|
my @root_args = grep { $_ ne 'content' } keys %{$config{root_template}};
|
||||||
$page_config->{'root_template'} = $config{root_template}{content};
|
foreach my $root_arg (@root_args) {
|
||||||
}
|
if (exists $page_config->{$root_arg} == 0) {
|
||||||
|
$page_config->{$root_arg} = $config{root_template}{$root_arg};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
# Set all config root_template properties as default page config properties
|
if ($page_config->{'multipage'} && $page_config->{'multipage'} eq 'true') {
|
||||||
# except the previously set root_template content property
|
# Empty arrayref bug fixed, so count is reduced by 1
|
||||||
my @root_args = grep { $_ ne 'content' } keys %{$config{root_template}};
|
# if (scalar @{$parsed_arg{'ids'}} == 1) {
|
||||||
foreach my $root_arg (@root_args) {
|
if (scalar @{$parsed_arg{'ids'}} == 0) {
|
||||||
if (exists $page_config->{$root_arg} == 0) {
|
@{$parsed_arg{'ids'}} = get_ids_from_db($tt, \$page_config);
|
||||||
$page_config->{$root_arg} = $config{root_template}{$root_arg};
|
}
|
||||||
}
|
foreach my $id (@{$parsed_arg{'ids'}}) {
|
||||||
}
|
$page_config->{'id'} = $id;
|
||||||
|
verbose ($verbose, "Generating page: $page_config->{'page'} with id: $id");
|
||||||
if ($page_config->{'multipage'} && $page_config->{'multipage'} eq 'true') {
|
generate_page($tt, \$page_config, $preview);
|
||||||
if (scalar @{$parsed_arg{'ids'}} == 0) {
|
}
|
||||||
@{$parsed_arg{'ids'}} = get_ids_from_db($tt, \$page_config);
|
}
|
||||||
}
|
else {
|
||||||
foreach my $id (@{$parsed_arg{'ids'}}) {
|
verbose ($verbose, "Generating page: $page_config->{'page'}");
|
||||||
$page_config->{'id'} = $id;
|
generate_page($tt, \$page_config, $preview);
|
||||||
verbose ($verbose, "Generating page: $page_config->{'page'} with id: $id");
|
}
|
||||||
generate_page($tt, \$page_config, $preview);
|
}
|
||||||
}
|
else {
|
||||||
}
|
verbose (1, "\nWarning: Page $parsed_arg{'page'} is not defined in the configuration file.");
|
||||||
else {
|
}
|
||||||
verbose ($verbose, "Generating page: $page_config->{'page'}");
|
}
|
||||||
generate_page($tt, \$page_config, $preview);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
verbose (1, "\nWarning: Page $parsed_arg{'page'} is not defined in the configuration file.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
verbose (1, "\nFinished processing the files.");
|
verbose (1, "\nFinished processing the files.");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_template_html {
|
sub get_template_html (\%@) {
|
||||||
# For an HTML based Template file, define the
|
# For an HTML based Template file, define the
|
||||||
# template start and end tags to also function as
|
# template start and end tags to also function as
|
||||||
# HTML comments to make the template file valid HTML.
|
# HTML comments to make the template file valid HTML.
|
||||||
#
|
#
|
||||||
return Template->new(
|
return Template->new({
|
||||||
{ INCLUDE_PATH => $_[1]{templates_path},
|
INCLUDE_PATH => $_[1]{templates_path},
|
||||||
OUTPUT_PATH => $_[1]{output_path},
|
OUTPUT_PATH => $_[1]{output_path},
|
||||||
EVAL_PERL => 1,
|
EVAL_PERL => 1,
|
||||||
START_TAG => '<!--%',
|
START_TAG => '<!--%',
|
||||||
END_TAG => '%-->',
|
END_TAG => '%-->',
|
||||||
PRE_CHOMP => 1,
|
PRE_CHOMP => 1,
|
||||||
POST_CHOMP => 1,
|
POST_CHOMP => 1,
|
||||||
CONSTANTS => {
|
CONSTANTS => {
|
||||||
database => $_[0]{database},
|
database => $_[0]{database},
|
||||||
driver => $_[0]{driver},
|
driver => $_[0]{driver},
|
||||||
user => $_[0]{user},
|
user => $_[0]{user},
|
||||||
password => $_[0]{password},
|
password => $_[0]{password},
|
||||||
}
|
}
|
||||||
}
|
}) || die $Template::ERROR, "\n";
|
||||||
) || die $Template::ERROR, "\n";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub generate_page {
|
sub generate_page {
|
||||||
my ( $tt, $config, $preview ) = @_;
|
my ($tt, $config, $preview) = @_;
|
||||||
my $html;
|
my $html;
|
||||||
if ( !$preview ) {
|
if (!$preview) {
|
||||||
$html = get_filename($$config);
|
$html = get_filename($$config);
|
||||||
}
|
}
|
||||||
$tt->process( $$config->{root_template},
|
$tt->process($$config->{root_template}, $$config, $html)
|
||||||
$$config, $html
|
|| die $tt->error(), "\n";
|
||||||
)
|
|
||||||
|| die $tt->error(), "\n";
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sub verbose {
|
sub verbose {
|
||||||
my ($verbose, $message) = @_;
|
my ($verbose, $message) = @_;
|
||||||
if ($verbose) {
|
if ($verbose) {
|
||||||
if ($verbose ne 'quiet') {
|
if ($verbose ne 'quiet') {
|
||||||
print STDOUT "$message\n";
|
print STDOUT "$message\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
STDOUT->autoflush(1);
|
STDOUT->autoflush(1);
|
||||||
print STDOUT ".";
|
print STDOUT ".";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
sub parse_page_arg {
|
sub parse_page_arg {
|
||||||
my ($page_arg) = @_;
|
my ($page_arg) = @_;
|
||||||
# Split page name from page ids if available.
|
# Split page name from page ids if available.
|
||||||
my ($page, $ids) = split(/=/, $page_arg);
|
my ($page, $ids) = split(/=/, $page_arg);
|
||||||
my @ids;
|
#my @ids = [];
|
||||||
|
my @ids;
|
||||||
|
|
||||||
if(!$ids) {
|
if(!$ids) {
|
||||||
$ids = "";
|
$ids = "";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
# Parse the page ids and push them onto @ids array
|
# Parse the page ids and push them onto @ids array
|
||||||
my @ids_by_comma = split(/\,/, $ids);
|
my @ids_by_comma = split(/\,/, $ids);
|
||||||
foreach my $id_by_comma (@ids_by_comma) {
|
foreach my $id_by_comma (@ids_by_comma) {
|
||||||
my @ids_for_range = split(/\.\./, $id_by_comma);
|
my @ids_for_range = split(/\.\./, $id_by_comma);
|
||||||
if ((scalar @ids_for_range) == 2) {
|
if ((scalar @ids_for_range) == 2) {
|
||||||
push @ids, $ids_for_range[0]..$ids_for_range[1];
|
push @ids, $ids_for_range[0]..$ids_for_range[1];
|
||||||
}
|
}
|
||||||
elsif ((scalar @ids_for_range) == 1) {
|
elsif ((scalar @ids_for_range) == 1) {
|
||||||
push @ids, $ids_for_range[0];
|
push @ids, $ids_for_range[0];
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
verbose (1, "\nWarning: Page $page id range $id_by_comma could not be parsed.");
|
verbose (1, "\nWarning: Page $page id range $id_by_comma could not be parsed.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return ('page' => $page, 'ids' => [@ids]);
|
return ('page' => $page, 'ids' => [@ids]);
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_ids_from_db {
|
sub get_ids_from_db {
|
||||||
# Use a template to generate a string of page identifiers.
|
# Use a template to generate a string of page identifiers.
|
||||||
# The template should return the string in the form of
|
# The template should return the string in the form of
|
||||||
# <comma><identifier><comma><identifier>...
|
# <comma><identifier><comma><identifier>...
|
||||||
#
|
#
|
||||||
my ($tt, $config) = @_;
|
my ($tt, $config) = @_;
|
||||||
my $selected_ids = "";
|
my $selected_ids = "";
|
||||||
my $id_template = "ids-$$config->{'page'}.tpl.html";
|
my $id_template = "ids-$$config->{'page'}.tpl.html";
|
||||||
|
|
||||||
$tt->process($id_template, $$config, \$selected_ids)
|
$tt->process($id_template, $$config, \$selected_ids)
|
||||||
|| die $tt->error(), "\n";
|
|| die $tt->error(), "\n";
|
||||||
|
|
||||||
# Starts with a newline and comma
|
# Starts with a newline and comma
|
||||||
return split(/,/, substr($selected_ids, 2));
|
return split(/,/, substr($selected_ids, 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
sub get_filename {
|
sub get_filename {
|
||||||
my ($config) = @_;
|
my ($config) = @_;
|
||||||
my $filename = "output.html";
|
my $filename = "output.html";
|
||||||
my $base_path = "";
|
my $base_path = "";
|
||||||
|
|
||||||
if ($$config{'filename'}) {
|
if ($$config{'filename'}) {
|
||||||
if (substr($$config{'filename'}, -1) eq '/') {
|
if (substr($$config{'filename'}, -1) eq '/') {
|
||||||
$base_path = $$config{'filename'};
|
$base_path = $$config{'filename'};
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$filename = $$config{'filename'};
|
$filename = $$config{'filename'};
|
||||||
my $padded_index = "";
|
my $padded_index = "";
|
||||||
if (exists $$config{'id'} && $$config{'id'} ne "") {
|
if (exists $$config{'id'} && $$config{'id'} ne "") {
|
||||||
$padded_index = sprintf("%04d", $$config{'id'});
|
$padded_index = sprintf("%04d", $$config{'id'});
|
||||||
}
|
}
|
||||||
$filename =~ s/\[id\]/$padded_index/;
|
$filename =~ s/\[id\]/$padded_index/;
|
||||||
return $filename;
|
return $filename;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
# Default naming if full filename configuration is not supplied.
|
# Default naming if full filename configuration is not supplied.
|
||||||
if ($$config{'multipage'} && $$config{'multipage'} eq 'true') {
|
if ($$config{'multipage'} && $$config{'multipage'} eq 'true') {
|
||||||
my $padded_index = sprintf("%04d", $$config{'id'});
|
my $padded_index = sprintf("%04d", $$config{'id'});
|
||||||
$filename = "$base_path$$config{'page'}${padded_index}.html";
|
$filename = "$base_path$$config{'page'}${padded_index}.html";
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
$filename = "$base_path$$config{'page'}.html";
|
$filename = "$base_path$$config{'page'}.html";
|
||||||
}
|
}
|
||||||
return $filename;
|
return $filename;
|
||||||
}
|
}
|
||||||
|
|
||||||
sub print_available_pages {
|
sub print_available_pages {
|
||||||
# Load config file
|
# Load config file
|
||||||
read_config "site.cfg" => my %config;
|
read_config "site.cfg" => my %config;
|
||||||
|
|
||||||
my @page_args = sort ( keys %config );
|
my @page_args = sort (keys %config);
|
||||||
|
|
||||||
# Remove non page sections of the configuration file
|
# Remove non page sections of the configuration file
|
||||||
# from the generated list of pages.
|
# from the generated list of pages.
|
||||||
@page_args = grep { $_ ne 'DBI' } @page_args;
|
@page_args= grep { $_ ne 'DBI' } @page_args;
|
||||||
@page_args = grep { $_ ne 'root_template' } @page_args;
|
@page_args= grep { $_ ne 'root_template' } @page_args;
|
||||||
|
|
||||||
foreach my $page_arg (@page_args) {
|
foreach my $page_arg (@page_args) {
|
||||||
print "$page_arg\n";
|
print "$page_arg\n";
|
||||||
}
|
}
|
||||||
exit;
|
exit;
|
||||||
}
|
}
|
||||||
|
|
||||||
#=== FUNCTION ================================================================
|
|
||||||
# NAME: parse_csv
|
|
||||||
# PURPOSE: Parses a simple string containing CSV data
|
|
||||||
# PARAMETERS: $csv_in CSV string
|
|
||||||
# RETURNS: An arrayref containing the parsed CSV elements
|
|
||||||
# DESCRIPTION: The Text::CSV_XS module instance is created with the option
|
|
||||||
# 'allow_whitespace' to be forgiving of any spaces around the
|
|
||||||
# CSV elements and to strip them. Also, 'allow_loose_quotes' is
|
|
||||||
# forgiving of really messed up CSV. The 'binary' option
|
|
||||||
# permits any characters in the tags (expecting Unicode).
|
|
||||||
# The fields parsed from the tag string is checked for the
|
|
||||||
# existence of utf8 characters and encoded to ensure any found
|
|
||||||
# are properly stored.
|
|
||||||
# THROWS: No exceptions
|
|
||||||
# COMMENTS: None
|
|
||||||
# SEE ALSO: N/A
|
|
||||||
#===============================================================================
|
|
||||||
sub parse_csv {
|
|
||||||
my ($csv_in) = @_;
|
|
||||||
|
|
||||||
my $csv = Text::CSV_XS->new(
|
|
||||||
{ binary => 1,
|
|
||||||
auto_diag => 1,
|
|
||||||
allow_whitespace => 1,
|
|
||||||
allow_loose_quotes => 1
|
|
||||||
}
|
|
||||||
);
|
|
||||||
my $status = $csv->parse($csv_in);
|
|
||||||
unless ( $status ) {
|
|
||||||
warn "Failed to parse CSV '$csv_in'\n" ;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
my @fields = $csv->fields();
|
|
||||||
|
|
||||||
@fields = map {utf8::encode($_) if utf8::is_utf8($_); $_} @fields;
|
|
||||||
|
|
||||||
return \@fields;
|
|
||||||
}
|
|
||||||
|
|
||||||
#=== FUNCTION ================================================================
|
|
||||||
# NAME: xml_entity
|
|
||||||
# PURPOSE: Static filter to encode Unicode for XML
|
|
||||||
# PARAMETERS: $text String to be processed
|
|
||||||
# RETURNS: Processed text
|
|
||||||
# DESCRIPTION:
|
|
||||||
# THROWS: No exceptions
|
|
||||||
# COMMENTS: None
|
|
||||||
# SEE ALSO: N/A
|
|
||||||
#===============================================================================
|
|
||||||
sub xml_entity {
|
|
||||||
my ($text) = @_;
|
|
||||||
|
|
||||||
# encode_entities_numeric( $text );
|
|
||||||
encode_entities( $text );
|
|
||||||
|
|
||||||
return $text;
|
|
||||||
}
|
|
||||||
|
|
||||||
# vim: syntax=perl:ts=8:sw=4:et:ai:tw=78:fo=tcrqn21:fdm=marker
|
|
||||||
|
119
site.cfg
119
site.cfg
@ -29,7 +29,6 @@ content: page.tpl.html
|
|||||||
#baseurl: OPTIONAL [i.e. file://<full path to local website directory>]
|
#baseurl: OPTIONAL [i.e. file://<full path to local website directory>]
|
||||||
#baseurl: file:///home/roan/Development/hpr/website/hpr_generator/public_html/
|
#baseurl: file:///home/roan/Development/hpr/website/hpr_generator/public_html/
|
||||||
baseurl: https://hackerpublicradio.org/
|
baseurl: https://hackerpublicradio.org/
|
||||||
http_baseurl: http://hackerpublicradio.org/
|
|
||||||
hub_baseurl: https://hub.hackerpublicradio.org/
|
hub_baseurl: https://hub.hackerpublicradio.org/
|
||||||
media_baseurl: https://archive.org/download/hpr$eps_id/
|
media_baseurl: https://archive.org/download/hpr$eps_id/
|
||||||
generator_name: The HPR Robot
|
generator_name: The HPR Robot
|
||||||
@ -69,6 +68,10 @@ navigation: navigation-about.tpl.html
|
|||||||
content: content-correspondents.tpl.html
|
content: content-correspondents.tpl.html
|
||||||
filename: correspondents/index.html
|
filename: correspondents/index.html
|
||||||
|
|
||||||
|
[contact]
|
||||||
|
navigation: navigation-about.tpl.html
|
||||||
|
content: content-contact.tpl.html
|
||||||
|
|
||||||
[correspondent]
|
[correspondent]
|
||||||
navigation: navigation-about.tpl.html
|
navigation: navigation-about.tpl.html
|
||||||
content: content-correspondent.tpl.html
|
content: content-correspondent.tpl.html
|
||||||
@ -101,10 +104,50 @@ filename: eps/hpr[id]/index.html
|
|||||||
navigation: navigation-get-shows.tpl.html
|
navigation: navigation-get-shows.tpl.html
|
||||||
content: content-syndication.tpl.html
|
content: content-syndication.tpl.html
|
||||||
|
|
||||||
|
[contribute]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-contribute.tpl.html
|
||||||
|
|
||||||
[search]
|
[search]
|
||||||
navigation: navigation-main.tpl.html
|
navigation: navigation-main.tpl.html
|
||||||
content: content-search.tpl.html
|
content: content-search.tpl.html
|
||||||
|
|
||||||
|
[help_out]
|
||||||
|
navigation: navigation-contribute.tpl.html
|
||||||
|
content: content-help_out.tpl.html
|
||||||
|
|
||||||
|
[download]
|
||||||
|
navigation: navigation-get-shows.tpl.html
|
||||||
|
content: content-download.tpl.html
|
||||||
|
|
||||||
|
[stuff_you_need_to_know]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-stuff_you_need_to_know.tpl.html
|
||||||
|
|
||||||
|
[theme]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-theme.tpl.html
|
||||||
|
|
||||||
|
[requested_topics]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-requested_topics.tpl.html
|
||||||
|
|
||||||
|
[recording]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-recording.tpl.html
|
||||||
|
|
||||||
|
[request_a_slot]
|
||||||
|
navigation: navigation-give-shows.tpl.html
|
||||||
|
content: content-request_a_slot.tpl.html
|
||||||
|
|
||||||
|
[podcatchers]
|
||||||
|
navigation: navigation-contribute.tpl.html
|
||||||
|
content: content-podcatchers.tpl.html
|
||||||
|
|
||||||
|
[promote]
|
||||||
|
navigation: navigation-about.tpl.html
|
||||||
|
content: content-promote.tpl.html
|
||||||
|
|
||||||
[sitemap]
|
[sitemap]
|
||||||
navigation: navigation-about.tpl.html
|
navigation: navigation-about.tpl.html
|
||||||
content: content-sitemap.tpl.html
|
content: content-sitemap.tpl.html
|
||||||
@ -128,43 +171,43 @@ content: content-mumble-howto.tpl.html
|
|||||||
navigation: navigation-about.tpl.html
|
navigation: navigation-about.tpl.html
|
||||||
content: content-comments_viewer.tpl.html
|
content: content-comments_viewer.tpl.html
|
||||||
|
|
||||||
[hpr_ogg]
|
# [hpr_ogg]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr.tpl.xml
|
# content: rss-hpr.tpl.xml
|
||||||
filename: hpr_ogg.rss
|
# filename: hpr_ogg.rss
|
||||||
media_file_extension: ogg
|
# media_file_extension: ogg
|
||||||
|
#
|
||||||
[hpr_mp3]
|
# [hpr_mp3]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr.tpl.xml
|
# content: rss-hpr.tpl.xml
|
||||||
filename: hpr_mp3.rss
|
# filename: hpr_mp3.rss
|
||||||
media_file_extension: mp3
|
# media_file_extension: mp3
|
||||||
audio_mime_type: mpeg
|
# audio_mime_type: mpeg
|
||||||
|
#
|
||||||
[hpr_spx]
|
# [hpr_spx]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr.tpl.xml
|
# content: rss-hpr.tpl.xml
|
||||||
filename: hpr_spx.rss
|
# filename: hpr_spx.rss
|
||||||
media_file_extension: spx
|
# media_file_extension: spx
|
||||||
|
#
|
||||||
[hpr_total_ogg]
|
# [hpr_total_ogg]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr_total.tpl.xml
|
# content: rss-hpr_total.tpl.xml
|
||||||
filename: hpr_total_ogg.rss
|
# filename: hpr_total_ogg.rss
|
||||||
media_file_extension: ogg
|
# media_file_extension: ogg
|
||||||
|
#
|
||||||
[hpr_total_mp3]
|
# [hpr_total_mp3]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr_total.tpl.xml
|
# content: rss-hpr_total.tpl.xml
|
||||||
filename: hpr_total_mp3.rss
|
# filename: hpr_total_mp3.rss
|
||||||
media_file_extension: mp3
|
# media_file_extension: mp3
|
||||||
audio_mime_type: mpeg
|
# audio_mime_type: mpeg
|
||||||
|
#
|
||||||
[hpr_total_spx]
|
# [hpr_total_spx]
|
||||||
root_template: rss.tpl.xml
|
# root_template: rss.tpl.xml
|
||||||
content: rss-hpr_total.tpl.xml
|
# content: rss-hpr_total.tpl.xml
|
||||||
filename: hpr_total_spx.rss
|
# filename: hpr_total_spx.rss
|
||||||
media_file_extension: spx
|
# media_file_extension: spx
|
||||||
|
|
||||||
[comments]
|
[comments]
|
||||||
root_template: rss-comments.tpl.xml
|
root_template: rss-comments.tpl.xml
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1><a href="<!--% absolute_path(baseurl) %-->eps/hpr<!--% zero_pad_left(item.eps_id) %-->/index.html#comment_<!--% item.comment_id %-->"><!--% item.comment_author_name %--> says</a>: <!--% item.comment_title %--></h1>
|
<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><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>
|
</p>
|
||||||
</header>
|
</header>
|
||||||
|
21
templates/content-contact.tpl.html
Normal file
21
templates/content-contact.tpl.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h1>Contact</h1>
|
||||||
|
</header>
|
||||||
|
<p>We are always looking for more hosts...</p>
|
||||||
|
<ul>
|
||||||
|
<li>email: <strong>admin -at- hackerpublicradio org</strong><br />
|
||||||
|
<em>As an anti-spam measure you will get an error back but we do get your email.</em></li>
|
||||||
|
<li>Website: <a href="http://www.www.hackerpublicradio.org" target="_blank">www.www.hackerpublicradio.org</a></li>
|
||||||
|
<li>Mailist: <a href="http://www.hackerpublicradio.org/maillist" target="_blank">Maillist</a></li>
|
||||||
|
<li><a href="https://web.libera.chat/gamja/?channels=oggcastplanet" target="_blank">#oggcastplanet</a></li>
|
||||||
|
<li><a href="https://www.facebook.com/home.php?sk=group_130169220378872¬if_t=group_r2j" target="_blank">Facebook</a></li>
|
||||||
|
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
|
||||||
|
<li><a href="http://itunes.apple.com/us/podcast/hacker-public-radio/id281699640" target="_blank">iTunes</a></li>
|
||||||
|
</ul>
|
||||||
|
<h2>Mail List</h2>
|
||||||
|
<p>
|
||||||
|
HPR is governed by the community, so decisions about how Hacker Public Radio should be run are made on the mailing list you can join it by going to :<br />
|
||||||
|
<a href="http://www.hackerpublicradio.org/maillist">http://www.hackerpublicradio.org/maillist</a>
|
||||||
|
</p>
|
||||||
|
</article>
|
87
templates/content-contribute.tpl.html
Normal file
87
templates/content-contribute.tpl.html
Normal file
@ -0,0 +1,87 @@
|
|||||||
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
|
<!--% FOREACH correspondents IN DBI.query('
|
||||||
|
SELECT COUNT(hostid) AS \'tally\' FROM hosts;
|
||||||
|
') %-->
|
||||||
|
<h1>So you want to do a podcast ?</h1>
|
||||||
|
<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 a podcast released. We take care of the hard bits so you don't need to. Recording your first show is always a daunting prospect but over <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html"><!--% correspondents.tally %--></a> people like yourself have done it and so can you.
|
||||||
|
<!--% END %-->
|
||||||
|
</p>
|
||||||
|
<h2>1. Stuff you need to know</h2>
|
||||||
|
<ul>
|
||||||
|
<li>HPR will stop as a project if there are not enough <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#no_shows_no_hpr">Shows</a>.</li>
|
||||||
|
<li>We do not <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#syndication">syndicate</a> shows not produced for HPR.</li>
|
||||||
|
<li>You are agreeing to <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#license">license</a> your show CC BY-SA 4.0.</li>
|
||||||
|
<li>You have <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#permission">permission</a> to redistribute your show in its entirety.</li>
|
||||||
|
<li>Your audio will <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#not_moderated">not be moderated.</a></li>
|
||||||
|
<li>Your show will be signaled as containing <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#explicit">explicit</a> content.</li>
|
||||||
|
<li>You determine where in the <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#schedule">schedule</a> your show will be released.</li>
|
||||||
|
<li>We use <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#utf8">UTF-8</a> end to end.</li>
|
||||||
|
<li>Your show will be heard by an <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#international">International</a> Audience.</li>
|
||||||
|
<li>We also need <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#emergency_queue">emergency</a> shows.</li>
|
||||||
|
<li>You will no longer be allowed to edit HPR pages on <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html#wikipedia">Wikipedia</a>.</li>
|
||||||
|
</ul>
|
||||||
|
<p>
|
||||||
|
<a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html">More information.</a>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>2. Select a Topic</h2>
|
||||||
|
<p>
|
||||||
|
The first thing you will need to do is decide on a topic for your show. You might already have an idea but if not you can have a look at our <a href="<!--% absolute_path(baseurl) %-->eps/index.html">Archive</a> page for examples of shows people have recorded in the past. You can also look at our <a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Requested Topics</a>, or our <a href="<!--% absolute_path(baseurl) %-->series/index.html">Series</a> page to see if you can add your knowledge to the pool.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
If you are <a href="<!--% absolute_path(baseurl) %-->will-my-show-be-of-interest-to-hackers.html">worried that your show may not be of interest to Hackers then follow this link</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_path(baseurl) %-->series/0029.html">how you got into tech</a> as a way to introducing yourself to the community.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>3. Record your show</h2>
|
||||||
|
<p>
|
||||||
|
Please select <a href="<!--% absolute_path(baseurl) %-->recording.html">more detailed information on how to record a show</a>:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<!-- <li>Recording with the <a href="<!--% absolute_path(baseurl) %-->recording.html#callin_numbers">telephone</a>.</li> -->
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#portable_media_player">Recording with a portable media player</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#smart_phone">Recording with a smart phone</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#editing">Recording/Editing using your Computer</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#phone_interviews">Recording Interviews with the Phone</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#round_table">Recording round table discussions</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#background_music">Avoid Bedding/background music</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#encoding">We mix down to Mono</a>.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html#no_metadata">No need to add Metadata</a> to the file.</li>
|
||||||
|
</ul>
|
||||||
|
<p>Don't forget to <strong>introduce yourself</strong> in your show.</p>
|
||||||
|
|
||||||
|
<h2>4. Upload your show</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 <strong><a href="<!--% hub_baseurl %-->calendar.php">⇧Upload⇧</strong></a> button.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
After you have selected a date you will be redirected to the <a href="https://www.hackerpublicradio.org/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_path(baseurl) %-->request_a_slot.html">More Information</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2>Questions ?</h2>
|
||||||
|
<p>
|
||||||
|
Got any questions not covered here, then just email <strong>"admin" at "www.hackerpublicradio.org"</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">freenode.net</a> network. Follow us on <a href="https://identi.ca/group/hpr">identi.ca</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/home.php?sk=group_130169220378872">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>Still Nervous</h2>
|
||||||
|
<p>
|
||||||
|
Fellow listeners like yourself contribute the shows and so we all know how hard it is to do that first show. You're probably worried that we won't like the topic. Well don't be, have a look at our <a href="<!--% absolute_path(baseurl) %-->eps/index.html">archive</a> to see how diverse the contributions have been. You're probably worried about the quality of your audio, that you sound funny, that English isn't your native language, that you suffer from a speech impediment, that your show has loads of ummms and awws in it, well don't be. 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 not the quality of the audio. That's not to say we won't help you with ways to improve the audio if you wish, or narrate your script if you can't or won't record it yourself. Drop into the IRC channel <a href="https://web.libera.chat/gamja/?channels=oggcastplanet">#oggcastplanet</a> where there are people who will help.<br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="motto">Our Mottos</h2>
|
||||||
|
<blockquote>Any audio is better than no audio.</blockquote>
|
||||||
|
<blockquote>Any topic of intrest to hackers.</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 freenode and chat with a live person 24/7.
|
||||||
|
</p>
|
||||||
|
|
@ -33,7 +33,7 @@
|
|||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email, hosts.profile,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
FROM twat_eps AS eps
|
FROM twat_eps AS eps
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
@ -58,7 +58,6 @@
|
|||||||
<p><!--% get_avatar(this_host.hostid, this_host.host) %--><br>
|
<p><!--% get_avatar(this_host.hostid, this_host.host) %--><br>
|
||||||
<label>Host ID</label>: <!--% this_host.hostid %--><br><br>
|
<label>Host ID</label>: <!--% this_host.hostid %--><br><br>
|
||||||
<label>email:</label> <u><!--% this_host.email %--></u><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>
|
<label>episodes:</label> <strong><!--% hpr_show_count + twat_show_count %--></strong>
|
||||||
</p>
|
</p>
|
||||||
<!--% FOREACH hpr_show IN hpr_shows; %-->
|
<!--% FOREACH hpr_show IN hpr_shows; %-->
|
||||||
@ -72,4 +71,4 @@
|
|||||||
<p class="listen-in"><!--% display_listen_in(twat_show.id,"twat") %--></p>
|
<p class="listen-in"><!--% display_listen_in(twat_show.id,"twat") %--></p>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
</article>
|
</article>
|
||||||
<p><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
<p><a href="contribute.html">Become a Correspondent</a></p>
|
||||||
|
@ -2,7 +2,7 @@
|
|||||||
<!--% PROCESS 'shared-avatar.tpl.html' %-->
|
<!--% PROCESS 'shared-avatar.tpl.html' %-->
|
||||||
<article>
|
<article>
|
||||||
<h2 class="title">Correspondents</h2>
|
<h2 class="title">Correspondents</h2>
|
||||||
<p>For more information on how to become a Correspondent see our <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">contribute</a></center> page. To add a logo here, either email one to admin at hpr or setup your email on <a href="https://en.gravatar.com/">Gravatar</a>. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.<p />
|
<p>For more information on how to become a Correspondent see our <a href="<!--% absolute_path(baseurl) %-->contribute.html">contribute</a></center> page. To add a logo here, either email one to admin at hpr or setup your email on <a href="https://en.gravatar.com/">Gravatar</a>. To protect your browsing privacy we gather the images every hour and serve them directly from HPR.<p />
|
||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
<!--% host_cnt = 0 %-->
|
<!--% host_cnt = 0 %-->
|
||||||
<table class="hosts">
|
<table class="hosts">
|
||||||
@ -29,5 +29,5 @@
|
|||||||
</tr><!--% host_cnt = host_cnt + 1 %-->
|
</tr><!--% host_cnt = host_cnt + 1 %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
</table>
|
</table>
|
||||||
<p><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Become a Correspondent</a></p>
|
<p><a href="<!--% absolute_path(baseurl) %-->contribute.html">Become a Correspondent</a></p>
|
||||||
</article>
|
</article>
|
||||||
|
57
templates/content-download.tpl.html
Normal file
57
templates/content-download.tpl.html
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h1>Download Archive</h1>
|
||||||
|
<p>Please be aware that our Archive exceeds <strong>62Gb</strong> <em>(Ogg: 21Gb, Spx: 16Gb, mp3: 25Gb)</em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p>
|
||||||
|
<p>We will be happy to post you DVD's of the episodes anywhere in the world if bandwidth is an issue.</p>
|
||||||
|
</header>
|
||||||
|
<h2>Full Episode Guide</h2>
|
||||||
|
<p>
|
||||||
|
The <a href="<!--% 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>
|
||||||
|
<ul>
|
||||||
|
<li>ogg:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].ogg' -o "hpr#1.ogg"</span></li>
|
||||||
|
<li>spx:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].spx' -o "hpr#1.spx"</span></li>
|
||||||
|
<li>mp3:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].mp3' -o "hpr#1.mp3"</span></li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<h2>Full RSS feed, BitTorrent and Magnet links</h2>
|
||||||
|
<p>The full rss feed is updated daily and contains the complete show note with links to supporting articles. The torrent/magnet also contains this information and is a snaphot of the archive taken between 2007 and November 2013. </p>
|
||||||
|
<ul>
|
||||||
|
<li><span style="font-family:monospace;">ogg: <a href="hpr_total_ogg_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Ogg-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:390C66903BBB2B6A067C438C70B2E90988AA8207&dn=HPR-Ogg-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
<li><span style="font-family:monospace;">spx: <a href="hpr_total_spx_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:E2573BEF0209B8C2E3C7908BAF220EC34D4A5B8E&dn=HPR-Speex-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
<li><span style="font-family:monospace;">mp3: <a href="hpr_total_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:6E9492AD78BCCA2B8D6A42C9C0BCAB0E6FA778F8&dn=HPR-Mp3-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
</ul>
|
||||||
|
<h3>Direct download of the remaining shows</h3>
|
||||||
|
<p>
|
||||||
|
You can download the remaining episodes since the torrent was created directly from the command line using the following commands:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>ogg:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].ogg' -o "hpr#1.ogg"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>spx:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].spx' -o "hpr#1.spx"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>mp3:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].mp3' -o "hpr#1.mp3"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<footer>
|
||||||
|
<p>Big to DeepGeek and the team for providing the BitTorrent service.</p>
|
||||||
|
</footer>
|
||||||
|
</article>
|
@ -21,7 +21,6 @@ Hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pa
|
|||||||
<!--% display_tags(episode.tags) %-->
|
<!--% display_tags(episode.tags) %-->
|
||||||
|
|
||||||
<label>Comments: </label><!--% display_comments_tally(episode.id, episode.eps_tally) %--> <br>
|
<label>Comments: </label><!--% display_comments_tally(episode.id, episode.eps_tally) %--> <br>
|
||||||
The show is available on the Internet Archive at: <a href="https://archive.org/details/hpr<!--% zero_pad_left(episode.id) %-->">https://archive.org/details/hpr<!--% zero_pad_left(episode.id) %--></a>
|
|
||||||
<!--% listen_now(episode, "hpr", baseurl, media_baseurl) %-->
|
<!--% listen_now(episode, "hpr", baseurl, media_baseurl) %-->
|
||||||
</p>
|
</p>
|
||||||
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
|
<h3><!--% show_series(episode.series, episode.seriesid, "Part of the series") %--></h3>
|
||||||
@ -54,7 +53,7 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
|||||||
<!--% comment_index = 1 %-->
|
<!--% comment_index = 1 %-->
|
||||||
<!--% comments_result = query_comments.execute(id) %-->
|
<!--% comments_result = query_comments.execute(id) %-->
|
||||||
<!--% FOREACH comment IN comments_result %-->
|
<!--% FOREACH comment IN comments_result %-->
|
||||||
<h5 id="comment_<!--% comment.id %-->"><a href="/eps/hpr<!--% zero_pad_left(episode.id) %-->/index.html#comment_<!--% comment.id %-->">Comment #<!--% comment_index %--></a> posted on <!--% comment.comment_timestamp %--> by <!--% comment.comment_author_name %--></h5>
|
<h5 id="comment_<!--% comment.id %-->">Comment #<!--% comment_index %--> posted on <!--% comment.comment_timestamp %--> by <!--% comment.comment_author_name %--></h5>
|
||||||
<h4><!--% comment.comment_title %--></h4>
|
<h4><!--% comment.comment_title %--></h4>
|
||||||
<!--% comment.comment_text FILTER html_para %-->
|
<!--% comment.comment_text FILTER html_para %-->
|
||||||
<!--% comment_index = comment_index + 1 %-->
|
<!--% comment_index = comment_index + 1 %-->
|
||||||
@ -63,11 +62,11 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
|||||||
<h2>Leave Comment</h2>
|
<h2>Leave Comment</h2>
|
||||||
<p>
|
<p>
|
||||||
<strong>Note to Verbose Commenters</strong><br />
|
<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_path(baseurl) %-->contribute.html">record</a> a response show instead.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<strong>Note to Spammers</strong><br />
|
<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_path(baseurl) %-->contribute.html">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>
|
</p>
|
||||||
<form method="POST" action="<!--% hub_baseurl %-->comment_confirm.php">
|
<form method="POST" action="<!--% hub_baseurl %-->comment_confirm.php">
|
||||||
<fieldset>
|
<fieldset>
|
||||||
@ -88,7 +87,7 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
|||||||
<tr>
|
<tr>
|
||||||
<td>Anti Spam Question:</td>
|
<td>Anti Spam Question:</td>
|
||||||
<td>
|
<td>
|
||||||
What does the letter <strong>P</strong> in <em>HPR</em> stand for? <br />
|
What does the letter<strong>P</strong> in <em>HPR</em> stand for? <br />
|
||||||
<input required type="text" name="anti_spam_question" size="50" maxlength="100" placeholder="Type out what the P in HPR stands for."></td>
|
<input required type="text" name="anti_spam_question" size="50" maxlength="100" placeholder="Type out what the P in HPR stands for."></td>
|
||||||
</tr>
|
</tr>
|
||||||
<!--% IF in_window %-->
|
<!--% IF in_window %-->
|
||||||
@ -110,7 +109,7 @@ Subscribe to the comments <a href="<!--% absolute_path(baseurl) %-->comments.rss
|
|||||||
</tr>
|
</tr>
|
||||||
<!-- . -->
|
<!-- . -->
|
||||||
<tr>
|
<tr>
|
||||||
<td>What is the <strong>HOST_ID</strong> for the host of this show?</td>
|
<td>Who hosted this show?</td>
|
||||||
<td>
|
<td>
|
||||||
<input required type="text" name="hostid" size="20" maxlength="5" placeholder="Type the host number"></td>
|
<input required type="text" name="hostid" size="20" maxlength="5" placeholder="Type the host number"></td>
|
||||||
<td>
|
<td>
|
||||||
|
@ -16,8 +16,8 @@
|
|||||||
<h2 id="twat_episodes">Today With a Techie Archived Shows</h2>
|
<h2 id="twat_episodes">Today With a Techie Archived Shows</h2>
|
||||||
<p>
|
<p>
|
||||||
<!-- Creative Commons License -->
|
<!-- Creative Commons License -->
|
||||||
<a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="https://creativecommons.org/images/public/somerights20.png" width="88" height="31" /></a><br>The following work is licensed under a <a rel="license" href="https://creativecommons.org/licenses/by-nc-sa/2.5/">Creative Commons Attribution-NonCommercial-ShareAlike 2.5 License</a>.</p>
|
<a rel="license" href="http://creativecommons.org/licenses/by-nc-sa/2.5/"><img alt="Creative Commons License" border="0" src="http://creativecommons.org/images/public/somerights20.png" width="88" height="31" /></a><br>The following work is licensed under a <a rel="license" href="http://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>
|
<p>T.W.A.T. 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('
|
<!--% FOREACH twat_episode IN DBI.query('
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
|
11
templates/content-help_out.tpl.html
Normal file
11
templates/content-help_out.tpl.html
Normal file
@ -0,0 +1,11 @@
|
|||||||
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
<h1>Help Out.</h1>
|
||||||
|
<h2>Submit a show</h2>
|
||||||
|
<p>One of the best ways to help out is to <a href="<!--% absolute_path(baseurl) %-->contribute.html">contribute a show</a>. You can find out <a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html">everything you need to know here</a>. </p>
|
||||||
|
<h2>Suggest Topics</h2>
|
||||||
|
<p>If there is a technical topic you would like us to cover, or if you are looking for topics to record a show on, then look no further than our <a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Requested topics</a> page.</p>
|
||||||
|
<h2>Podcatcher Support</h2>
|
||||||
|
<p>
|
||||||
|
Please report your experiences with our feeds to admin@hpr. We maintain a podcatcher <a href="<!--% absolute_path(baseurl) %-->podcatchers.html">compatibility list.</a>
|
||||||
|
</p>
|
||||||
|
|
@ -1 +1,2 @@
|
|||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
|
||||||
|
@ -11,36 +11,34 @@
|
|||||||
<!--% img_re = '(?six)^(.*?)\<img ([^\>]+\>)(.+)$' %-->
|
<!--% img_re = '(?six)^(.*?)\<img ([^\>]+\>)(.+)$' %-->
|
||||||
<!--% lazy_re = '(?i)loading="lazy"' %-->
|
<!--% lazy_re = '(?i)loading="lazy"' %-->
|
||||||
<!--% WHILE (matches = lines.match(img_re)) %-->
|
<!--% WHILE (matches = lines.match(img_re)) %-->
|
||||||
<!--% img_tag = matches.1 %-->
|
<!--% img_tag = matches.1 %-->
|
||||||
<!--% after_html = matches.2 %-->
|
<!--% after_html = matches.2 %-->
|
||||||
<!--% matches.0 %-->
|
<!--% matches.0 %-->
|
||||||
<!--% IF (img_tag.search(lazy_re)) %-->
|
<!--% IF (img_tag.search(lazy_re)) %-->
|
||||||
<img <!--% img_tag %-->
|
<img <!--% img_tag %-->
|
||||||
<!--% ELSE %-->
|
<!--% ELSE %-->
|
||||||
<img loading="lazy" <!--% img_tag %-->
|
<img loading="lazy" <!--% img_tag %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% lines = after_html %-->
|
<!--% lines = after_html %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% after_html %-->
|
<!--% after_html %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<hr>
|
<hr>
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h3>Welcome to HPR, the Community Podcast</h3>
|
<h3>Welcome to HPR the Community Podcast</h3>
|
||||||
</header>
|
</header>
|
||||||
<!--% days_till_next_episode = 0 %-->
|
<!--% days_till_next_episode = 0 %-->
|
||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
|
<!--% FOREACH next_available_episode_result IN DBI.query(query_next_available_episode)
|
||||||
|
%-->
|
||||||
<!--% USE date %-->
|
<!--% USE date %-->
|
||||||
<!--% calc = date.calc %-->
|
<!--% calc = date.calc %-->
|
||||||
<!--% episodes = DBI.query(query_next_available_episode).get_all() %-->
|
<!--% days_till_next_episode = calc.Delta_Days(date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d'),next_available_episode_result.last_year,next_available_episode_result.last_month,next_available_episode_result.last_day) %-->
|
||||||
<!--% last_date = episodes.0.date.split('-') %-->
|
<!--% END %-->
|
||||||
<!--% offset = (calc.Day_of_Week(last_date.0,last_date.1,last_date.2) == 5 ? 3 : 1) %-->
|
<!--% USE date %-->
|
||||||
<!--% slot_date = calc.Add_Delta_Days(last_date.0,last_date.1,last_date.2,offset) %-->
|
|
||||||
<!--% now = calc.Today() %-->
|
|
||||||
<!--% days_till_next_episode = calc.Delta_Days(now.0,now.1,now.2,slot_date.0,slot_date.1,slot_date.2) %-->
|
|
||||||
|
|
||||||
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
|
<!--% delta = date.calc.N_Delta_YMD(2005,9,19, date.format(date.now, '%Y'),date.format(date.now, '%m'),date.format(date.now, '%d')) %-->
|
||||||
<p>We started producing shows as <a href="<!--% absolute_path(baseurl) %-->eps/index.html#twat_episodes"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. Our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topics</a> that <strong>"are of interest to <a href="https://en.wikipedia.org/wiki/hacker_(hobbyist)">hackers</a>"</strong>. If you listen to HPR then please consider contributing one show a year. If you <a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">record</a> your show now it could be <a href="<!--% hub_baseurl %-->calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p>
|
<p>We started producing shows as <a href="<!--% absolute_path(baseurl) %-->eps/index.html#twat_episodes"><em>Today with a Techie</em></a> on 2005-09-19, <!--% delta.0 %--> years, <!--% delta.1 %--> months, <!--% delta.2 %--> days ago. our shows are produced by <a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">listeners</a> like you and can be on any <a href="<!--% absolute_path(baseurl) %-->eps/index.html">topic</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_path(baseurl) %-->contribute.html">record</a> your show now it could be <a href="<!--% hub_baseurl %-->calendar.php">released</a> in <strong><!--% days_till_next_episode %--></strong> days.</p>
|
||||||
</article>
|
</article>
|
||||||
<!--% display_call_for_shows() %-->
|
<!--% display_call_for_shows() %-->
|
||||||
<hr>
|
<hr>
|
||||||
|
151
templates/content-podcatchers.tpl.html
Normal file
151
templates/content-podcatchers.tpl.html
Normal file
@ -0,0 +1,151 @@
|
|||||||
|
<h1>Podcast Clients Test Status</h1>
|
||||||
|
<table style="width:100%">
|
||||||
|
<caption></caption>
|
||||||
|
<tr>
|
||||||
|
<th>Name</th>
|
||||||
|
<th>MP3</th>
|
||||||
|
<th>OGG</th>
|
||||||
|
<th>SPX</th>
|
||||||
|
<th>HTML</th>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>gPodder</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Bashpodder</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>podget</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Akregator</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>BeyondPod</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>AntennaPod, Version 1.5.2.0</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>Reading the itunes:summary which has no html.<br />Should we also enable html here as well - how to fix the 4k limit ?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>PodKicker Pro for Android</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>FAIL</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>pocketcasts</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>FAIL</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Podlisten</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Soundwaves</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>Podax</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>PodKicker Pro</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>FAIL</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>RssDemon</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>newsbeuter</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>iTunes</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>VLC</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://github.com/jgoerzen/hpodder/wiki">hpodder</a></td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td><a href="https://play.google.com/store/apps/details?id=com.podkicker">PodKicker Pro for Android</a></td>
|
||||||
|
<td>OK</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>OK</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
<td>?</td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
23
templates/content-promote.tpl.html
Normal file
23
templates/content-promote.tpl.html
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
<article>
|
||||||
|
<header>
|
||||||
|
<h1>Please promote HPR</h1>
|
||||||
|
</header>
|
||||||
|
<p>Feel free to use the promotional material to spread the word in your podcasts, or have them played on to other shows.</p>
|
||||||
|
<h2>General HPR promotion</h2>
|
||||||
|
<ul>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->media/promos/HPRpromoKlaatu.ogg">Klaatu explains HPR Daily podcast by the www.hackerpublicradio.org Community for the www.hackerpublicradio.org Community</a></li>
|
||||||
|
<!--<li><a href="../media/promos/HPRpromoNewsCast.ogg">A News Caster tells us about HPR</a></li>
|
||||||
|
<li><a href="../media/promos/HPRpromoSkirlet.ogg">Skirlet tells us we need to listen to HPR</a></li>-->
|
||||||
|
</ul>
|
||||||
|
|
||||||
|
<h2>Requests for contributions</h2>
|
||||||
|
<p>
|
||||||
|
<ul>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->media/promos/Jude-aka-Mrs_Peter64_HPR-needs-shows.flac">Jude Mrs. Peter64 HPR needs shows</a></li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->media/promos/hpr-contributor-promo-sax.ogg">slick0 basenet theme</a></li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->media/promos/hpr-contributor-promo-basenettheme.ogg">slick0 sax roll</a></li>
|
||||||
|
</ul>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</article>
|
@ -35,7 +35,7 @@
|
|||||||
Many of today's <a href="http://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="http://en.wikipedia.org/wiki/WAV">WAV</a> or <a href="http://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.
|
Many of today's <a href="http://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="http://en.wikipedia.org/wiki/WAV">WAV</a> or <a href="http://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>
|
||||||
<p>
|
<p>
|
||||||
Then just record your show, <a href="<!--% absolute_url(baseurl,'request_a_slot.html') %-->">request a slot</a>, and we'll do the rest.
|
Then just record your show, <a href="r<!--% absolute_url(baseurl) %-->equest_a_slot.html">request a slot</a>, and we'll do the rest.
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 id="smart_phone">Recording with a portable media player<a href="#smart_phone">.</a></h2>
|
<h2 id="smart_phone">Recording with a portable media player<a href="#smart_phone">.</a></h2>
|
||||||
@ -55,7 +55,7 @@
|
|||||||
The majority of podcasters use <a href="http://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.
|
The majority of podcasters use <a href="http://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>
|
||||||
<p>
|
<p>
|
||||||
<img width="600" src="<!--% absolute_url(baseurl,'images/contribute-audacity-record.png') %-->" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
<img width="600" src="<!--% absolute_url(baseurl) %-->images/contribute-audacity-record.png" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
||||||
</p>
|
</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>
|
<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 width="640" height="390" src="//www.youtube.com/embed/ss8CyTwBOPY" style="border: none"></iframe>
|
<iframe width="640" height="390" src="//www.youtube.com/embed/ss8CyTwBOPY" style="border: none"></iframe>
|
||||||
@ -70,7 +70,7 @@
|
|||||||
<li>Set <em>Bit depth</em> to <strong>24</strong>.</li>
|
<li>Set <em>Bit depth</em> to <strong>24</strong>.</li>
|
||||||
</ol>
|
</ol>
|
||||||
<p>
|
<p>
|
||||||
<img width="600" src="<!--% absolute_url(baseurl,'images/contribute-audacity-export.png') %-->" alt="Audacity Export Settings" title="Audacity Screenshot of an Export" >
|
<img width="600" src="<!--% absolute_url(baseurl) %-->images/contribute-audacity-export.png" alt="Audacity Export Settings" title="Audacity Screenshot of an Export" >
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 id="phone_interviews">Recording Interviews with the Phone<a href="#phone_interviews">.</a></h2>
|
<h2 id="phone_interviews">Recording Interviews with the Phone<a href="#phone_interviews">.</a></h2>
|
||||||
@ -83,10 +83,10 @@
|
|||||||
If you would like to record with multiple participants then you can use <a href="http://www.mumble.com/">Mumble</a>. Connect to <strong>chatter.skyehaven.net</strong> Port: <strong>64738 </strong>.<br />
|
If you would like to record with multiple participants then you can use <a href="http://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.
|
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 />
|
<br />
|
||||||
Kwisher made a <a href="<!--% absolute_url(baseurl,'Mumble-How-To.pdf') %-->">Mumble tutorial</a> which you might find useful and Delwin has produced a number of short <a href="<!--% absolute_url(baseurl,'correspondents/0228.html') %-->">shows</a> on how to configure the audio quality.
|
Kwisher made a <a href="<!--% absolute_url(baseurl) %-->Mumble-How-To.pdf">Mumble tutorial</a> which you might find useful and Delwin has produced a number of short <a href="<!--% absolute_url(baseurl) %-->correspondents/0228.html">shows</a> on how to configure the audio quality.
|
||||||
</p>
|
</p>
|
||||||
<p>
|
<p>
|
||||||
<img width="600" src="<!--% absolute_url(baseurl,'images/contribute-mumble-record.png') %-->" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
<img width="600" src="<!--% absolute_url(baseurl) %-->images/contribute-mumble-record.png" alt="Audacity Can Record" title="Audacity Screenshot of Recording" >
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<h2 id="background_music">Avoid Bedding/background music<a href="#background_music">.</a></h2>
|
<h2 id="background_music">Avoid Bedding/background music<a href="#background_music">.</a></h2>
|
||||||
|
@ -1,16 +1,16 @@
|
|||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
<h1 id="requesting_slot">Picking a slot for your show</h1>
|
<h1 id="requesting_slot">Picking a slot for your show</h1>
|
||||||
<p>
|
<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.
|
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="http://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org">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>
|
||||||
<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>]
|
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="http://hackerpublicradio.org/pipermail/hpr_hackerpublicradio.org/2018-February/014260.html">?</a>]
|
||||||
</p>
|
</p>
|
||||||
<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="<!--% absolute_url(baseurl,'request.html') %-->">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.
|
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="<!--% absolute_url(baseurl) %-->request.html">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>
|
||||||
<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.
|
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>
|
||||||
<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 />
|
<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.
|
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.
|
||||||
@ -52,7 +52,7 @@
|
|||||||
<li id="Short_Summary"><strong>Summary:</strong> <em>Mandatory</em><br />
|
<li id="Short_Summary"><strong>Summary:</strong> <em>Mandatory</em><br />
|
||||||
This is a short 100 character summary of what your show is about. 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, mastodon etc.</li>
|
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, mastodon etc.</li>
|
||||||
<li id="Theme"><strong>Theme:</strong> <em>Automatic</em><br />
|
<li id="Theme"><strong>Theme:</strong> <em>Automatic</em><br />
|
||||||
The <a href="<!--% absolute_url(baseurl,'theme.html#intro') %-->">Intro</a>, and the <a href="<!--% absolute_url(baseurl,'theme.html#outro') %-->">Outro</a> will be added automatically. Please do not add it.
|
The <a href="<!--% absolute_url(baseurl) %-->theme.html#intro">Intro</a>, and the <a href="<!--% absolute_url(baseurl) %-->theme.html#outro">Outro</a> will be added automatically. Please do not add it.
|
||||||
</li>
|
</li>
|
||||||
<li id="Explicit"><strong>Explicit:</strong> <em>Mandatory</em><br />
|
<li id="Explicit"><strong>Explicit:</strong> <em>Mandatory</em><br />
|
||||||
See <a href="http://www.apple.com/uk/itunes/podcasts/specs.html#submitting">iTunes</a> for more information.</li>
|
See <a href="http://www.apple.com/uk/itunes/podcasts/specs.html#submitting">iTunes</a> for more information.</li>
|
||||||
@ -104,7 +104,7 @@
|
|||||||
</li>
|
</li>
|
||||||
|
|
||||||
<li id="series"><strong>Series:</strong> <em>Optional</em><br />
|
<li id="series"><strong>Series:</strong> <em>Optional</em><br />
|
||||||
Select the <a href="<!--% absolute_url(baseurl,'series.html') %-->">series</a> if any that your show is a part of.
|
Select the <a href="<!--% absolute_url(baseurl) %-->series.html">series</a> if any that your show is a part of.
|
||||||
</li>
|
</li>
|
||||||
<li id="tags"><strong>Tags:</strong> <em>Optional</em><br />
|
<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="http://hackerpublicradio.org/tags.php">find shows via the tags page</a>.
|
Add a list of comma separated tags. Pick the most important words from the shownotes. These are used to <a href="http://hackerpublicradio.org/tags.php">find shows via the tags page</a>.
|
||||||
|
@ -15,16 +15,16 @@
|
|||||||
<li>Music Theory</li>
|
<li>Music Theory</li>
|
||||||
<li>Installing a VPN to your home network</li>
|
<li>Installing a VPN to your home network</li>
|
||||||
<li>Init and System.d</li>
|
<li>Init and System.d</li>
|
||||||
<li>Episodes for the <a href="<!--% absolute_url(baseurl,'series/0007.html') %-->">LPI</a>, or the Networking series.</li>
|
<li>Episodes for the <a href="<!--% absolute_url(baseurl) %-->series/0007.html">LPI</a>, or the Networking series.</li>
|
||||||
<li><a href="https://web.archive.org/web/20160629174556/opensourcemusician.com/index.php/Beginning_Audio_Series_for_HPR_and_OSMP_Release">Beginning Audio Series for HPR and OSMP Release</a></li>
|
<li><a href="http://opensourcemusician.com/index.php/Beginning_Audio_Series_for_HPR_and_OSMP_Release">Beginning Audio Series for HPR and OSMP Release</a></li>
|
||||||
<li>Hackintosh computers - what are they, why would you want one.</li>
|
<li>Hackintosh computers - what are they, why would you want one.</li>
|
||||||
<li>Grub 2.0 introduction and customization.</li>
|
<li>Grub 2.0 introduction and customization.</li>
|
||||||
<li>FM Transmitter hack to listen into internet streams</li>
|
<li>FM Transmitter hack to listen into internet streams</li>
|
||||||
<li>How I Got Into Accessible Computing</li>
|
<li>How I Got Into Accessible Computing</li>
|
||||||
<li>How to do knitting</li>
|
<li>How to do knitting</li>
|
||||||
<li>How to build a house</li>
|
<li>How to build a house</li>
|
||||||
<li>Bitcoin howto <a href="<!--% absolute_url(baseurl,'eps/hpr0788/index.html') %-->">hpr0788</a></li>
|
<li>Bitcoin howto <a href="<!--% absolute_url(baseurl) %-->eps/hpr0788/index.html">hpr0788</a></li>
|
||||||
<li>How to solder <a href="<!--% absolute_url(baseurl,'eps/hpr1037/index.html') %-->">hpr1037</a>, <a href="<!--% absolute_url(baseurl,'eps/hpr1047/index.html') %-->">hpr1047</a></li>
|
<li>How to solder <a href="<!--% absolute_url(baseurl) %-->eps/hpr1037/index.html">hpr1037</a>, <a href="<!--% absolute_url(baseurl) %-->eps/hpr1047/index.html">hpr1047</a></li>
|
||||||
<li>How to weld</li>
|
<li>How to weld</li>
|
||||||
<li>How to fix a car</li>
|
<li>How to fix a car</li>
|
||||||
<li>Reviews of stream playing software, (for linuxheads who don't want to keep a browser tab open all the time)</li>
|
<li>Reviews of stream playing software, (for linuxheads who don't want to keep a browser tab open all the time)</li>
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
<hr />
|
<hr />
|
||||||
<h2>Search Show Tags</h2>
|
<h2>Search Show Tags</h2>
|
||||||
<p>
|
<p>
|
||||||
<a href="<!--% absolute_path(baseurl) %-->tags.html">Complete list of all the Tags</a></p>
|
<a href="https://www.hackerpublicradio.org/tags.html">Complete list of all the Tags</a></p>
|
||||||
<hr />
|
<hr />
|
||||||
<h2>Google</h2>
|
<h2>Google</h2>
|
||||||
<form name="google-search" method="get" action="https://www.google.com/search">
|
<form name="google-search" method="get" action="https://www.google.com/search">
|
||||||
@ -27,7 +27,7 @@
|
|||||||
<input type="submit" value="Search HPR with DuckDuckGo" />
|
<input type="submit" value="Search HPR with DuckDuckGo" />
|
||||||
</form>
|
</form>
|
||||||
<br />
|
<br />
|
||||||
<a href="https://duckduckgo.com/privacy">privacy policy</a>
|
<a href="httpss://duckduckgo.com/privacy">privacy policy</a>
|
||||||
</p>
|
</p>
|
||||||
<hr />
|
<hr />
|
||||||
<h2>Bing</h2>
|
<h2>Bing</h2>
|
||||||
|
@ -10,7 +10,7 @@
|
|||||||
<li>Open/closed: <!--% display_choice(series.private, 'closed', 'open') %--></li>
|
<li>Open/closed: <!--% display_choice(series.private, 'closed', 'open') %--></li>
|
||||||
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
||||||
<li>Date of latest show: <!--% series.latest_show %--></li>
|
<li>Date of latest show: <!--% series.latest_show %--></li>
|
||||||
<li>Series RSS feeds: <a href="<!--% 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>Series RSS feeds: <a href="https://www.hackerpublicradio.org/hpr_ogg_rss.php?series=<!--% series.id %-->">ogg</a>, <a href="https://www.hackerpublicradio.org/hpr_spx_rss.php?series=<!--% series.id %-->">spx</a>, <a href="https://www.hackerpublicradio.org/hpr_mp3_rss.php?series=<!--% series.id %-->">mp3</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<em><!--% series.description %--></em>
|
<em><!--% series.description %--></em>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
@ -13,7 +13,7 @@
|
|||||||
<li>Open/closed: open</li>
|
<li>Open/closed: open</li>
|
||||||
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
<li>Date of earliest show: <!--% series.earliest_show %--></li>
|
||||||
<li>Date of latest show: <!--% series.latest_show %--></li>
|
<li>Date of latest show: <!--% series.latest_show %--></li>
|
||||||
<li>Series RSS feeds: <a href="<!--% 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>Series RSS feeds: <a href="https://www.hackerpublicradio.org/hpr_ogg_rss.php?series=<!--% series.id %-->&full=1&gomax=1">ogg</a>, <a href="https://www.hackerpublicradio.org/hpr_spx_rss.php?series=<!--% series.id %-->&full=1&gomax=1">spx</a>, <a href="https://www.hackerpublicradio.org/hpr_mp3_rss.php?series=<!--% series.id %-->&full=1&gomax=1">mp3</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
<div><em><!--% series.description %--></em></div>
|
<div><em><!--% series.description %--></em></div>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
@ -7,18 +7,20 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">Full Episode Guide</a> ← Complete list of all the Shows.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">Full Episode Guide</a> ← Complete list of all the Shows.</li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->series/index.html">In-Depth Series</a> ← Overview of the In-Depth Series.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->series/index.html">In-Depth Series</a> ← Overview of the In-Depth Series.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#download">Download Options</a> ← How to download the entire archive.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->download.html">Download Options</a> ← How to download the entire archive.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Give Shows</a> ← Upload your podcast show here.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Give Shows</a> ← Upload your podcast show here.</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#requested_topics">Topics</a> ← Requested topics.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html">Info</a> ← Stuff you need to know before uploading a show.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#recording_a_podcast">Recording</a> ← How to record a podcast.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->theme.html">Theme</a> ← Information about HPR Theme Music.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#requesting_slot">Scheduling</a> ← Picking a slot for your show.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a> ← Requested topics.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html">Recording</a> ← How to record a podcast.</li>
|
||||||
|
<li><a href="<!--% absolute_path(baseurl) %-->request_a_slot.html">Scheduling</a> ← Picking a slot for your show.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#how_to_help">Contribute</a> ← How you can help HPR.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute</a> ← How you can help HPR.</li>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Submit Show</a> ← Upload your podcast show here.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Submit Show</a> ← Upload your podcast show here.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#requested_topics">Topics</a> ← Requested topics.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a> ← Requested topics.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a> ← Information about the History and Governance of HPR.</li>
|
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a> ← Information about the History and Governance of HPR.</li>
|
||||||
<ul>
|
<ul>
|
||||||
|
162
templates/content-stuff_you_need_to_know.tpl.html
Normal file
162
templates/content-stuff_you_need_to_know.tpl.html
Normal file
@ -0,0 +1,162 @@
|
|||||||
|
<h1 id="agreement">Stuff you need to know<a href="#agreement">.</a></h1>
|
||||||
|
<p>
|
||||||
|
This is some important information that you will need to know before uploading to HPR.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="wikipedia">You will no longer be allowed to edit HPR pages on Wikipedia<a href="#wikipedia">.</a></h2>
|
||||||
|
<p>
|
||||||
|
Once you upload a show, you will no longer be allowed to edit pages relating to <a href="https://en.wikipedia.org/wiki/Hacker_Public_Radio">Hacker Public Radio</a> in <a href="https://en.wikipedia.org/wiki/Wikipedia:FAQ/Organizations">Wikipedia</a>.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="mailinglist">All policy decisions are made by the HPR Community<a href="#mailinglist">.</a></h2>
|
||||||
|
<p>
|
||||||
|
The community decides the HPR policies.
|
||||||
|
Please join the <a href="https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org">HPR Mailing List</a> to participate.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="no_shows_no_hpr">HPR will stop as a project if there are not enough shows<a href="#no_shows_no_hpr">.</a></h2>
|
||||||
|
<p>
|
||||||
|
Hacker Public Radio is dedicated to sharing knowledge.
|
||||||
|
We release about 260 shows a year, which is probably more than all of the other FOSS podcasts put together.
|
||||||
|
If you listen to HPR, then we would love you to <a target="_blank" href="<!--% absolute_path(baseurl) %-->contribute.html">contribute</a> one show a year.
|
||||||
|
Remember once that all the emergency shows have been used up and there are no more shows in the queue, HPR as a project will stop.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<h2 id="patrons">Support our Patrons<a href="#patrons">.</a></h2>
|
||||||
|
<p>
|
||||||
|
Our hosting is kindly provided to us by <a href="<!--% absolute_path(baseurl) %-->correspondents/0174.html">Josh Knapp</a> from <a href="https://anhonesthost.com/hosting/shared-hosting">AnHonestHost.com</a>, and The Internet Archive at <a href="https://archive.org/donate/">Archive.org</a>.
|
||||||
|
We encourage you to support our Patrons.
|
||||||
|
Over the years kind people have donated services and supported equipment for our conferences.
|
||||||
|
|
||||||
|
</p>
|
||||||
|
<h2 id="syndication">We do not syndicate non HPR Shows<a href="#syndication">.</a></h2>
|
||||||
|
<p>
|
||||||
|
HPR is founded on the principle of Hackers sharing knowledge.
|
||||||
|
For this reason we are only releasing material created exclusively for HPR.
|
||||||
|
We will continue to promote new podcasts and other creative commons material, but if you wish to have your show promoted, then please contact our sister site <a href="https://freeculturepodcasts.org/">Free Culture Podcasts</a>.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
That said, if there is a piece of creative commons content that you would like to promote, then feel free to record a regular show.
|
||||||
|
There you can introduce the content and explain why it is important, providing links to where we can get more information etc., and then include one example episode.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="license">You are agreeing to license your show CC-BY-SA<a href="#license">.</a></h2>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<h2 id="permission">You have permission to redistribute your show in its entirety<a href="#permission">.</a></h2>
|
||||||
|
<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 other copyrighted content, even if it is made available under fair use, or by arranged permission.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="not_moderated">The audio of your show will not be moderated<a href="#not_moderated">.</a></h2>
|
||||||
|
<p>
|
||||||
|
We do not vet, edit, moderate or in any way censor any of the audio you submit, we trust you to do that.
|
||||||
|
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.
|
||||||
|
<br />
|
||||||
|
We <strong>do</strong> transcode the audio into different formats.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Please note that this only relates to the audio you upload.
|
||||||
|
The rest of the meta-data (branding/summaries/tags/show notes/etc.), are managed by the HPR Community, and <strong>may</strong> be edited.
|
||||||
|
The show <a href="<!--% absolute_path(baseurl) %-->eps/hpr2210/index.html">hpr2210 :: On Freedom of Speech and Censorship</a> describes the agreed approach to this topic.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="explicit">Your show will be signaled as containing explicit content<a href="#explicit">.</a></h2>
|
||||||
|
<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 that 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 short warning at the very beginning of the show before the intro, to allow listeners time to switch off the episode should they so desire.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<p>
|
||||||
|
<a href="<!--% absolute_path(baseurl) %-->eps/hpr2210/index.html">hpr2210 :: On Freedom of Speech and Censorship</a> describes the agreed approach to this topic.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="schedule">You determine when your show will be released<a href="#schedule">.</a></h2>
|
||||||
|
<p>
|
||||||
|
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.
|
||||||
|
Once the slots have been allocated it is not possible to move them.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="reserving">All reservations need to be approved<a href="#reserving">.</a></h2>
|
||||||
|
<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="https://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org">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.
|
||||||
|
<br />
|
||||||
|
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:
|
||||||
|
<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>
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="utf8">We use UTF-8 end to end<a href="#utf8">.</a></h2>
|
||||||
|
<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>
|
||||||
|
|
||||||
|
<h2 id="accessibility">Keep accessibility in mind<a href="#accessibility">.</a></h2>
|
||||||
|
<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)
|
||||||
|
<br />
|
||||||
|
Include descriptive language in any link texts.
|
||||||
|
<br />
|
||||||
|
Avoid structures like: <em>"For accessibility information click <a href="#accessibility">here</a>"</em><br />
|
||||||
|
Rather use: <em>"For more information click our <a href="#accessibility">accessibility page</a>"</em><br />
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<h2 id="international">Your show will be heard by an International Audience<a href="#international">.</a></h2>
|
||||||
|
<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>.
|
||||||
|
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="../images/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>
|
||||||
|
|
||||||
|
<h2 id="emergency_queue">Feed the emergency queue<a href="#emergency_queue">.</a></h2>
|
||||||
|
<p>
|
||||||
|
The emergency queue is intended only to be used in the cases where there is still a gap in the schedule 24 hours prior to release.
|
||||||
|
The shows will by their very nature need to be "timeless".
|
||||||
|
That means your topic should still be relevant in four years or more.
|
||||||
|
People will be able to hear the show on the website but they will not be included in any feeds until release.
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
Please begin all shows with text similar to:
|
||||||
|
<br />
|
||||||
|
<em>
|
||||||
|
"This is an emergency show, if you are hearing this then HPR needs shows ASAP.
|
||||||
|
Please consider contributing a show.
|
||||||
|
Email admin at hacker public radio dot org for more information."
|
||||||
|
</em>
|
||||||
|
</p>
|
||||||
|
<p>
|
||||||
|
We expect that we need at least 10 shows in the emergency queue in order to give people enough time to record and submit shows.
|
||||||
|
Please contact admin at hpr if you want to submit an emergency show.
|
||||||
|
</p>
|
@ -1,4 +1,5 @@
|
|||||||
<h1>RSS Syndication</h1>
|
<h1>RSS Syndication</h1>
|
||||||
|
<p><small><em><a href="http://hackerpublicradio.org/advanced_rss_settings.php">Advanced Settings</a>.</em></small></p>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
@ -37,9 +38,9 @@
|
|||||||
Use these feeds to keep up to date with the latest HPR Episodes.
|
Use these feeds to keep up to date with the latest HPR Episodes.
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->hpr_ogg_rss.php">ogg</a> Larger file size higher quality feed.</li>
|
<li><a href="hpr_ogg_rss.php">ogg</a> Larger file size higher quality feed.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->hpr_rss.php">mp3</a> Larger file size regular quality feed in a common format.</li>
|
<li><a href="hpr_rss.php">mp3</a> Larger file size regular quality feed in a common format.</li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->hpr_spx_rss.php">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li>
|
<li><a href="hpr_spx_rss.php">spx</a> Small file size lower quality feed. <br/>Ideal for dial-up/mobile connections.</li>
|
||||||
</ul>
|
</ul>
|
||||||
<p>
|
<p>
|
||||||
We also maintain an <a href="https://archive.org/details/hackerpublicradio">Archive.org</a> page where you can get the shows in even more formats. For more recent shows we are now including the original upload as delivered.
|
We also maintain an <a href="https://archive.org/details/hackerpublicradio">Archive.org</a> page where you can get the shows in even more formats. For more recent shows we are now including the original upload as delivered.
|
||||||
@ -77,16 +78,12 @@
|
|||||||
<li><a href="<!--% absolute_path(baseurl) %-->comments.rss">Listener contributed comments to the episodes</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->comments.rss">Listener contributed comments to the episodes</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</article>
|
</article>
|
||||||
<hr />
|
|
||||||
<h1>Other Download Options</h1>
|
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h2>Site Replication Sources</h2>
|
<h2>Site Replication Sources</h2>
|
||||||
</header>
|
</header>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->hpr.sql">Daily Database Dump in SQL Format</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->hpr.sql">Daily Database Dump in SQL Format</a></li>
|
||||||
<li><a href="https://repo.anhonesthost.net/explore/repos">All the HPR Source Code is on GitTea</a></li>
|
|
||||||
<li><a href="https://hub.hackerpublicradio.org/stats.json">Current Statistics on the HPR Project (updated every 15 mins)</a></li>
|
|
||||||
<ul>
|
<ul>
|
||||||
</article>
|
</article>
|
||||||
<article>
|
<article>
|
||||||
@ -95,41 +92,66 @@
|
|||||||
</header>
|
</header>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
|
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
|
||||||
<li><a href="https://music.amazon.fr/podcasts/9d9e6211-ff78-4501-93b6-6a9e560c4dbd/hacker-public-radio">Amazon Music</a></li>
|
<li><a href="https://itunes.apple.com/us/podcast/hacker-public-radio/id281699640?mt=2">iTunes</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://player.fm/series/hacker-public-radio">PlayerFM</a></li>
|
|
||||||
<li><a href="https://podcasts.apple.com/us/podcast/hacker-public-radio/id281699640">iTunes</a></li>
|
|
||||||
<li><a href="https://podcasts.google.com/feed/aHR0cDovL2hhY2tlcnB1YmxpY3JhZGlvLm9yZy9ocHJfcnNzLnBocA">Google Podcasts</a></li>
|
<li><a href="https://podcasts.google.com/feed/aHR0cDovL2hhY2tlcnB1YmxpY3JhZGlvLm9yZy9ocHJfcnNzLnBocA">Google Podcasts</a></li>
|
||||||
<li><a href="https://toppodcast.com/podcast_feeds/hacker-public-radio/">Top Podcasts</a></li>
|
<li><a href="https://player.fm/series/hacker-public-radio">PlayerFM</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://open.spotify.com/show/7e2hYcnHj9vKgUzsIOf4r3">Spotify</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://www.mixcloud.com/hackerpublicradio/">MixCloud</a></li>
|
||||||
<li><a href="https://www.podchaser.com/podcasts/hacker-public-radio-76781">Podchaser</a></li>
|
|
||||||
<ul>
|
<ul>
|
||||||
</article>
|
</article>
|
||||||
|
|
||||||
<article>
|
<article>
|
||||||
<header>
|
<header>
|
||||||
<h1>Download Archive</h1>
|
<h1>Download Archive</h1>
|
||||||
<p>Please be aware that our Archive exceeds <strong>62Gb</strong> <em>(Ogg: 21Gb, Spx: 16Gb, mp3: 25Gb)</em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p>
|
<p>Please be aware that our Archive exceeds <strong>62Gb</strong> <em>(Ogg: 21Gb, Spx: 16Gb, mp3: 25Gb)</em>. We are happy for you to download them, but please make sure that you are not going to incur additional bandwidth charges on your side.</p>
|
||||||
<p>We will be happy to post you DVD's of the episodes anywhere in the world if bandwidth is an issue.</p>
|
<p>We will be happy to post you DVD's of the episodes anywhere in the world if bandwidth is an issue.</p>
|
||||||
</header>
|
</header>
|
||||||
<h2>Full Episode Guide</h2>
|
<h2>Full Episode Guide</h2>
|
||||||
<p>
|
<p>
|
||||||
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.
|
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>
|
</p>
|
||||||
<h2>Command line download</h2>
|
<h2>Command line download</h2>
|
||||||
<p>
|
<p>
|
||||||
You can download the audio of the episodes directly from the command line using the following commands:
|
You can download the audio of the episodes directly from the command line using the following commands:
|
||||||
</p>
|
</p>
|
||||||
<ul>
|
<ul>
|
||||||
<li>ogg:<br />
|
<li>ogg:<br />
|
||||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].ogg' -o "hpr#1.ogg"</span></li>
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].ogg' -o "hpr#1.ogg"</span></li>
|
||||||
<li>spx:<br />
|
<li>spx:<br />
|
||||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].spx' -o "hpr#1.spx"</span></li>
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].spx' -o "hpr#1.spx"</span></li>
|
||||||
<li>mp3:<br />
|
<li>mp3:<br />
|
||||||
<span style="font-family:monospace;">curl '<!--% absolute_path(baseurl) %-->eps/hpr[0001-<!--% episode.latest %-->].mp3' -o "hpr#1.mp3"</span></li>
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[0001-3657].mp3' -o "hpr#1.mp3"</span></li>
|
||||||
</ul>
|
</li>
|
||||||
|
</ul>
|
||||||
</article>
|
<h2>Full RSS feed, BitTorrent and Magnet links</h2>
|
||||||
|
<p>The full rss feed is updated daily and contains the complete show note with links to supporting articles. The torrent/magnet also contains this information and is a snaphot of the archive taken between 2007 and November 2013. </p>
|
||||||
|
<ul>
|
||||||
|
<li><span style="font-family:monospace;">ogg: <a href="hpr_total_ogg_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Ogg-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:390C66903BBB2B6A067C438C70B2E90988AA8207&dn=HPR-Ogg-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
<li><span style="font-family:monospace;">spx: <a href="hpr_total_spx_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:E2573BEF0209B8C2E3C7908BAF220EC34D4A5B8E&dn=HPR-Speex-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
<li><span style="font-family:monospace;">mp3: <a href="hpr_total_rss.php">rss</a>, <a href="https://www.talkgeektome.us/torrents/HPR-Mp3-2007-Nov2013.torrent">torrent</a>, <a href="magnet:?xt=urn:btih:6E9492AD78BCCA2B8D6A42C9C0BCAB0E6FA778F8&dn=HPR-Mp3-2007-Nov2013&tr=http%3A%2F%2Ftracker.info-underground.net%3A16880%2Fannounce">magnet</a></span></li>
|
||||||
|
</ul>
|
||||||
|
<h3>Direct download of the remaining shows</h3>
|
||||||
|
<p>
|
||||||
|
You can download the remaining episodes since the torrent was created directly from the command line using the following commands:
|
||||||
|
</p>
|
||||||
|
<ul>
|
||||||
|
<li>ogg:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].ogg' -o "hpr#1.ogg"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>spx:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].spx' -o "hpr#1.spx"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<ul>
|
||||||
|
<li>mp3:<br />
|
||||||
|
<span style="font-family:monospace;">curl 'https://www.hackerpublicradio.org/eps/hpr[1391-3657].mp3' -o "hpr#1.mp3"</span>
|
||||||
|
</li>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<footer>
|
||||||
|
<p>Big to DeepGeek and the team for providing the BitTorrent service.</p>
|
||||||
|
</footer>
|
||||||
|
42
templates/content-theme.tpl.html
Normal file
42
templates/content-theme.tpl.html
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
|
<h1>HPR Theme Music</h1>
|
||||||
|
<p>
|
||||||
|
An HPR episode is composed of a few parts which are all now added automatically.
|
||||||
|
</p>
|
||||||
|
<ol>
|
||||||
|
<li>
|
||||||
|
<h3 id="Synopsis">Show Synopsis</h3>
|
||||||
|
<p>
|
||||||
|
We will take the <a href="<!--% absolute_path(baseurl) %-->contribute.html#show_notes_file_format">fields</a> from the Show Notes and use those to create a short summary of what the show is about.<br />
|
||||||
|
The format is:
|
||||||
|
</p>
|
||||||
|
<blockquote>
|
||||||
|
This is HPR episode ${show_number) entitled "${title}". It is hosted by ${hostname} and is ${duration} minutes long. The Summary: "${summary}"
|
||||||
|
</blockquote>
|
||||||
|
<p>Most of the information is taken from the <a href="<!--% absolute_path(baseurl) %-->request_a_slot.html">Show Notes</a><br />
|
||||||
|
<strong>Note:</strong> <em>This is automatically added after you upload your show.</em>
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<h3 id="show">The Show</h3>
|
||||||
|
<p>
|
||||||
|
The most important bit. As long as you like, on any topic you like as long as it is <em>"of interest to Hackers"</em>.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<h3 id="outro">HPR Outro Music </h3>
|
||||||
|
<p>
|
||||||
|
This can be added is automatically added after you upload your show.
|
||||||
|
</p>
|
||||||
|
</li>
|
||||||
|
</ol>
|
||||||
|
|
||||||
|
<h2>Media Files</h2>
|
||||||
|
<ol>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-music-MrX-ccbysa-accordion.wav</a> (2.8M)</li>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-music-rollercostermusic.com-ccbysa-v1-ccbysa.wav</a> (31M)</li>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-music-rollercostermusic.com-ccbysa-v2-ccbysa.wav</a> (26M)</li>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-music-rollercostermusic.com-ccbysa-v3-ccbysa.wav</a> (31M)</li>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-music-slick0-cc0.flac</a> (12M)</li>
|
||||||
|
<li><a href="http://www.hackerpublicradio.org/media/theme-music/">outro-speech-manon_fallon-cc0.flac</a> (4.6M)</li>
|
||||||
|
</ol>
|
@ -3,6 +3,6 @@
|
|||||||
<li><a href="<!--% hub_baseurl %-->"><strong>⇧Upload⇧</strong></a></li>
|
<li><a href="<!--% hub_baseurl %-->"><strong>⇧Upload⇧</strong></a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute »</strong></a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute »</strong></a></li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Submit Show</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Submit Show</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -2,10 +2,10 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% hub_baseurl %-->"><strong>⇧Upload⇧</strong></a></li>
|
<li><a href="<!--% hub_baseurl %-->"><strong>⇧Upload⇧</strong></a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->index.html"><strong>Home</a></li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Give Shows »</strong></a>
|
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Give Shows »</strong></a>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html">Info</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->stuff_you_need_to_know.html">Info</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->theme.html">Theme</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->theme.html">Theme</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->requested_topics.html">Topics</a></li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#recording_a_podcast">Recording</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->recording.html">Recording</a></li>
|
||||||
<li><!--% absolute_url(baseurl) %-->about.html#requesting_slot">Scheduling</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->request_a_slot.html">Scheduling</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
|
@ -3,8 +3,8 @@
|
|||||||
<li><a href="<!--% hub_baseurl %-->calendar.php"><strong>⇧Upload⇧</strong></a></li>
|
<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) %-->index.html"><strong>Home »</strong></a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->syndication.html">Get Shows</a></li>
|
||||||
<li><a href="<!--% absolute_url(baseurl) %-->about.html#so_you_want_to_record_a_podcast">Give Shows</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->contribute.html">Give Shows</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->about.html#how_to_help">Contribute</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->help_out.html">Contribute</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->tags.html">Tags</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->tags.html">Tags</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->about.html">About</a></li>
|
||||||
<li><a href="<!--% absolute_path(baseurl) %-->search.html">Search</a></li>
|
<li><a href="<!--% absolute_path(baseurl) %-->search.html">Search</a></li>
|
||||||
|
@ -22,7 +22,7 @@
|
|||||||
display:none;
|
display:none;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
<link rel="shortcut icon" href="<!--% absolute_url(baseurl) %-->hpr.ico" >
|
<link rel="shortcut icon" href="hpr.ico" >
|
||||||
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Ogg Vorbis RSS" href="<!--% absolute_path(baseurl) %-->hpr_ogg_rss.php" />
|
<link rel="alternate" type="application/rss+xml" title="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 Speex RSS" href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php" />
|
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio Speex RSS" href="<!--% absolute_path(baseurl) %-->hpr_spx_rss.php" />
|
||||||
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio MP3 RSS" href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php" />
|
<link rel="alternate" type="application/rss+xml" title="Hacker Public Radio MP3 RSS" href="<!--% absolute_path(baseurl) %-->hpr_mp3_rss.php" />
|
||||||
@ -39,27 +39,27 @@
|
|||||||
<body id="give">
|
<body id="give">
|
||||||
<div id="container" class="shadow">
|
<div id="container" class="shadow">
|
||||||
<header>
|
<header>
|
||||||
<a href="<!--% absolute_path(baseurl) %-->"><img id="hprlogo" src="<!--% absolute_path(baseurl) %-->images/hpr_logo.png" alt="hprlogo"></a>
|
<a href=""><img id="hprlogo" src="<!--% absolute_path(baseurl) %-->images/hpr_logo.png" alt=""></a>
|
||||||
<div id="hpr_banner">
|
<div id="hpr_banner">
|
||||||
<p id="accessible_menu">
|
<p id="accessible_menu">
|
||||||
<a href="<!--% absolute_path(baseurl) %-->sitemap.html">Site Map</a>
|
<a href="<!--% absolute_path(baseurl) %-->sitemap.html">Site Map</a>
|
||||||
- <a href="#maincontent">skip to main content</a>
|
- <a href="#maincontent">skip to main content</a>
|
||||||
</p>
|
</p>
|
||||||
<h1 id="sitename">
|
<h1 id="sitename">
|
||||||
<a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">H</a>acker
|
<a href="<!--% absolute_path(baseurl) %-->correspondents/index.html">H</a>acker
|
||||||
<a href="<!--% absolute_path(baseurl) %-->comments_viewer.html">P</a>ublic
|
<a href="<!--% absolute_path(baseurl) %-->comments_viewer.html">P</a>ublic
|
||||||
<a href="<!--% absolute_path(baseurl) %-->syndication.html">R</a>adio
|
<a href="<!--% absolute_path(baseurl) %-->syndication.html">R</a>adio
|
||||||
</h1>
|
</h1>
|
||||||
<h2>Your ideas, projects, opinions - podcasted.</h2>
|
<h2>Your ideas, projects, opinions - podcasted.</h2>
|
||||||
<h3>New episodes every weekday Monday through Friday.<br />
|
<h3>New episodes every weekday Monday through Friday.<br />
|
||||||
<em><small>This page was <a href="https://repo.anhonesthost.net/rho_n/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>
|
<em><small>This page was <a href="https://repo.anhonesthost.net/rho_n/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>
|
</div>
|
||||||
<hr />
|
<hr />
|
||||||
|
|
||||||
<nav class="menu" role="navigation">
|
<nav class="menu" role="navigation">
|
||||||
<!--% INCLUDE $navigation %-->
|
<!--% INCLUDE $navigation %-->
|
||||||
</nav>
|
</nav>
|
||||||
</header>
|
</header>
|
||||||
|
|
||||||
<main id="maincontent">
|
<main id="maincontent">
|
||||||
@ -75,52 +75,43 @@
|
|||||||
<li><a href="http://audio.textfiles.com/shows/radiofreekamerica/">Radio Freek America</a></li>
|
<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/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/infonomicon/">Infonomicon</a></li>
|
||||||
<li><a href="http://audio.textfiles.com/shows/twat/">Today With a Techie</a></li>
|
<li><a href="http://audio.textfiles.com/shows/twat/">Talk With a Techie</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<nav class="column">
|
<nav class="column">
|
||||||
<h2>Social</h2>
|
<h2>Social</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="<!--% absolute_url(baseurl,'/maillist') %-->" >Mailing list</a></li>
|
<li><a href="http://hackerpublicradio.org/mailman/listinfo/hpr_hackerpublicradio.org" target="_blank">Maillist</a></li>
|
||||||
<li><a href="https://botsin.space/@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://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://twitter.com/HPR">Twitter.com</a></li>
|
||||||
<li><a href="https://www.facebook.com/HenryPartickReilly" target="_blank">Facebook</a></li>
|
<li><a href="https://plus.google.com/u/0/s/hacker%20public%20radio" target="_blank">Google+</a></li>
|
||||||
|
<li><a href="https://www.facebook.com/home.php?sk=group_130169220378872¬if_t=group_r2j" target="_blank">Facebook</a></li>
|
||||||
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
|
<li><a href="https://www.linkedin.com/company/hackerpublicradio/" target="_blank">Linked-In</a></li>
|
||||||
|
<li><a href="http://itunes.apple.com/us/podcast/hacker-public-radio/id281699640" target="_blank">iTunes</a></li>
|
||||||
|
<li><a href="https://play.google.com/music/m/Igrhzh3izdb5qxv536ii6qpbgv4?t=Hacker_Public_Radio" target="_blank">Google Play</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<nav class="column">
|
<nav class="column">
|
||||||
<h2>Unaffiliates</h2>
|
<h2>Affiliates</h2>
|
||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://archive.org/details/hackerpublicradio">Archive.org</a></li>
|
<li><a href="http://www.hackradiolive.org/">Hack Radio Live</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="http://www.binrev.com/">Binary Revolution</a></li>
|
||||||
<li><a href="https://podcasts.google.com/feed/aHR0cDovL2hhY2tlcnB1YmxpY3JhZGlvLm9yZy9ocHJfcnNzLnBocA">Google Podcasts</a></li>
|
<li><a href="http://hackermedia.org">Hackermedia</a></li>
|
||||||
<li><a href="https://www.iheart.com/podcast/256-hacker-public-radio-30994513/" target="_blank">iHeart Radio</a></li>
|
<li><a href="http://www.nomicon.info/">Infonomicon</a></li>
|
||||||
<li><a href="https://podcasts.apple.com/us/podcast/hacker-public-radio/id281699640">iTunes</a></li>
|
<li><a href="http://www.packetsniffers.org/">Packetsniffers</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>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
<nav class="column">
|
<nav class="column">
|
||||||
<h2>Commons</h2>
|
<h2>Commons</h2>
|
||||||
<ul>
|
<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://archive.org/details/hackerpublicradio">archive.org</a></li>
|
||||||
<li><a href="https://repo.anhonesthost.net/explore/repos" >HPR Source Code</a></li>
|
<li><a href="http://cchits.net/">cchits.net</a></li>
|
||||||
<li><a href="https://cchits.net/">cchits.net</a></li>
|
<li><a href="http://freemusi.cc/">FreeMusi.cc</a></li>
|
||||||
<li><a href="https://freesound.org/">freesound.org</a></li>
|
<li><a href="http://freesound.org/">freesound.org</a></li>
|
||||||
<li><a href="https://librivox.org/">librivox.org</a></li>
|
<li><a href="https://librivox.org/">librivox.org</a></li>
|
||||||
<li><a href="https://openclipart.org/">openclipart.org</a></li>
|
<li><a href="http://openclipart.org/">openclipart.org</a></li>
|
||||||
<li><a href="https://openfontlibrary.org/">openfontlibrary.org</a></li>
|
<li><a href="http://openfontlibrary.org/">openfontlibrary.org</a></li>
|
||||||
<li><a href="https://www.openrouteservice.org/">openrouteservice.org/</a></li>
|
<li><a href="http://www.openrouteservice.org/">openrouteservice.org/</a></li>
|
||||||
<li><a href="https://pixabay.com/">pixabay.com/</a></li>
|
<li><a href="https://pixabay.com/">pixabay.com/</a></li>
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
@ -129,7 +120,6 @@
|
|||||||
<ul>
|
<ul>
|
||||||
<li><a href="https://anhonesthost.com/hosting/shared-hosting">AnHonestHost.com</a></li>
|
<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://archive.org/donate/">Archive.org</a></li>
|
||||||
<li><a href="https://rsync.net/">rsync.net</a></li>
|
|
||||||
</ul>
|
</ul>
|
||||||
</nav>
|
</nav>
|
||||||
</div><!-- more_info -->
|
</div><!-- more_info -->
|
||||||
@ -139,7 +129,7 @@
|
|||||||
Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">
|
Unless otherwise stated, our shows are released under a <a rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/">
|
||||||
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.</p>
|
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)</a> license.</p>
|
||||||
<p>
|
<p>
|
||||||
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="https://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
|
The <span property="dct:title">HPR Website Design</span> is released to the <a rel="license" href="http://creativecommons.org/publicdomain/mark/1.0/">Public Domain</a>.
|
||||||
</p>
|
</p>
|
||||||
<hr />
|
<hr />
|
||||||
</div><!-- copyright -->
|
</div><!-- copyright -->
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!--% query_call_for_shows = '
|
<!--% query_call_for_shows = '
|
||||||
SELECT CASE WHEN COUNT(id) < 6 THEN True ELSE False END AS `request_for_shows`
|
SELECT CASE WHEN COUNT(id) < 7 THEN True ELSE False END AS `request_for_shows`
|
||||||
FROM eps
|
FROM eps
|
||||||
WHERE eps.date > NOW() AND eps.date <= DATE_ADD(NOW(), INTERVAL 10 DAY)
|
WHERE eps.date > NOW() AND eps.date < DATE_ADD(NOW(), INTERVAL 10 DAY)
|
||||||
'
|
'
|
||||||
%-->
|
%-->
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
<!--% query_call_for_shows = '
|
<!--% query_call_for_shows = '
|
||||||
SELECT CASE WHEN COUNT(id) < 6 THEN True ELSE False END AS `request_for_shows`
|
SELECT CASE WHEN COUNT(id) < 7 THEN True ELSE False END AS `request_for_shows`
|
||||||
FROM eps
|
FROM eps
|
||||||
WHERE eps.date > date(\'now\') AND eps.date <= date(\'now\', \'+10 days\')
|
WHERE eps.date > date(\'now\') AND eps.date < date(\'now\', \'+10 days\')
|
||||||
'
|
'
|
||||||
%-->
|
%-->
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<!--% query_hpr_shows = '
|
<!--% query_hpr_shows = '
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS explicit ,
|
||||||
eps.date, eps.license, eps.duration,
|
eps.date, eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email, hosts.profile,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
FROM eps
|
FROM eps
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<!--% query_hpr_shows = '
|
<!--% query_hpr_shows = '
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS explicit ,
|
||||||
eps.date, eps.license, eps.duration,
|
eps.date, eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email, hosts.profile,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
FROM eps
|
FROM eps
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
FROM eps
|
FROM eps
|
||||||
INNER JOIN episode_date
|
INNER JOIN episode_date
|
||||||
ON eps.date > episode_date.date
|
ON eps.date > episode_date.date
|
||||||
WHERE eps.date <= date(\'now\')
|
WHERE eps.date < date(\'now\')
|
||||||
),
|
),
|
||||||
comment_tallies AS (
|
comment_tallies AS (
|
||||||
SELECT
|
SELECT
|
||||||
|
@ -2,14 +2,14 @@
|
|||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
eps.date, eps.license, eps.title, eps.summary,
|
eps.date, eps.license, eps.title, eps.summary,
|
||||||
eps.duration, eps.notes, eps.tags,
|
eps.duration, eps.notes, eps.tags,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email, hosts.local_image,
|
hosts.host, hosts.email, hosts.local_image,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
FROM eps
|
FROM eps
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||||
WHERE eps.date <= date(\'now\')
|
WHERE eps.date <= date(\'now\')
|
||||||
ORDER BY eps.id + 0 DESC'
|
ORDER BY eps.id + 0 DESC'
|
||||||
%-->
|
%-->
|
||||||
|
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
<!--% query_next_available_episode = '
|
<!--% query_next_available_episode = '
|
||||||
SELECT id, date FROM eps e WHERE id = (
|
WITH next_id AS (
|
||||||
SELECT id + 1 FROM eps mo
|
SELECT id, id + 1 AS \'id_next\', date as \'last_date\'
|
||||||
WHERE NOT EXISTS (
|
FROM eps
|
||||||
SELECT NULL
|
WHERE eps.date > NOW()
|
||||||
FROM eps mi
|
)
|
||||||
WHERE mi.id = mo.id + 1
|
SELECT
|
||||||
)
|
MIN(next_id.id_next) AS \'next_id\',
|
||||||
ORDER BY id
|
DATE_FORMAT(DATE_ADD(MIN(last_date), INTERVAL 1 DAY), \'%Y\') AS \'last_year\',
|
||||||
LIMIT 1) - 1
|
DATE_FORMAT(DATE_ADD(MIN(last_date), INTERVAL 1 DAY), \'%d\') AS \'last_day\',
|
||||||
'
|
DATE_FORMAT(DATE_ADD(MIN(last_date), INTERVAL 1 DAY), \'%m\') AS \'last_month\'
|
||||||
|
FROM next_id
|
||||||
|
LEFT JOIN eps ON next_id.id_next = eps.id
|
||||||
|
WHERE eps.id IS NULL
|
||||||
|
'
|
||||||
%-->
|
%-->
|
||||||
<!--% query_latest_episodes = '
|
<!--% query_latest_episodes = '
|
||||||
WITH comment_tallies AS (
|
WITH comment_tallies AS (
|
||||||
@ -41,7 +45,7 @@
|
|||||||
<!--% query_last_5_weeks_episodes = '
|
<!--% query_last_5_weeks_episodes = '
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS explicit ,
|
||||||
eps.date, eps.license, eps.title, eps.summary,
|
eps.date, eps.license, eps.title, eps.summary,
|
||||||
eps.duration, eps.notes, eps.tags,
|
eps.duration, eps.notes, eps.tags,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
|
@ -1,14 +1,18 @@
|
|||||||
<!--% query_next_available_episode = '
|
<!--% query_next_available_episode = '
|
||||||
SELECT id, date FROM eps e WHERE id = (
|
WITH next_id AS (
|
||||||
SELECT id + 1 FROM eps mo
|
SELECT id, id + 1 AS \'id_next\', date as \'last_date\'
|
||||||
WHERE NOT EXISTS (
|
FROM eps
|
||||||
SELECT NULL
|
WHERE eps.date > date(\'now\')
|
||||||
FROM eps mi
|
)
|
||||||
WHERE mi.id = mo.id + 1
|
SELECT
|
||||||
)
|
MIN(next_id.id_next) AS \'next_id\',
|
||||||
ORDER BY id
|
strftime(\'%Y\', DATE (MIN (last_date), \'+1 Days\')) AS \'last_year\',
|
||||||
LIMIT 1) - 1
|
strftime(\'%d\', DATE (MIN (last_date), \'+1 Days\')) AS \'last_day\',
|
||||||
'
|
strftime(\'%m\', DATE (MIN (last_date), \'+1 Days\')) AS \'last_month\'
|
||||||
|
FROM next_id
|
||||||
|
LEFT JOIN eps ON next_id.id_next = eps.id
|
||||||
|
WHERE eps.id IS NULL
|
||||||
|
'
|
||||||
%-->
|
%-->
|
||||||
<!--% query_latest_episodes = '
|
<!--% query_latest_episodes = '
|
||||||
WITH comment_tallies AS (
|
WITH comment_tallies AS (
|
||||||
@ -41,7 +45,7 @@
|
|||||||
<!--% query_last_5_weeks_episodes = '
|
<!--% query_last_5_weeks_episodes = '
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
CASE eps.explicit WHEN 1 THEN \'Explicit\' ELSE \'Clean\' END AS explicit ,
|
||||||
eps.date, eps.license, eps.title, eps.summary,
|
eps.date, eps.license, eps.title, eps.summary,
|
||||||
eps.duration, eps.notes, eps.tags,
|
eps.duration, eps.notes, eps.tags,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
|
@ -1,5 +1,5 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" ?>
|
<?xml version="1.0" encoding="UTF-8" ?>
|
||||||
<rss version="2.0" xmlns:atom="https://www.w3.org/2005/Atom" >
|
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" >
|
||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
<!--% PROCESS 'shared-episode-summary.tpl.html' %-->
|
||||||
<!--% USE date %-->
|
<!--% USE date %-->
|
||||||
@ -12,7 +12,7 @@
|
|||||||
<managingEditor>feedback.nospam@nospam.hackerpublicradio.org (HPR Feedback)</managingEditor>
|
<managingEditor>feedback.nospam@nospam.hackerpublicradio.org (HPR Feedback)</managingEditor>
|
||||||
<webMaster>admin.nospam@nospam.hackerpublicradio.org (HPR Webmaster)</webMaster>
|
<webMaster>admin.nospam@nospam.hackerpublicradio.org (HPR Webmaster)</webMaster>
|
||||||
<generator>https://repo.anhonesthost.net/rho_n/hpr_generator</generator>
|
<generator>https://repo.anhonesthost.net/rho_n/hpr_generator</generator>
|
||||||
<docs>https://www.rssboard.org/rss-specification</docs>
|
<docs>http://www.rssboard.org/rss-specification</docs>
|
||||||
<ttl>600</ttl>
|
<ttl>600</ttl>
|
||||||
<image>
|
<image>
|
||||||
<url><!--% baseurl %-->images/hpr_feed_small.png</url>
|
<url><!--% baseurl %-->images/hpr_feed_small.png</url>
|
||||||
|
@ -1,26 +1,23 @@
|
|||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
<!--% query_hpr_feed = DBI.prepare('
|
<!--% query_hpr_feed = DBI.prepare('
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
|
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
|
||||||
eps.license, eps.duration,
|
eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid,
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
assets.size AS length
|
FROM eps
|
||||||
FROM eps
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
WHERE eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
|
||||||
INNER JOIN assets ON eps.id = assets.episode_id
|
ORDER BY eps.date DESC
|
||||||
WHERE eps.date <= UTC_DATE()
|
LIMIT 10
|
||||||
AND assets.extension = ?
|
|
||||||
ORDER BY eps.date DESC
|
|
||||||
LIMIT 10
|
|
||||||
')
|
')
|
||||||
%-->
|
%-->
|
||||||
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->
|
<!--% feed_result = query_hpr_feed.execute() %-->
|
||||||
|
|
||||||
|
@ -1,26 +1,23 @@
|
|||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
<!--% query_hpr_feed = DBI.prepare('
|
<!--% query_hpr_feed = DBI.prepare('
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) AS date,
|
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) AS date,
|
||||||
eps.license, eps.duration,
|
eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid,
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
assets.size AS length
|
FROM eps
|
||||||
FROM eps
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
WHERE eps.date < date(\'now\', \'+1 days\')
|
||||||
INNER JOIN assets ON eps.id = assets.episode_id
|
ORDER BY eps.date DESC
|
||||||
WHERE eps.date <= date(\'now\')
|
LIMIT 10
|
||||||
AND assets.extension = ?
|
|
||||||
ORDER BY eps.date DESC
|
|
||||||
LIMIT 10
|
|
||||||
')
|
')
|
||||||
%-->
|
%-->
|
||||||
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->
|
<!--% feed_result = query_hpr_feed.execute() %-->
|
||||||
|
|
||||||
|
@ -1,25 +1,22 @@
|
|||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
<!--% query_hpr_feed = DBI.prepare('
|
<!--% query_hpr_feed = DBI.prepare('
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
|
DATE_FORMAT(eps.date, \'%H:%i:%S %d:%m:%Y\') AS \'date\',
|
||||||
eps.license, eps.duration,
|
eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid,
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
assets.size AS length
|
FROM eps
|
||||||
FROM eps
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
WHERE eps.date < DATE_ADD(NOW(), INTERVAL 1 DAY)
|
||||||
INNER JOIN assets ON eps.id = assets.episode_id
|
ORDER BY eps.date DESC
|
||||||
WHERE eps.date < UTC_DATE()
|
|
||||||
AND assets.extension = ?
|
|
||||||
ORDER BY eps.date DESC
|
|
||||||
')
|
')
|
||||||
%-->
|
%-->
|
||||||
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->
|
<!--% feed_result = query_hpr_feed.execute() %-->
|
||||||
|
|
||||||
|
@ -1,25 +1,22 @@
|
|||||||
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
<!--% USE DBI(constants.driver, constants.user, constants.password) %-->
|
||||||
<!--% query_hpr_feed = DBI.prepare('
|
<!--% query_hpr_feed = DBI.prepare('
|
||||||
SELECT
|
SELECT
|
||||||
eps.id,
|
eps.id,
|
||||||
eps.explicit,
|
eps.explicit,
|
||||||
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) AS date,
|
strftime(\'%H:%M:%S %d:%m:%Y\', date(eps.date)) AS date,
|
||||||
eps.license, eps.duration,
|
eps.license, eps.duration,
|
||||||
eps.title, eps.summary, eps.tags,
|
eps.title, eps.summary, eps.tags,
|
||||||
eps.notes,
|
eps.notes,
|
||||||
hosts.local_image,
|
hosts.local_image,
|
||||||
hosts.hostid,
|
hosts.hostid,
|
||||||
hosts.host, hosts.email,
|
hosts.host, hosts.email,
|
||||||
miniseries.name AS series, miniseries.id AS seriesid,
|
miniseries.name AS series, miniseries.id AS seriesid
|
||||||
assets.size AS length
|
FROM eps
|
||||||
FROM eps
|
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
||||||
INNER JOIN hosts ON eps.hostid = hosts.hostid
|
INNER JOIN miniseries ON eps.series = miniseries.id
|
||||||
INNER JOIN miniseries ON eps.series = miniseries.id
|
WHERE eps.date < date(\'now\', \'+1 days\')
|
||||||
INNER JOIN assets ON eps.id = assets.episode_id
|
ORDER BY eps.date DESC
|
||||||
WHERE eps.date <= date(\'now\')
|
|
||||||
AND assets.extension = ?
|
|
||||||
ORDER BY eps.date DESC
|
|
||||||
')
|
')
|
||||||
%-->
|
%-->
|
||||||
<!--% feed_result = query_hpr_feed.execute(media_file_extension) %-->
|
<!--% feed_result = query_hpr_feed.execute() %-->
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@
|
|||||||
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" >
|
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" >
|
||||||
<channel>
|
<channel>
|
||||||
<title>Hacker Public Radio</title>
|
<title>Hacker Public Radio</title>
|
||||||
<link><!--% absolute_url(baseurl) %-->about.html</link>
|
<link>https://www.hackerpublicradio.org/about.html</link>
|
||||||
<itunes:subtitle>A daily show hosted by the community on topics that are of interest to hackers and hobbyists.</itunes:subtitle>
|
<itunes:subtitle>A daily show hosted by the community on topics that are of interest to hackers and hobbyists.</itunes:subtitle>
|
||||||
<description>Hacker Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to hackers and hobbyists.</description>
|
<description>Hacker Public Radio is a podcast that releases shows every weekday Monday through Friday. Our shows are produced by the community (you) and can be on any topic that is of interest to hackers and hobbyists.</description>
|
||||||
<language>en-us</language>
|
<language>en-us</language>
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<itunes:category text="Education">
|
<itunes:category text="Education">
|
||||||
<itunes:category text="Training"/>
|
<itunes:category text="Training"/>
|
||||||
</itunes:category>
|
</itunes:category>
|
||||||
<itunes:image href="<!--% absolute_url(http_baseurl) %-->images/hpr_feed_itunes.png"/>
|
<itunes:image href="https://www.hackerpublicradio.org/images/hpr_feed_itunes.png"/>
|
||||||
<itunes:explicit>yes</itunes:explicit>
|
<itunes:explicit>yes</itunes:explicit>
|
||||||
<itunes:author>Hacker Public Radio</itunes:author>
|
<itunes:author>Hacker Public Radio</itunes:author>
|
||||||
<itunes:keywords>Community Radio, Tech Interviews, Linux, Open, Hobby, Software Freedom</itunes:keywords>
|
<itunes:keywords>Community Radio, Tech Interviews, Linux, Open, Hobby, Software Freedom</itunes:keywords>
|
||||||
@ -31,15 +31,15 @@
|
|||||||
<webMaster>admin@hackerpublicradio.org (HPR Volunteer)</webMaster>
|
<webMaster>admin@hackerpublicradio.org (HPR Volunteer)</webMaster>
|
||||||
<generator>site-generator</generator>
|
<generator>site-generator</generator>
|
||||||
<docs>http://www.rssboard.org/rss-specification</docs>
|
<docs>http://www.rssboard.org/rss-specification</docs>
|
||||||
<ttl>720</ttl>
|
<ttl>43200</ttl>
|
||||||
<skipDays>
|
<skipDays>
|
||||||
<day>Saturday</day>
|
<day>Saturday</day>
|
||||||
<day>Sunday</day>
|
<day>Sunday</day>
|
||||||
</skipDays>
|
</skipDays>
|
||||||
<image>
|
<image>
|
||||||
<url><!--% absolute_url(baseurl) %-->images/hpr_feed_small.png</url>
|
<url>https://www.hackerpublicradio.org/images/hpr_feed_small.png</url>
|
||||||
<title>Hacker Public Radio</title>
|
<title>Hacker Public Radio</title>
|
||||||
<link><!--% absolute_url(baseurl) %-->about.html</link>
|
<link>https://www.hackerpublicradio.org/about.php</link>
|
||||||
<description>The Hacker Public Radio Old Microphone Logo</description>
|
<description>The Hacker Public Radio Old Microphone Logo</description>
|
||||||
<height>164</height>
|
<height>164</height>
|
||||||
<width>144</width>
|
<width>144</width>
|
||||||
@ -47,9 +47,9 @@
|
|||||||
<googleplay:author>HPR Volunteer</googleplay:author>
|
<googleplay:author>HPR Volunteer</googleplay:author>
|
||||||
<googleplay:description>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.</googleplay:description>
|
<googleplay:description>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.</googleplay:description>
|
||||||
<googleplay:email>admin@hackerpublicradio.org</googleplay:email>
|
<googleplay:email>admin@hackerpublicradio.org</googleplay:email>
|
||||||
<googleplay:image href="<!--% absolute_url(http_baseurl) %-->images/hpr_feed_itunes.png"/>
|
<googleplay:image href="https://www.hackerpublicradio.org/images/hpr_feed_itunes.png"/>
|
||||||
<googleplay:category text="Technology"/>
|
<googleplay:category text="Technology"/>
|
||||||
<atom:link href="<!--% absolute_url(http_baseurl) %--><!--% filename %-->" rel="self" type="application/rss+xml" />
|
<atom:link href="https://www.hackerpublicradio.org/<!--% filename %-->" rel="self" type="application/rss+xml" />
|
||||||
<pubDate><!--% format_feed_date(date.now) %--></pubDate>
|
<pubDate><!--% format_feed_date(date.now) %--></pubDate>
|
||||||
|
|
||||||
<!--% INCLUDE $content %-->
|
<!--% INCLUDE $content %-->
|
||||||
|
@ -1,7 +1,8 @@
|
|||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
<!--% PROCESS "queries-call_for_shows-${constants.database}.tpl.html" %-->
|
<!--% PROCESS "queries-call_for_shows-${constants.database}.tpl.html" %-->
|
||||||
<!--% MACRO display_call_for_shows BLOCK %-->
|
<!--% MACRO display_call_for_shows BLOCK %-->
|
||||||
<!--% result_call_for_shows = DBI.prepare(query_call_for_shows) %-->
|
<!--% result_call_for_shows = DBI.prepare(query_call_for_shows)
|
||||||
|
%-->
|
||||||
<!--% results_call_for_shows = result_call_for_shows.execute().get_all() %-->
|
<!--% results_call_for_shows = result_call_for_shows.execute().get_all() %-->
|
||||||
<!--% IF results_call_for_shows.0.request_for_shows == 1 %-->
|
<!--% IF results_call_for_shows.0.request_for_shows == 1 %-->
|
||||||
<!--% USE date %-->
|
<!--% USE date %-->
|
||||||
|
@ -12,11 +12,7 @@ from the series <em><a href="<!--% baseurl %-->series/<!--% zero_pad_left(series
|
|||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO display_tags(tags) BLOCK %-->
|
<!--% MACRO display_tags(tags) BLOCK %-->
|
||||||
<span><label>Tags:</label> <em>
|
<span><label>Tags:</label> <em><!--% tags %--></em>.</span>
|
||||||
<!--% FOREACH tag IN tags.csv_parse %-->
|
|
||||||
<a href="<!--% absolute_path(baseurl) %-->tags.html#<!--% tag.lower %-->"><!--% tag %--></a><!--% IF loop.count == loop.size %-->.<!--% ELSE %-->,<!--% END %-->
|
|
||||||
<!--% END %--></em>
|
|
||||||
</span>
|
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO display_listen_in(eps_id, episode_type) BLOCK %-->
|
<!--% MACRO display_listen_in(eps_id, episode_type) BLOCK %-->
|
||||||
@ -57,7 +53,7 @@ or
|
|||||||
|
|
||||||
<!--% MACRO twat_show_summary(show, hide_host) BLOCK %-->
|
<!--% MACRO twat_show_summary(show, hide_host) BLOCK %-->
|
||||||
|
|
||||||
<h3 class="title"><a href="<!--% absolute_path(baseurl) %-->eps/twat<!--% zero_pad_left(show.id) %-->/index.html">Today with a Techie Ep.<!--% show.id %--> :: <!--% show.title %--></a> <!--% IF hide_host == "" %-->
|
<h3 class="title"><a href="<!--% absolute_path(baseurl) %-->eps/twat<!--% zero_pad_left(show.id) %-->/index.html">twat<!--% show.id %--> :: <!--% show.title %--></a> <!--% IF hide_host == "" %-->
|
||||||
hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(show.hostid) %-->.html"><!--% show.host %--></a>
|
hosted by <a href="<!--% absolute_path(baseurl) %-->correspondents/<!--% zero_pad_left(show.hostid) %-->.html"><!--% show.host %--></a>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
</h3>
|
</h3>
|
||||||
|
@ -1,25 +1,23 @@
|
|||||||
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
<!--% PROCESS 'shared-utils.tpl.html' %-->
|
||||||
<!--% MACRO display_item(episode, file_extension, audio_mime_type) BLOCK %-->
|
<!--% MACRO display_item(episode, file_extension, audio_mime_type) BLOCK %-->
|
||||||
<!--% USE HTML.Strip emit_spaces = 0 %-->
|
|
||||||
<!--% IF audio_mime_type == "" %-->
|
<!--% IF audio_mime_type == "" %-->
|
||||||
<!--% audio_mime_type = 'ogg' %-->
|
<!--% audio_mime_type = 'ogg' %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<item>
|
<item>
|
||||||
<itunes:explicit><!--% display_explicit_feed(episode.explicit) %--></itunes:explicit>
|
<itunes:explicit><!--% display_explicit_feed(episode.explicit) %--></itunes:explicit>
|
||||||
<googleplay:explicit><!--% display_explicit_feed_2(episode.explicit) %--></googleplay:explicit>
|
<googleplay:explicit><!--% display_explicit_feed(episode.explicit) %--></googleplay:explicit>
|
||||||
<title>HPR<!--% zero_pad_left(episode.id) %-->: <!--% episode.title | html_strip | xml_entity %--></title>
|
<title>HPR<!--% zero_pad_left(episode.id) %-->: <!--% episode.title %--></title>
|
||||||
<author><!--% episode.email %--> (<!--% episode.host %-->)</author>
|
<author><!--% episode.email %--> (<!--% episode.host %-->)</author>
|
||||||
<googleplay:author><!--% episode.email %--> (<!--% episode.host %-->)</googleplay:author>
|
<googleplay:author><!--% episode.email %--> (<!--% episode.host %-->)</googleplay:author>
|
||||||
<itunes:author><!--% episode.email %--> (<!--% episode.host %-->)</itunes:author>
|
<itunes:author><!--% episode.email %--> (<!--% episode.host %-->)</itunes:author>
|
||||||
<googleplay:image href="<!--% absolute_url(http_baseurl) %-->images/hpr_feed_itunes.png"/>
|
<googleplay:image href="https://www.hackerpublicradio.org/images/hpr_feed_itunes.png"/>
|
||||||
<link><!--% absolute_url(baseurl) %-->eps/hpr<!--% zero_pad_left(episode.id) %-->/index.html</link>
|
<link>https://www.hackerpublicradio.org/eps/hpr/<!--% zero_pad_left(episode.id) %-->/index.html</link>
|
||||||
<description><![CDATA[<!--% episode.notes %-->]]>
|
<description><![CDATA[<!--% episode.notes %-->]]>
|
||||||
</description>
|
</description>
|
||||||
<itunes:summary><![CDATA[<!--% episode.notes.substr(0, 4000) | html_strip | xml_entity %-->]]>
|
<itunes:summary><![CDATA[<!--% episode.notes %-->]]>
|
||||||
</itunes:summary>
|
</itunes:summary>
|
||||||
<pubDate><!--% format_feed_date(episode.date) %--></pubDate>
|
<pubDate><!--% format_feed_date(episode.date) %--></pubDate>
|
||||||
<enclosure url="<!--% http_baseurl %-->eps/hpr<!--% zero_pad_left(episode.id) %-->.<!--% file_extension %-->" length="<!--% episode.length %-->" type="audio/<!--% audio_mime_type %-->"/>
|
<enclosure url="http://hackerpublicradio.org/eps/hpr<!--% zero_pad_left(episode.id) %-->.<!--% file_extension %-->" length="<!--% episode.duration * 1000 %-->" type="audio/<!--% audio_mime_type %-->"/>
|
||||||
<guid><!--% http_baseurl %-->eps/hpr<!--% zero_pad_left(episode.id) %-->.<!--% file_extension %--></guid>
|
<guid>http://hackerpublicradio.org/eps/hpr<!--% zero_pad_left(episode.id) %-->.<!--% file_extension %--></guid>
|
||||||
</item>
|
</item>
|
||||||
|
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
@ -2,9 +2,7 @@
|
|||||||
<h2>Show Transcript</h2>
|
<h2>Show Transcript</h2>
|
||||||
<p>Automatically generated using <a href="https://github.com/openai/whisper">whisper</a>
|
<p>Automatically generated using <a href="https://github.com/openai/whisper">whisper</a>
|
||||||
<pre><code>whisper --model tiny --language en hpr<!--% zero_pad_left(episode.id) %-->.wav</code></pre></p>
|
<pre><code>whisper --model tiny --language en hpr<!--% zero_pad_left(episode.id) %-->.wav</code></pre></p>
|
||||||
<p>
|
|
||||||
You can save these subtitle files to the same location as the HPR Episode, and they will automatically show in players like <a href="https://mpv.io/">mpv</a>, <a href="https://www.videolan.org/vlc/">vlc</a>. Some players allow you to specify the subtitle file location.
|
|
||||||
</p>
|
|
||||||
<ul>
|
<ul>
|
||||||
<li>Text: <a href="<!--% media_path(episode.id, episode_type, 'txt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.txt</a></li>
|
<li>Text: <a href="<!--% media_path(episode.id, episode_type, 'txt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.txt</a></li>
|
||||||
<li><a href="https://en.wikipedia.org/wiki/WebVTT">WebVTT</a>: <a href="<!--% media_path(episode.id, episode_type, 'vtt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.vtt</a></li>
|
<li><a href="https://en.wikipedia.org/wiki/WebVTT">WebVTT</a>: <a href="<!--% media_path(episode.id, episode_type, 'vtt', baseurl, media_baseurl) %-->">hpr<!--% zero_pad_left(episode.id) %-->.vtt</a></li>
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
<!--% MACRO zero_pad_left(word, pad_length) BLOCK %-->
|
<!--% MACRO zero_pad_left(word, pad_length) BLOCK %-->
|
||||||
<!--% IF pad_length %-->
|
<!--% IF pad_length %-->
|
||||||
<!--% zero_pad_format = "%0${pad_length}s" %-->
|
<!--% zero_pad_format = "%0${pad_length}s" %-->
|
||||||
<!--% ELSE %-->
|
<!--% ELSE %-->
|
||||||
<!--% zero_pad_format = "%04s" %-->
|
<!--% zero_pad_format = "%04s" %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% USE String(word) %-->
|
<!--% USE String(word) %-->
|
||||||
<!--% String.format(zero_pad_format) %-->
|
<!--% String.format(zero_pad_format) %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO display_choice(choice, display_when_true, display_when_false) BLOCK %-->
|
<!--% MACRO display_choice(choice, display_when_true, display_when_false) BLOCK %-->
|
||||||
@ -17,7 +17,7 @@
|
|||||||
<!--% seconds = duration_sec % 60 %-->
|
<!--% seconds = duration_sec % 60 %-->
|
||||||
<!--% USE format %-->
|
<!--% USE format %-->
|
||||||
<!--% minutes_only = format("%d") %-->
|
<!--% minutes_only = format("%d") %-->
|
||||||
<!--% minutes = minutes_only(duration_sec / 60) %-->
|
<!--% minutes = minutes_only(duration_sec / 60) %-->
|
||||||
<!--% hours_only = format("%d") %-->
|
<!--% hours_only = format("%d") %-->
|
||||||
<!--% hours = hours_only(minutes / 60) %-->
|
<!--% hours = hours_only(minutes / 60) %-->
|
||||||
<!--% IF hours >= 1 %-->
|
<!--% IF hours >= 1 %-->
|
||||||
@ -35,10 +35,6 @@
|
|||||||
<!--% display_choice(is_explicit, 'yes', 'no') %-->
|
<!--% display_choice(is_explicit, 'yes', 'no') %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO display_explicit_feed_2(is_explicit) BLOCK %-->
|
|
||||||
<!--% display_choice(is_explicit, 'Yes', 'No') %-->
|
|
||||||
<!--% END %-->
|
|
||||||
|
|
||||||
<!--% MACRO format_feed_date(date_to_format) BLOCK %-->
|
<!--% MACRO format_feed_date(date_to_format) BLOCK %-->
|
||||||
<!--% USE feed_date = date(format = '%a, %d %b %Y %H:%M:%S +0000', gmt=1) %-->
|
<!--% USE feed_date = date(format = '%a, %d %b %Y %H:%M:%S +0000', gmt=1) %-->
|
||||||
<!--% feed_date.format(date_to_format) %-->
|
<!--% feed_date.format(date_to_format) %-->
|
||||||
@ -49,20 +45,6 @@
|
|||||||
<!--% iso8601_date.format(date_to_format) %-->
|
<!--% iso8601_date.format(date_to_format) %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO absolute_url(base, path) BLOCK %-->
|
|
||||||
<!--% UNLESS base.empty %-->
|
|
||||||
<!--% UNLESS base.substr(-1) == '/' %-->
|
|
||||||
<!--% base = base _ '/' %-->
|
|
||||||
<!--% END %-->
|
|
||||||
<!--% END %-->
|
|
||||||
<!--% UNLESS path.empty %-->
|
|
||||||
<!--% IF path.substr(0,1) == '/' %-->
|
|
||||||
<!--% path = path.substr(1) %-->
|
|
||||||
<!--% END %-->
|
|
||||||
<!--% END %-->
|
|
||||||
<!--% base _ path %-->
|
|
||||||
<!--% END %-->
|
|
||||||
|
|
||||||
<!--% MACRO absolute_path(baseurl) BLOCK %-->
|
<!--% MACRO absolute_path(baseurl) BLOCK %-->
|
||||||
<!--% IF baseurl %-->./<!--% ELSE %-->/<!--% END %-->
|
<!--% IF baseurl %-->./<!--% ELSE %-->/<!--% END %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
@ -75,23 +57,23 @@
|
|||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO media_path(episode_id, episode_type, media_type, baseurl, media_baseurl) BLOCK %-->
|
<!--% MACRO media_path(episode_id, episode_type, media_type, baseurl, media_baseurl) BLOCK %-->
|
||||||
<!--% IF episode_type == "twat" %-->
|
<!--% IF episode_type == "twat" %-->
|
||||||
<!--% padding = 3 %-->
|
<!--% padding = 3 %-->
|
||||||
<!--% media_folder = "eps/"; padding = 3 %-->
|
<!--% media_folder = "eps/"; padding = 3 %-->
|
||||||
<!--% ELSE %-->
|
<!--% ELSE %-->
|
||||||
<!--% media_folder = "local/" %-->
|
<!--% media_folder = "local/" %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% IF media_baseurl %-->
|
<!--% IF media_baseurl %-->
|
||||||
<!--% transcription_types = "txt srt vtt" %-->
|
<!--% transcription_types = "txt srt vtt" %-->
|
||||||
<!--% USE String(transcription_types) %-->
|
<!--% USE String(transcription_types) %-->
|
||||||
<!--% USE String(media_baseurl) %-->
|
<!--% USE String(media_baseurl) %-->
|
||||||
<!--% IF transcription_types.search(media_type) && media_baseurl.search('archive.org') %-->
|
<!--% IF transcription_types.search(media_type) && media_baseurl.search('archive.org') %-->
|
||||||
<!--% media_baseurl = "${media_baseurl}hpr\$eps_id/" %-->
|
<!--% media_baseurl = "${media_baseurl}hpr\$eps_id/" %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% media_folder = "" %-->
|
<!--% media_folder = "" %-->
|
||||||
<!--% media_baseurl = media_baseurl.replace('\$eps_id', zero_pad_left(episode_id)) %-->
|
<!--% media_baseurl = media_baseurl.replace('\$eps_id', zero_pad_left(episode_id)) %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% media_basepath(baseurl, media_baseurl) %--><!--% media_folder %--><!--% episode_type %--><!--% zero_pad_left(episode_id, padding) %-->.<!--% media_type %-->
|
<!--% media_basepath(baseurl, media_baseurl) %--><!--% media_folder %--><!--% episode_type %--><!--% zero_pad_left(episode_id, padding) %-->.<!--% media_type %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
|
||||||
<!--% MACRO step_navigation(baseurl, links, folder) BLOCK %-->
|
<!--% MACRO step_navigation(baseurl, links, folder) BLOCK %-->
|
||||||
@ -99,15 +81,15 @@
|
|||||||
<!--% folder = folder %--><!--% ELSE %--><!--% folder = "hpr" %-->
|
<!--% folder = folder %--><!--% ELSE %--><!--% folder = "hpr" %-->
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<small><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.earliest) %-->/index.html" rel="first"><< First</a>,
|
<small><a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.earliest) %-->/index.html" rel="first"><< First</a>,
|
||||||
<!--% IF links.previous %-->
|
<!--% IF links.previous %-->
|
||||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.previous) %-->/index.html" rel="previous">< Previous</a>,
|
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.previous) %-->/index.html" rel="previous">< Previous</a>,
|
||||||
<!--% ELSE %-->
|
<!--% ELSE %-->
|
||||||
<span><</span> Previous,
|
<span><</span> Previous,
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<!--% IF links.next %-->
|
<!--% IF links.next %-->
|
||||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.next) %-->/index.html" rel="next">Next ></a>,
|
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.next) %-->/index.html" rel="next">Next ></a>,
|
||||||
<!--% ELSE %-->
|
<!--% ELSE %-->
|
||||||
Next <span>></span>
|
Next <span>></span>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last">Latest >></a></small>
|
<a href="<!--% absolute_path(baseurl) %-->eps/<!--% folder %--><!--% zero_pad_left(links.latest) %-->/index.html" rel="last">Latest >></a></small>
|
||||||
<!--% END %-->
|
<!--% END %-->
|
||||||
|
Loading…
Reference in New Issue
Block a user