Skip to content

Allows for a One-Way Sync from Stremio to Simkl. Plan is to have a Two-Way Sync

Notifications You must be signed in to change notification settings

aliyss/simkl-stremio

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Table of Contents

WARNING

I cannot stress enough… Use this if you don’t mind changes to your simkl. I have not tested everything. It works for me currently. It’s a syncing addon which may not work as expected, because of what I need in the “Help” Section.

Info

Allows for a One-Way Sync from Stremio to Simkl. Plan is to have a Two-Way Sync

Help

If you want to help, I have two things I need to figure out:

How to manage small diffs

I only want to sync necessary stuff, so a mapping would be nice like:

if (symkl.last_watched_at > stremio.state.lastWatched) {
  return false
}

How to manage mapping

I want to map the info as correctly as possible, so a mapping would look like:

if (stremio.state.flaggedAsWatched) {
  symkl.to = "completed"
}

Warning

Some Syncing may not work as expected. I really tried to manage it as well as possible. The addon works for me, but I really can’t take any responsibility.

There are some checks in place for backfilling:

  • List Update: Ignored if Simkl already marked as complete
  • Watch History Update (Movie): Ignored if Simkl already marked as complete
  • Watch History Update (Show): Ignored if Simkl lastWatched is greater than Stremio

I plan on adding more checks to limit and only process necessary items:

  • If you have any more checks to recommend feel free to open an issue.

ToDo

  • [X] Only sync actual diffs
  • [ ] Sync Lists from Simkl to Stremio
  • [ ] Sync History from Simkl to Stremio
  • [X] Sync Lists from Stremio to Simkl
  • [X] Sync History from Stremio to Simkl
  • [ ] Stremio listen to stream events and update Simkl live

Use the Addon

Click here!

Getting the Client Id from Simkl

  1. GoTo: https://simkl.com/settings/developer/new/
  2. Create an app
  3. Redirect URI: https://simkl.com/

Modify and Build yourself

Build

npm install
npm run build

Start

Start the program. Then go to http://localhost:7000/configure

npm run start

Sync

The syncing will start the moment you finish your first watched episode. You can check the console for successfull syncs. In case at some point syncing stops due to an invalid authKey restart stremio and watch another episode for now. If it still fails open an issue with some details so I can check it out.

Options

Following Options are also available (check the source code):

SIMKL_BACKFILL_LISTSHOWS=true # Option if it should sync shows to simkl list on boot
SIMKL_BACKFILL_LISTMOVIES=true # Option if it should sync movies to simkl list on boot
SIMKL_BACKFILL_WATCHHISTORYSHOWS=true # Option if it should sync shows to simkl history on boot
SIMKL_BACKFILL_WATCHHISTORYMOVIES=true # Option if it should sync movies to simkl history on boot

# If this is enabled it will add shows and movies to the list, but also move them around on simkl using stremio as the leader.
SIMKL_BACKFILL_MODIFYLIST=false

# If this is enabled it will disregard specific watched episodes for shows, but instead mark all previous shows before the current as watched.
# Use this if you more often than not forget to mark episodes as watched.
SIMKL_BACKFILL_LASTEPISODEFILL=false

What else?

The code is honestly a mess, but I believe that it would be worse of me to showcase a video of it working and then saying I need to clean up the code before pushing it to GitHub. At least in the meantime someone may make use of this.

It’s currently a proof of concept. Depending on how much interest there is, I’ll clean it up and not just have it workable.

Any pull requests are of course welcome.