chrishardie/laravel-calendar-crawler

Laravel 包,用于抓取网页上的事件数据,生成相应的 ICS 推送

v1.0.0 2021-10-16 16:04 UTC

This package is auto-updated.

Last update: 2024-10-03 18:47:33 UTC


README

Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads

安装

您可以通过 composer 安装此包

composer require chrishardie/laravel-calendar-crawler

您可以使用以下命令发布和运行迁移

php artisan vendor:publish --provider="ChrisHardie\CalendarCrawler\CalendarCrawlerServiceProvider" --tag="calendar-crawler-migrations"
php artisan migrate

您可以使用以下命令发布配置文件

php artisan vendor:publish --provider="ChrisHardie\CalendarCrawler\CalendarCrawlerServiceProvider" --tag="calendar-crawler-config"

这是已发布的配置文件内容

return [
    'default_update_frequency' => 720, // Refresh every 12 hours

    'calendar_name' => 'Calendar of Events',

    'calendar_description' => 'A calendar of events from various sources.',

    // Default URL of calendar ICS feed
    'stream_url' => '/calendar/calendar.ics',

    // Source-specific authentication information
    'auth' => [
        'google' => [
            'api_key' => env('GOOGLE_CAL_API_KEY'),
        ]
    ],
];

您可以为所有存储的事件的日历 ICS 推送添加一个 Web 路由

Route::calendarstream();

用法

  1. 使用管理界面、Artisan tinker 会话、DB 填充文件或直接数据库调用添加日历源。需要的主要字段包括
  • 名称
  • 类型(目前,GoogleCalendarFacebookPage
  • 主页 URL
  • 位置(Google 事件的日历 ID 或 Facebook 页面的数字 ID)
        DB::table('calendar_sources')->insert([
            'name' => 'Your Local Government',
            'type' => 'GoogleCalendar',
            'home_url' => 'https://www.government.gov/',
            'location' => 'googlecalendarid@gmail.com',
        ]);

        DB::table('calendar_sources')->insert([
            'name' => 'Cool Nonprofit Organization',
            'type' => 'FacebookPage',
            'home_url' => 'https://#/orgname/',
            'location' => '12345678',
        ]);
  1. 如果您指定了任何 GoogleCalendar 源,您需要创建一个 API 密钥,然后在 .env 文件中定义一个 GOOGLE_CAL_API_KEY,其值为该密钥。
  2. 提供的源将根据指定的更新频率进行抓取。
  3. 您可以直接在 Laravel 应用程序中使用事件数据,或从指定的 stream_url 位置检索事件 ICS 日历推送。

抓取问题、错误和通知将被写入配置的日志堆栈。考虑使用 Slack 频道以方便起见。

卸载

删除安装期间创建的任何 Web 路由。

删除包及其依赖项

composer remove chrishardie/laravel-calendar-crawler

删除 config/calendar-crawler.php

在新迁移中删除相关表

Schema::dropIfExists('calendar_sources');
Schema::dropIfExists('events');

更新日志

有关最近更改的更多信息,请参阅 更新日志

贡献

有关详细信息,请参阅 贡献指南

致谢

许可证

MIT 许可证(MIT)。有关更多信息,请参阅 许可证文件