More metadata, descriptions, refresh rate

This commit is contained in:
root 2022-11-30 17:50:22 +01:00
parent 1804879022
commit 3e0f3a54f9
2 changed files with 54 additions and 8 deletions

View file

@ -91,14 +91,18 @@ class PodcastRorController extends ControllerBase {
}
return $data;
}
public function podcast($query, $description) {
public function podcast($query, $title, $description, $link,
$expected_episodes_per_week
) {
// TODO: add $title argument to the function
$template = $this->twig->loadTemplate(drupal_get_path('module', 'podcast_ror') . '/templates/podcast.html.twig');
$query_results = $this->query($query);
$tmpl_data = [ 'ror' => array('podcast' => $query_results,
'url' => \Drupal::service('path.current')->getPath(),
'description' => $description,
'title' => 'Radio Onda Rossa',
'title' => $title,
'link' => $link,
'expected_episodes_per_week' => $expected_episodes_per_week,
)];
$headers = array(
'Content-Type' => 'application/rss+xml',
@ -126,19 +130,40 @@ class PodcastRorController extends ControllerBase {
}
public function podcastAll() {
$query = \Drupal::entityQuery('node');
return $this->podcast($query, 'Tutti gli aggiornamenti, i redazionali, le trasmissioni della radio di chi se la sente');
return $this->podcast($query, 'Radio Onda Rossa', 'Tutti gli aggiornamenti, i redazionali, le trasmissioni della radio di chi se la sente',
'http://www.ondarossa.info/',
30
);
}
public function podcastByType($contentType) {
$query = \Drupal::entityQuery('node')
->condition('type', $contentType);
// TODO: get "nice name" for $contentType
return $this->podcast($query, str_replace('+', ', ', $contentType));
$what = str_replace('+', ', ', $contentType);
return $this->podcast($query,
$what . ' (Radio Onda Rossa)',
$what,
'http://www.ondarossa.info/',
30
);
}
public function podcastByTrxID($trxID) {
$term = \Drupal\taxonomy\Entity\Term::load($trxID);
$trxName = $term->getName();
$trxDescriptionHTML = $term->getDescription();
$trxDescription = strip_tags($trxDescriptionHTML);
$trxURL = \Drupal\Core\Url::fromRoute('entity.taxonomy_term.canonical',
['taxonomy_term' => $trxID],
['absolute' => TRUE])->toString();
$query = \Drupal::entityQuery('node')
->condition('type', 'news_trasmissioni')
->condition('field_trasmissione', $trxID);
// TODO: discover Trx name, and pass it as podcast title
return $this->podcast($query, 'Trasmissione ' . $trxID);
return $this->podcast($query,
$trxName . ' (Radio Onda Rossa)',
$trxDescription,
$trxURL,
1,
);
}
}

View file

@ -3,12 +3,30 @@
xmlns:atom="http://www.w3.org/2005/Atom"
xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
xmlns:podcast="https://podcastindex.org/namespace/1.0"
xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
version="2.0">
<channel>
<atom:link href="http://www.ondarossa.info{{ ror.url | escape("html_attr") }}" rel="self" type="application/rss+xml" />
{% if ror.expected_episodes_per_week > 1 %}
<ttl>30</ttl>
<sy:updatePeriod>hourly</sy:updatePeriod>
<sy:updateFrequency>6</sy:updateFrequency>
{% else %}
<ttl>360</ttl>
<sy:updatePeriod>daily</sy:updatePeriod>
<sy:updateFrequency>3</sy:updateFrequency>
{% endif %}
<skipHours>
<hour>1</hour>
<hour>2</hour>
<hour>3</hour>
<hour>4</hour>
<hour>5</hour>
<hour>6</hour>
</skipHours>
<title>{{ror.title}}</title>
<link>http://www.ondarossa.info</link>
<link>{{ror.link}}</link>
<language>it-it</language>
<itunes:subtitle>La radio di chi se la sente</itunes:subtitle>
<itunes:author>Ondarossa</itunes:author>
@ -20,7 +38,10 @@
</itunes:owner>
<itunes:explicit>no</itunes:explicit>
<itunes:image href="http://www.ondarossa.info/favicon.png" />
<itunes:category text="News &amp; Politics"/>
<itunes:type>episodic</itunes:type>
<itunes:category text="News">
<itunes:category text="Politics"/>
</itunes:category >
<podcast:funding url="http://www.ondarossa.info/sostieni">Sostieni ondarossa</podcast:funding>
{% for nid, node in ror.podcast.nodes %}