{"id":31475941,"url":"https://github.com/davorg/trakt2feed","last_synced_at":"2025-10-02T00:18:38.301Z","repository":{"id":298347206,"uuid":"999662966","full_name":"davorg/trakt2feed","owner":"davorg","description":null,"archived":false,"fork":false,"pushed_at":"2025-06-12T08:22:27.000Z","size":14,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-30T11:50:49.728Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Perl","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/davorg.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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}},"created_at":"2025-06-10T15:39:30.000Z","updated_at":"2025-06-12T08:22:30.000Z","dependencies_parsed_at":"2025-06-11T12:36:23.454Z","dependency_job_id":null,"html_url":"https://github.com/davorg/trakt2feed","commit_stats":null,"previous_names":["davorg/trakexport","davorg/trakt2feed"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/davorg/trakt2feed","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davorg%2Ftrakt2feed","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davorg%2Ftrakt2feed/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davorg%2Ftrakt2feed/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davorg%2Ftrakt2feed/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/davorg","download_url":"https://codeload.github.com/davorg/trakt2feed/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/davorg%2Ftrakt2feed/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277933371,"owners_count":25901746,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-01T02:00:09.286Z","response_time":88,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"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":[],"created_at":"2025-10-02T00:18:36.653Z","updated_at":"2025-10-02T00:18:38.297Z","avatar_url":"https://github.com/davorg.png","language":"Perl","funding_links":[],"categories":[],"sub_categories":[],"readme":"# trakt2feed\n\n**Trakt2Feed** is a program that will take your Trakt viewing history\nand turn it into an Atom web feed.\n\n## Why?\n\nI like to track my TV watching, so I've been a VIP member of\n[Trakt](https://trakt.tv/) since early in 2019. I'm very happy to pay the\n$30/year subscription for a couple of reasons - firstly, because it's nice to\nsupport the project and, secondly (and more importantly), because VIP members\nget web feeds of their watching history and I use that feed to power the\n[Watching](https://dave.org.uk/watching/) page on my website. If you're\ninterested (and I realise that no-one is) then that page will show you the\nmost recent ten TV shows and films that I have watched.\n\nRecently, Trakt have announced they are going to increase the annual\nsubscription from $30/year to $60/year. This has (rightly, in my opinion)\nannoyed a lot of people.\n\n* Doubling the subscription is really a bit rude\n* In doing this, they have broken a promise that grandfathered pricing would be honoured for ever (some people were paying $15/year)\n\nI know that prices need to rise sometimes. But I think that Trakt have handled\nthis in a ver bad manner. I immediately cancelled my subscription.\n\nThis left me with a problem. Not an immediate problem (because I had recently\npaid my annual subscription), but at some point my web feed would vanish. So\nI needed to replace it. I was prepared to move to a different service, but\nI did some research and nothing seemed to really meet my needs.\n\nThen I discovered [`traktexport`](https://github.com/purarue/traktexport)\non GitHub. This is a program that uses the Trakt API to produce a JSON\nfile containing your Trakt viewing history. And I realised that I could\neasily write a program that takes this JSON file and turns it into a web\nfeed.\n\nSo that's what I did.\n\nAnd you don't need a Trakt VIP subscription to access the Trakt API. So\nI've recreated the main benefit (to me, at least) of the VIP subscription\nfor no cost.\n\n## How?\n\nYou might also want a web feed of your Trakt watching history. Let me\nexplain how you get one.\n\nFirst you need `traktexport`. If, like me you're going to run this on\nGitHub Actions and GitHub Pages (I'll explain those later), you don't\nneed it installed permenantly. But you'll need it installed at first so\nyou can set up your authentication to the Trakt API.\n\nThe `traktexport` repo has instructions for installing the code and\nauthenticating to the API. It's a Python program, so you'll need Python\ninstalled first - and that's beyond the scope of this document.\n\nYou install `traktexport` by running:\n\n    $ pip install traktexport\n\nThe API authentication is explained in the\n[`traktexport`](https://github.com/purarue/traktexport). It can be a little\ntricky, but you only need to do it once. The basic steps are:\n\n1. Register a new Trakt API application at https://trakt.tv/oauth/applications\n2. Run `traktexport auth yourTraktUsername`\n3. Follow the instructions - which involve opening a web address and typing a PIN\n\nThat creates a file called `~/.local/share/traktexport.json` (on Linux, at least).\nThis contains your authentication details and you'll need this information later.\n\nAt this point, you can test that everything is working by running:\n\n    $ traktexport export yourTraktUsername \u003e data.json\n\nAnd you should end up with a file called `data.json` containing information\nabout your watch history.\n\nNow you'll need my half of the process.\n\nGo to my repo (https://github.com/davorg/trakt2feed) and press the \"Fork\"\nbutton (you'll need a GitHub account). This will give you your own copy\nof my repo in your GitHub account.\n\nClone your GitHub repo locally:\n\n    $ https://github.com/YOUR-GITHUB-ACCT-NAME/trakt2feed.git\n\nOh, by the way, you'll need `git` installed :-)\n\nThat will create a directory called `trakt2feed` which contains a file called\n`config.json`. You'll want to edit that to change the configuration data.\n\n* **feed_title:** A title to use for the feed\n* **feed_link:** The URL where you will be publishing the feed\n* **feed_author:** Something that identifies you as the author of the feed\n\nCommit that change:\n\n    $ git commit config.json -m'Updated config'\n\nAnd push it back to GitHub:\n\n    $ git push\n\nIn order to run my code on your local machine, you'll need some Perl modules\ninstalled:\n\n    $ sudo apt-get update\n    $ sudo apt-install cpanminus\n    $ cpan --sudo --installdeps --notest .\n\nThat will churn away for a while and when it's finished, you should be able\nto run my code:\n\n    $ bin/mkfeed data.json\n\nThat will write the feed to the screen. Or, more usefully, you can write it\nto a file:\n\n    $ bin/mkfeed data.json \u003e feed.xml\n\nSo if you wanted to stick those two commands in a crontab:\n\n    traktexport export yourTraktUsername \u003e data.json\n    bin/mkfeed data.json \u003e feed.xml\n\nAnd then copy `feed.xml` to a web server somewhere, then you would have a\nfeed of your Trakt watch history.\n\nBut we can do better than that. We can set this up to run using GitHub\nActions and GitHub Pages.","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavorg%2Ftrakt2feed","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdavorg%2Ftrakt2feed","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdavorg%2Ftrakt2feed/lists"}