Applicazione Nextcloud che replica l'API di base di gpodder.net per sincronizzare le applicazioni dei podcast (podcatcher) come AntennaPod. https://castopod.it
Go to file
Jonathan Flueren 0d6492e99d Set default since timestamp to 0 2022-05-25 23:57:42 +02:00
.github/workflows Add Nextcloud 24 ci test 2022-05-04 19:23:31 +02:00
appinfo Release 3.3.0 2022-05-04 19:23:31 +02:00
lib Set default since timestamp to 0 2022-05-25 23:57:42 +02:00
tests Change to mock in migration tests for better compatibility 2022-05-04 19:23:31 +02:00
vendor parse EpisodeAction message from AntennaPod 2021-06-27 13:24:17 +02:00
.gitignore parse EpisodeAction message from AntennaPod 2021-06-27 13:24:17 +02:00
CHANGELOG.md Don't crash on unauthenticated api call 2022-05-04 19:23:31 +02:00
Makefile ignore releases directory from tarball 2021-08-14 20:15:31 +02:00
README.md Update README.md 2022-04-23 19:44:29 +02:00
composer.json add minimal composer.json 2021-10-06 14:06:45 +02:00
composer.lock parse EpisodeAction message from AntennaPod 2021-06-27 13:24:17 +02:00

README.md

nextcloud-gpodder

Nextcloud app that replicates basic gpodder.net api to sync podcast consumer apps (podcatchers) like AntennaPod.

Clients supporting sync

client support status
AntennaPod Initial purpose for this project, as a synchronization endpoint for this client.
Support is available as of version 2.5.1.
KDE Kasts Supported since version 21.12

Installation

Either from the official Nextcloud app store (link to app page) or by downloading the latest release and extracting it into your Nextcloud apps/ directory.

💡 There is no app icon since there are no settings to be set.

API

subscription

  • get subscription changes: GET /index.php/apps/gpoddersync/subscriptions
    • (optional) GET parameter since (UNIX time)
  • upload subscription changes : POST /index.php/apps/gpoddersync/subscription_change/create
    • returns nothing

The API replicates this: https://gpoddernet.readthedocs.io/en/latest/api/reference/subscriptions.html

episode action

  • get episode actions: GET /index.php/apps/gpoddersync/episode_action
    • (optional) GET parameter since (UNIX time)
    • fields: podcast, episode, guid, action, timestamp, position, started, total
  • create episode actions: POST /index.php/apps/gpoddersync/episode_action/create
    • fields: podcast, episode, guid, action, timestamp, position, started, total
    • position, started and total are optional, default value is -1
    • returns JSON with current timestamp

The API replicates this: https://gpoddernet.readthedocs.io/en/latest/api/reference/events.html

we also process the property guid

Example requests:

GET /index.php/apps/gpoddersync/episode_action?since=1633240761

{
    "actions": [
      {
       "podcast": "http://example.com/feed.rss",
       "episode": "http://example.com/files/s01e20.mp3",
       "guid": "s01e20-example-org",
       "action": "PLAY",
       "timestamp": "2009-12-12T09:00:00",
       "started": 15,
       "position": 120,
       "total":  500
      },
      {
       "podcast": "http://example.com/feed.rss",
       "episode": "http://example.com/files/s01e20.mp3",
       "guid": "s01e20-example-org",
       "action": "DOWNLOAD",
       "timestamp": "2009-12-12T09:00:00",
       "started": -1,
       "position": -1,
       "total":  -1
      },
    ],
    "timestamp": 12345
}
POST /index.php/apps/gpoddersync/episode_action/create

[
  {
   "podcast": "http://example.com/feed.rss",
   "episode": "http://example.com/files/s01e20.mp3",
   "guid": "s01e20-example-org",
   "action": "play",
   "timestamp": "2009-12-12T09:00:00",
   "started": 15,
   "position": 120,
   "total":  500
  },
  {
   "podcast": "http://example.org/podcast.php",
   "episode": "http://ftp.example.org/foo.ogg",
   "guid": "foo-bar-123",
   "action": "DOWNLOAD",
   "timestamp": "2009-12-12T09:05:21",
  }
]