Skip to content

aliyss/syncribullet

Repository files navigation

Table of Contents

Info

Currently the addon synchronizes with following services:

  • Anilist
  • Simkl

I plan on adding the following in the near future:

  • MyAnimelist
  • Kitsu
  • Trakt

Goal

I want to implement a two way sync over multiple services with Stremio acting as the Sender and the watchlists acting as the Receivers.

Help

If you want to help, the next step is adding mappings between the services to a generalized format.

Syncing

The idea is that everything is the same everywhere. So a mapping to check what should be synced would look like:

let lastWatched;
if (symkl.last_watched_at > stremio.state.lastWatched) {
  lastWatched = symkl.last_watched_at;
} else if (anilist.mediaEntry.last_watched) {
  lastWatched = anilist.mediaEntry.last_watched;
}

Mapping

Information should be mapped as much as possible. After deciding the leader of the sync, we get all possible values and fill up the rest:

// If Symkl has lastWatched
if (symkl.state === "completed") {
  stremio.state.flaggedAsWatched = true
  anilist.state = "COMPLETED"
}
// If Anilist has lastWatched
if (symkl.state === "COMPLETED") {
  stremio.state.flaggedAsWatched = true
  symcl.state = "completed"
}

WARNING

I have tested this as good as possible. Everything published here is currently good to go and shouldn’t mess up your library. That said if anything does happen… I can’t guarantee anything. Open up an Issue and I may be able to help out.

ToDo

Dynamic Sync

Dynamic Sync is when an item in the Senders is updated, that it get’s reflected on the Receivers.

  • [X] Dynamic Sync from Stremio to Anilist
  • [ ] Dynamic Sync from Stremio to Kitsu
  • [ ] Dynamic Sync from Stremio to MyAnimelist
  • [X] Dynamic Sync from Stremio to Simkl
  • [-] Dynamic Sync from Stremio to Trakt (Already native Support use that)

Import Sync

Import Sync is theoretically a one-time action where the whole library get’s synchronised from the Senders to the Receivers and vice-versa. But the plan is, that this can be run multiple times without wierd issues.

  • [ ] Import Sync from Stremio to Anilist
  • [ ] Import Sync from Stremio to Kitsu
  • [ ] Import Sync from Stremio to MyAnimelist
  • [-] Import Sync from Stremio to Simkl (Alternative until tested: simkl-stremio)
  • [-] Import Sync from Stremio to Trakt (Alternative until tested: trakt-stremio-import)

Advanced Sync

Advanced Sync is when the theoretical Receivers share their data between each other, validating and keeping each other in sync.

  • [ ] Sync between all Receivers

Two-Way Sync

Of course I’m going for the two-way sync. However this is harder than it actually seems at the moment. Due to not knowing what the prefered sync order is.

Catalogs

Stremio Catalog Support, self explanatory if you are using stremio.

  • [X] Anilist
  • [ ] Kitsu
  • [ ] MyAnimelist
  • [X] Simkl
  • [ ] Trakt

Use the Addon

Click here!

Modify and Build yourself

Build

npm install
npm run build

Start

Start the program. Then open the browser at the url mentioned, if this doesn’t already happen automatically.

npm run start

Develop

Instead of Start. Use the following. This will allow you to see the changes live.

npm run start:dev

Known Issues

  • Authtokens are not updated if they expire. I’m working on that.

What else?

Naming

I chose the name SyncriBullet, because I want to blend all of the tracking websites together in a synchronised mix. There’s not much more to it.

Pull Requests

Feel free to open pull requests if you think there can be improvements made. I will add an eslint check asap.

Stars

A star would be kind, but honestly I use GitHub stars more as bookmarks. So instead bookmark it.

Contact

Support

If you like what I do consider buying me a coffee ;)

Buy Me A Coffee