Настройка RSS-канала (для использования для подкастинга с iTunes), который считывает информацию из базы данных MySQL (используя php) - PullRequest
2 голосов
/ 06 февраля 2012

У меня есть RSS-канал, с которым у меня есть ссылка на iTunes для использования в подкастинге (все это работает).Однако я пытаюсь настроить его так, чтобы мне не приходилось жестко кодировать все данные подкаста в канал RSS.Таким образом, мой способ сделать это - использовать форму загрузки подкаста, которая загружает все данные в базу данных mysql, а затем использует цикл for в php для считывания их в ленту новостей.Получение данных из формы в базу данных работает отлично, и подключение и чтение из базы данных также работает.Однако, когда я пытаюсь внедрить это в RSS-канал, не появляется никаких «статей».Вот код для файла .rss:

<?xml version="1.0" encoding="UTF-8" ?>
<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
<channel>
<title>Victory Central Church Message Podcast</title>
<link>http://www.vc2online.com</link>
<language>en-us</language>
<copyright>&#x2117; &amp; &#xA9; 2012 Waller Hill Publishing</copyright>
<itunes:subtitle>Victory Central Church Podcast</itunes:subtitle>
<itunes:author>Victory Central Church</itunes:author>
<itunes:summary>The Sermons from Victory Central Church - A regional church sharing the life-giving message of Jesus Christ with Central Georgia and the world!</itunes:summary>
<description>The Sermons from Victory Central Church - A regional church sharing the life-giving message of Jesus Christ with Central Georgia and the world!</description>
<itunes:owner>
<itunes:name>Victory Central Church</itunes:name>
</itunes:owner>
<itunes:image href="images/podcasts_logo.jpg" />
<itunes:category text="Christianity">
<itunes:category text="Spirituality"/>
</itunes:category>

<?php

    $host = 'xxx.xx.xxx.xxx';
    $username = 'xxxx';
    $password = 'xxxx';
    $database = 'xxxx';

    mysql_connect($host, $username, $password) or die( "Unable to connect.");
    @mysql_select_db($database) or die( "Unable to select database.");

    $result = mysql_query("SELECT * FROM  `podcasts` WHERE 1 LIMIT 0 , 30");

    while ($row = mysql_fetch_array($result))
    {
        echo "<item>";
        echo "<title>" . $row['title'] . "</title>";
        echo "<itunes:author>" . $row['author'] . "</itunes:author>";
        echo "<itunes:subtitle>" . $row['subtitle'] . "</itunes:subtitle>";
        echo "<itunes:summary>" . $row['summary'] . "</itunes:summary>";
        echo "<itunes:image href=\"" . $row['imageurl'] . "\" />";
        echo "<enclosure url=\"" . $row['url'] . "\" type=\"" . $row['type'] . "\" />";
        echo "<guid>" . $row['guid'] . "</guid>";
        echo "<pubDate>" . $row['date'] . "</pubDate>";
        echo "<itunes:duration>" . $row['duration'] . "</itunes:duration>";
        echo "<itunes:keywords>" . $row['keywords'] . "</itunes:keywords>";
        echo "</item><br><p />";

    }

?>

</channel>
</rss>

Конечно, хост, пользователь, пароль и база данных включены в фактический код.Когда я запускаю этот код как есть, ошибки не отображаются.Только никакие "статьи" не обнаруживаются.Любая помощь приветствуется.Спасибо!

1 Ответ

0 голосов
/ 02 мая 2018

Я создал для этого небольшую библиотеку с открытым исходным кодом.

Вы можете скачать и узнать, как ее использовать здесь , но, тем не менее, приведу пример с к / п:

use iTunesPodcastFeed\Channel;
use iTunesPodcastFeed\FeedGenerator;
use iTunesPodcastFeed\Item;

require __DIR__ . '/vendor/autoload.php';

// SETUP CHANNEL
$title = 'Read2Me Daily Curated Articles';
$link = 'https://read2me.online';
$author = 'NYTimes and Medium';
$email = 'hello@read2me.online';
$image = 'https://d22fip447qchhd.cloudfront.net/api/widget/static/images/default-thumbnail.png';
$explicit = false;
$categories = [
    'News',
    'Technology',
    'Culture',
    'Entrepreneurship',
    'Productivity'
];
$description = 'Daily curated articles from New York Times and Medium';
$lang = 'en';
$copyright = 'The New York Times Company and The Medium Company';
$ttl = 43200; // 12 hours in seconds

$channel = new Channel(
    $title, $link, $author, $email,
    $image, $explicit, $categories,
    $description, $lang, $copyright, $ttl
);

// SETUP EPISODE
$title = "Trump Says Disclosure of Mueller Questions in Russia Probe Is ‘Disgraceful’";
$fileUrl = 'https://s3.read2me.online/audio/www-nytimes-com-2018-05-01-us-politics-trump-mueller-russia-questions-html-7e9601.mp3';
$duration = '2:18';
$description = 'WASHINGTON — President Trump on Tuesday said it was “disgraceful” that questions the special counsel would like to ask him were publicly disclosed, and he incorrectly noted that there were no questions about collusion. The president also said collusion was a “phony” crime.';
$date = 1525177808;
$filesize = 828387;
$mime = 'audio/mpeg';

$item = new Item(
    $title, $fileUrl, $duration,
    $description, $date, $filesize, $mime
);
$item2 = clone $item; // just to give you an idea of how it works

// SETUP FEED
$feed = new FeedGenerator($channel, ...[$item, $item2]);

// OUTPUT XML
header('Content-Type: application/xml; charset=utf-8');

print $feed->getXml();
...