{"id":13620949,"url":"https://github.com/cecobask/imdb-trakt-sync","last_synced_at":"2026-01-12T13:25:09.394Z","repository":{"id":41148600,"uuid":"485114212","full_name":"cecobask/imdb-trakt-sync","owner":"cecobask","description":"Automatic sync from IMDb to Trakt (watchlist, lists, ratings and history) using GitHub actions.","archived":false,"fork":false,"pushed_at":"2025-09-13T20:32:45.000Z","size":880,"stargazers_count":112,"open_issues_count":1,"forks_count":249,"subscribers_count":7,"default_branch":"main","last_synced_at":"2025-09-13T21:11:52.736Z","etag":null,"topics":["github-actions","golang","imdb","trakt","webscraping"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cecobask.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null},"funding":{"github":["cecobask"],"patreon":null,"open_collective":null,"ko_fi":null,"tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2022-04-24T18:58:22.000Z","updated_at":"2025-09-13T20:25:56.000Z","dependencies_parsed_at":"2023-12-01T14:15:02.963Z","dependency_job_id":"43ce31a5-6a06-4caa-b181-09e2279f44c5","html_url":"https://github.com/cecobask/imdb-trakt-sync","commit_stats":null,"previous_names":[],"tags_count":24,"template":false,"template_full_name":null,"purl":"pkg:github/cecobask/imdb-trakt-sync","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cecobask%2Fimdb-trakt-sync","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cecobask%2Fimdb-trakt-sync/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cecobask%2Fimdb-trakt-sync/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cecobask%2Fimdb-trakt-sync/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cecobask","download_url":"https://codeload.github.com/cecobask/imdb-trakt-sync/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cecobask%2Fimdb-trakt-sync/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338997,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T12:22:26.515Z","status":"ssl_error","status_checked_at":"2026-01-12T12:22:10.856Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.6:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["github-actions","golang","imdb","trakt","webscraping"],"created_at":"2024-08-01T21:01:01.041Z","updated_at":"2026-01-12T13:25:09.377Z","avatar_url":"https://github.com/cecobask.png","language":"Go","funding_links":["https://github.com/sponsors/cecobask"],"categories":["Go","golang"],"sub_categories":[],"readme":"[![sync](https://github.com/cecobask/imdb-trakt-sync/actions/workflows/sync.yaml/badge.svg)](https://github.com/cecobask/imdb-trakt-sync/actions/workflows/sync.yaml)\n[![quality](https://github.com/cecobask/imdb-trakt-sync/actions/workflows/quality.yaml/badge.svg)](https://github.com/cecobask/imdb-trakt-sync/actions/workflows/quality.yaml)\n\n# imdb-trakt-sync\n\n\u003cimg src=\"./assets/logo.png\" alt=\"logo\"/\u003e\n\nCommand line application that can sync [IMDb](https://www.imdb.com/) and [Trakt](https://trakt.tv/dashboard) user data - watchlist, lists, ratings and history.  \nTo achieve its goals the application is using the [Trakt API](https://trakt.docs.apiary.io/) and web scraping.  \nKeep in mind that this application is performing one-way sync from IMDb to Trakt. This means that any changes made on IMDb will be reflected on Trakt, but not the other way around.\n\n# Configuration\n\n\u003ctable\u003e\n    \u003ctr\u003e\n        \u003cth\u003eFIELD NAME\u003c/th\u003e\n        \u003cth\u003eDEFAULT VALUE\u003c/th\u003e\n        \u003cth\u003eALLOWED VALUES\u003c/th\u003e\n        \u003cth\u003eDESCRIPTION\u003c/th\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_AUTH\u003c/td\u003e\n        \u003ctd\u003ecookies\u003c/td\u003e\n        \u003ctd\u003e\n            credentials\u003cbr /\u003e\n            cookies\u003cbr /\u003e\n            none\n        \u003c/td\u003e\n        \u003ctd\u003e\n            Authentication method to be used for IMDb:\u003cbr /\u003e\n            \u003ccode\u003ecredentials\u003c/code\u003e =\u003e IMDB_EMAIL + IMDB_PASSWORD fields required\u003cbr /\u003e\n            \u003ccode\u003ecookies\u003c/code\u003e =\u003e IMDB_COOKIEATMAIN field required\u003cbr /\u003e\n            \u003ccode\u003enone\u003c/code\u003e =\u003e IMDB_LISTS field required\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_EMAIL\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eIMDb account email address. Only required when IMDB_AUTH =\u003e \u003ccode\u003ecredentials\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_PASSWORD\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eIMDb account password. Only required when IMDB_AUTH =\u003e \u003ccode\u003ecredentials\u003c/code\u003e\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_COOKIEATMAIN\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e\n            Cookie value only required when IMDB_AUTH =\u003e \u003ccode\u003ecookies\u003c/code\u003e. Get the following cookie information from\n            your browser:\u003cbr /\u003e\n            \u003ccode\u003ename: at-main | domain: .imdb.com\u003c/code\u003e\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_LISTS\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e\n            Array of IMDb list IDs that you would like synced to Trakt. If this array is not specified or empty, all\n            IMDb lists on your account will be synced to Trakt. In order to get the ID of an IMDb list, open it from a\n            browser - the ID is in the URL with format \u003ccode\u003els#########\u003c/code\u003e. If provided as GitHub secret or\n            environment variable, define its values as comma-separated list. Keep in mind the \u003ca\n                href=\"https://forums.trakt.tv/t/personal-list-updates/10170#limits-3\"\u003eTrakt list limits\u003c/a\u003e!\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_IGNOREDLISTS\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e\n            Array of IMDb list IDs that you do \u003cb\u003eNOT\u003c/b\u003e want synced to Trakt. This is useful if you would like to\n            sync all your lists, but ignore some. In order to get the ID of an IMDb list, open it from a browser - the\n            ID is in the URL with format \u003ccode\u003els#########\u003c/code\u003e. If provided as GitHub secret or environment variable,\n            define its values as comma-separated list.\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_TRACE\u003c/td\u003e\n        \u003ctd\u003efalse\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003ePrint tracing logs related to browser activities. Can be useful for debugging purposes\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_HEADLESS\u003c/td\u003e\n        \u003ctd\u003etrue\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003e\n            Whether to run the browser in headless mode or not. Only set this to false when running the syncer locally\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eIMDB_BROWSERPATH\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e\n            The location of your preferred web browser. If you leave this value empty, the syncer will attempt to lookup\n            common browser locations. You can optionally override its value to use a specific browser\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_MODE\u003c/td\u003e\n        \u003ctd\u003edry-run\u003c/td\u003e\n        \u003ctd\u003e\n            full\u003cbr /\u003e\n            add-only\u003cbr /\u003e\n            dry-run\n        \u003c/td\u003e\n        \u003ctd\u003e\n            Sync mode to be used when running the application:\u003cbr /\u003e\n            \u003ccode\u003efull\u003c/code\u003e =\u003e add Trakt items that don't exist, delete Trakt items that don't exist on IMDb,\n            update\u003cbr /\u003e\n            Trakt items by treating IMDb as the source of truth\u003cbr /\u003e\n            \u003ccode\u003eadd-only\u003c/code\u003e =\u003e add Trakt items that do not exist, but do not delete anything\u003cbr /\u003e\n            \u003ccode\u003edry-run\u003c/code\u003e =\u003e identify what Trakt items would be added / deleted / updated\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_HISTORY\u003c/td\u003e\n        \u003ctd\u003efalse\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003eWhether to sync history or not. When IMDB_AUTH =\u003e \u003ccode\u003enone\u003c/code\u003e, history sync will be skipped\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_RATINGS\u003c/td\u003e\n        \u003ctd\u003etrue\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003eWhether to sync ratings or not. When IMDB_AUTH =\u003e \u003ccode\u003enone\u003c/code\u003e, ratings sync will be skipped\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_WATCHLIST\u003c/td\u003e\n        \u003ctd\u003etrue\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003eWhether to sync watchlist or not. When IMDB_AUTH =\u003e \u003ccode\u003enone\u003c/code\u003e, watchlist sync will be skipped\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_LISTS\u003c/td\u003e\n        \u003ctd\u003etrue\u003c/td\u003e\n        \u003ctd\u003e\n            true\u003cbr /\u003e\n            false\n        \u003c/td\u003e\n        \u003ctd\u003eWhether to sync lists or not. This provides the option to disable syncing of lists\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eSYNC_TIMEOUT\u003c/td\u003e\n        \u003ctd\u003e15m\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e\n            Maximum duration to run the syncer. Users with large libraries might have to increase the timeout value\n            accordingly. Valid time units are: ns, us (or µs), ms, s, m, h\n        \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTRAKT_CLIENTID\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eTrakt app client ID\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTRAKT_CLIENTSECRET\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eTrakt app client secret\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTRAKT_EMAIL\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eTrakt account email address (do NOT confuse with username)\u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\n        \u003ctd\u003eTRAKT_PASSWORD\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003e-\u003c/td\u003e\n        \u003ctd\u003eTrakt account password\u003c/td\u003e\n    \u003c/tr\u003e\n\u003c/table\u003e\n\n# Usage\n\nThe application can be setup to run automatically, based on a custom schedule (_default: once every 12 hours_) using **GitHub Actions**, in a container, or locally on your machine.  \nWorkflow schedules can be tweaked by editing the [.github/workflows/sync.yaml](.github/workflows/sync.yaml) file and committing the changes.  \nPlease configure the application to suits your needs, by referring to the [Configuration](#configuration) section, before running it.  \nFollow the relevant section below, based on how you want to use the application.\n\n## Run the application using GitHub Actions\n\n1. [Fork the repository](https://github.com/cecobask/imdb-trakt-sync/fork) to your account\n2. Create a [Trakt App](https://trakt.tv/oauth/applications). Use **urn:ietf:wg:oauth:2.0:oob** as redirect uri\n3. Configure the application:\n   - Open your fork repository on GitHub\n   - Create an individual repository secret for each [Configuration](#configuration) field you need: `Settings` \u003e `Secrets and variables` \u003e `Actions` \u003e `New repository secret`\n4. Allow GitHub Actions on your fork repository: `Settings` \u003e `Actions` \u003e `General` \u003e `Allow all actions and reusable workflows`\n5. Enable the **sync** workflow: `Actions` \u003e `Workflows` \u003e `sync` \u003e `Enable workflow`\n6. Run the **sync** workflow manually: `Actions` \u003e `Workflows` \u003e `sync` \u003e `Run workflow`\n7. From now on, GitHub Actions will automatically trigger the **sync** workflow based on your schedule\n\n## Run the application in a Docker container\n\n1. Install [Docker](https://www.docker.com/get-started)\n2. Clone the repository: `git clone git@github.com:cecobask/imdb-trakt-sync.git`\n3. Create a [Trakt App](https://trakt.tv/oauth/applications). Use **urn:ietf:wg:oauth:2.0:oob** as redirect uri\n4. Configure the application:\n   - Create `.env` file with the same contents as [.env.example](.env.example)\n   - Populate the `.env` file with your own secret values\n   - All secret keys should have `ITS_` prefix\n5. Open a terminal window in the repository folder and then:\n   - Build a Docker image: `make package`\n   - Run the sync workflow in a Docker container: `make sync-container`\n\n## Run the application locally\n\n1. Install [Git](https://git-scm.com/downloads) and [Go](https://go.dev/doc/install)\n2. Clone the repository: `git clone git@github.com:cecobask/imdb-trakt-sync.git`\n3. Create a [Trakt App](https://trakt.tv/oauth/applications). Use **urn:ietf:wg:oauth:2.0:oob** as redirect uri\n4. Open a terminal window in the repository folder and then:\n   - Build the syncer: `make build`\n   - Configure the syncer: `make configure`\n   - Run the syncer: `make sync`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcecobask%2Fimdb-trakt-sync","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcecobask%2Fimdb-trakt-sync","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcecobask%2Fimdb-trakt-sync/lists"}