kiwilan/php-rss

用于生成预设RSS流的PHP包。

资助包维护!
kiwilan

0.3.11 2023-09-24 13:18 UTC

README

Banner with abstract data picture in background and PHP RSS title

php version downloads license tests codecov

警告

尚未准备就绪用于生产

用于生成预设RSS流的PHP包。

功能

// TODO

路线图

安装

您可以通过composer安装此包

composer require kiwilan/php-rss

使用方法

播客

播客RSS feed相当古老,有很多不同的版本。

$podcast = Feed::make()->podcast()
  ->title('2 Heures De Perdues')
  ->link('https://www.2hdp.fr')
  ->atomLink('https://www.2hdp.fr/xml')
  ->subtitle('Pourquoi gagner du temps quand on peut en perdre devant de mauvais films ?')
  ->description('Petit podcast de rigolos pour les amateurs de cinéma. Pourquoi gagner du temps quand on peut en perdre devant de mauvais films')
  ->language('fr')
  ->copyright('℗ & © 2019 Fréquence Moderne')
  ->lastUpdate(new DateTime('2021-09-01 00:00:00'))
  ->webmaster('feeds@ausha.co (Ausha)')
  ->generator('Ausha (https://www.ausha.co)')
  ->keywords(['films', 'critiques', 'comédie'])
  ->author('2HDP')
  ->ownerName('2 Heures De Perdues')
  ->ownerEmail('2heuresdeperdues@gmail.com')
  ->isExplicit()
  ->isPrivate()
  ->type(ItunesTypeEnum::episodic)
  ->addCategory(ItunesCategoryEnum::tv_film, ItunesSubCategoryEnum::tv_films_film_reviews)
  ->image('https://raw.githubusercontent.com/kiwilan/php-rss/main/tests/examples/folder.jpeg');

$item1 = PodcastItem::make()
  ->title("Peau d'Ane")
  ->guid('custom-and-unique-key', isPermaLink: true)
  ->subtitle('On discute du chef d\'oeuvre de Jacques. Des réactions ? @2_HDP')
  ->description('<p>On discute du chef d\'oeuvre de Jacques. Des réactions ? @2_HDP</p>')
  ->publishDate('2023-06-14 08:39:25')
  ->enclosure(
      url: 'https://chtbl.com/track/47E579/https://audio.ausha.co/B4mpWfDq5KDa.mp3?t=1685693288',
      length: 56898528,
      type: 'audio/mpeg'
  )
  ->link('https://podcast.ausha.co/2-heures-de-perdues/peau-d-ane')
  ->author('2 Heures de Perdues')
  ->keywords([])
  ->duration(3551)
  ->episodeType(ItunesEpisodeTypeEnum::full)
  ->season(9)
  ->episode(34)
  ->image('https://image.ausha.co/XboDHYC69Oorw8MBObAkQ2sTPdxGTkexH3nYQ8Ky_1400x1400.jpeg?t=1619074925');

$podcast->addItem($item1); // Add item to podcast
$podcast->get(); // Get XML feed

原始

注意

您可以使用spatie/array-to-xml使用指南来帮助您。

$podcast = Feed::make()
        ->template(
            root: 'rss',
            version: '1.0',
            encoding: 'UTF-8',
            attributes: [
                ...FeedConstants::RSS_FEED,
                'xmlns:itunes' => 'http://www.itunes.com/dtds/podcast-1.0.dtd',
            ],
        )
        ->raw()
        ->channel([
            'title' => '2 Heures De Perdues',
            'link' => 'https://www.2hdp.fr',
            'description' => 'Petit podcast de rigolos pour les amateurs de cinéma. Pourquoi gagner du temps quand on peut en perdre devant de mauvais films',
            'language' => 'fr',
            'lastBuildDate' => 'Wed, 01 Sep 2021 00:00:00 +0000',
        ])
        ->addItem([
            'title' => "Peau d'Ane",
            'link' => 'https://podcast.ausha.co/2-heures-de-perdues/peau-d-ane',
            'description' => '<p>On discute du chef d\'oeuvre de Jacques. Des réactions ? @2_HDP</p>',
            'pubDate' => 'Wed, 14 Jun 2023 08:39:25 +0000',
            'enclosure' => [
                '_attributes' => [
                    'url' => 'https://chtbl.com/track/47E579/https://audio.ausha.co/B4mpWfDq5KDa.mp3?t=1685693288',
                    'length' => '56898528',
                    'type' => 'audio/mpeg',
                ],
            ],
            '__custom:itunes\\:author' => '2 Heures de Perdues',
            '__custom:itunes\\:duration' => '00:59:11',
            '__custom:itunes\\:episodeType' => 'full',
        ]);

带有Laravel的示例

<?php

namespace App\Http\Controllers;

use DateTime;
use Kiwilan\Rss\Enums\ItunesCategoryEnum;
use Kiwilan\Rss\Enums\ItunesExplicitEnum;
use Kiwilan\Rss\Enums\ItunesSubCategoryEnum;
use Kiwilan\Rss\Enums\ItunesTypeEnum;
use Kiwilan\Rss\Feed;
use Spatie\RouteAttributes\Attributes\Get;
use Spatie\RouteAttributes\Attributes\Prefix;

#[Prefix('rss')]
class RssController extends Controller
{
    #[Get('/')]
    public function index()
    {
        $podcast = Feed::make()->podcast()
            ->title('2 Heures De Perdues')
            ->link('https://www.2hdp.fr')
            ->subtitle('Pourquoi gagner du temps quand on peut en perdre devant de mauvais films ?')
            ->description('Petit podcast de rigolos pour les amateurs de cinéma. Pourquoi gagner du temps quand on peut en perdre devant de mauvais films')
            ->language('fr')
            ->copyright('℗ & © 2019 Fréquence Moderne')
            ->lastUpdate(new DateTime('2021-09-01 00:00:00'))
            ->webmaster('feeds@ausha.co (Ausha)')
            ->generator('Ausha (https://www.ausha.co)')
            ->keywords(['films', 'critiques', 'comédie'])
            ->author('2 Heures De Perdues', '2heuresdeperdues@gmail.com')
            ->explicit(ItunesExplicitEnum::yes)
            ->isPrivate()
            ->type(ItunesTypeEnum::episodic)
            ->addCategory(ItunesCategoryEnum::tv_film, ItunesSubCategoryEnum::tv_films_film_reviews)
            ->image('https://raw.githubusercontent.com/kiwilan/php-rss/main/tests/examples/folder.jpeg')
        ;

        return response($podcast->get(), 200, [
            'Content-Type' => 'application/xml',
        ]);
    }
}

测试

composer test

资源

规范

RSS验证器

feed应用

变更日志

请参阅CHANGELOG获取有关最近更改的更多信息。

鸣谢

  • spatiespatie/package-skeleton-phpspatie/array-to-xml

许可

MIT许可(MIT)。请参阅许可文件获取更多信息。