{"id":13574858,"url":"https://github.com/filyp/yourtube","last_synced_at":"2025-12-30T09:37:10.110Z","repository":{"id":110752235,"uuid":"385010522","full_name":"filyp/yourtube","owner":"filyp","description":"Better youtube recommendations","archived":false,"fork":false,"pushed_at":"2024-08-31T13:16:12.000Z","size":465,"stargazers_count":17,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"master","last_synced_at":"2024-11-05T10:44:54.007Z","etag":null,"topics":["clickbait","group-recommendations","human-computer-interaction","humane-tech","information-bubbles","privacy","recommender-system","youtube"],"latest_commit_sha":null,"homepage":"http://yourtube.quest","language":"Jupyter Notebook","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"lgpl-2.1","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/filyp.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"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}},"created_at":"2021-07-11T17:22:20.000Z","updated_at":"2024-10-15T05:42:38.000Z","dependencies_parsed_at":"2024-08-17T15:25:17.921Z","dependency_job_id":"3a4b1bde-2e7c-4b2d-9bb8-af5586991e4a","html_url":"https://github.com/filyp/yourtube","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filyp%2Fyourtube","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filyp%2Fyourtube/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filyp%2Fyourtube/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/filyp%2Fyourtube/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/filyp","download_url":"https://codeload.github.com/filyp/yourtube/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247229825,"owners_count":20905134,"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","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":["clickbait","group-recommendations","human-computer-interaction","humane-tech","information-bubbles","privacy","recommender-system","youtube"],"created_at":"2024-08-01T15:00:55.268Z","updated_at":"2025-12-30T09:37:10.073Z","avatar_url":"https://github.com/filyp.png","language":"Jupyter Notebook","funding_links":[],"categories":["Jupyter Notebook"],"sub_categories":[],"readme":"# YourTube\n\n![build](https://github.com/filyp/YourTube/actions/workflows/build.yml/badge.svg)\n[![Code style: black](https://img.shields.io/badge/code%20style-black-000000.svg)](https://github.com/psf/black)\n\n\nBetter youtube recommendations\n\n- [x] More autonomy when choosing what to watch\n- [x] Very customizable\n- [x] Recommendations for two or more people\n- [x] You can install it locally for completely private recommendations\n- [x] Sharing and browsing information bubbles\n- [ ] Less clickbait\n\nYou can install it on your computer following the [instructions below](https://github.com/filyp/yourtube#local-installation), or just use it [online](http://yourtube.quest). You can try it out as the `default` user, but to have personalized recommendations you will need to follow these steps:\n1. Export your data from youtube ([instructions here](https://github.com/filyp/yourtube#export-your-youtube-data))\n2. Choose your username, in the panel on the left. Note that anyone who knows your username can use your account, so if you don't want that, choose a hard to guess one.\n3. Upload the zip file with your youtube takeout, with the `Choose File` button.\n4. Click refresh button below\n5. You will be able to use the system the next day.\n\n## Saving clusters\n\nYou can save some cluster of videos for later using controls on the top. Note that on default your clusters will be publicly visible, along with your username. If you want to create a private cluster, start its name with `_`, for example `_music`.\n\nYou can also browse clusters that the other users saved.\n\n# FAQ\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow does it work?\u003c/summary\u003e\n  \n- For every video you have liked on youtube, its recommended videos are collected. \n- This way, we create a graph, where two videos are connected if one recomends the other. \n- Now we divide this graph into clusters (groups of videos around common theme). For example we can have a  `folk rock` cluster, or a `science podcasts` cluster or a `travel vlogs` cluster.\n- Small clusters are a part of larger clusters. For example `folk rock` and `boomer rock` are inside of `rock` cluster, and `rock` is inside `music`. \n- This forms a tree, with big branches (like `music`), splitting into smaller and smaller branches and twigs.\n- Now, to choose what to watch you can start at the trunk, and \"climb\" this tree, by choosing which branch to go into.\n- Note, that some clusters are too big to be clearly labeled, but by looking at the videos in them, you can usually get a general idea about this cluster's theme.\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eHow are the clusters found?\u003c/summary\u003e\n\n- When a group of videos is densely connected, it's assumed do be a cluster. When two clusters are well connected, they are joined into a bigger cluster. The exact method we use is [here](https://github.com/filyp/krakow).\n\u003c/details\u003e\n\n\u003cdetails\u003e\n  \u003csummary\u003eWhy rely on youtube recommendations instead of providing our own and having more control over them?\u003c/summary\u003e\n\n- Creating a recommender system from scratch is much harder than you may think at first. In addition to having accurate recommendations, you also have to defend against attacks, like click farms trying to boost some content, or intelligence agencies spreading misinformation. You also have to detect illegal or NSFL stuff, and filter it out. See [this](https://www.youtube.com/watch?v=1PGm8LslEb4) to get a sense of how hard this is.\n- Another critical problem is the network effect. To build a good recommender system, we need data from a lot of users. To have a lot of users, we need a good recommender system.\n- For these reasons, it's better to start with an existing recomender system as a \"bottom layer\", and then build any new features we want, on top of it. \n\u003c/details\u003e\n\n# Local installation\n\n```bash\nmkdir -p ~/.yourtube ; curl -s https://raw.githubusercontent.com/filyp/yourtube/master/docker-compose-release.yml \u003e ~/.yourtube/yourtube.yml ; docker-compose -f ~/.yourtube/yourtube.yml run yourtube poetry run yourtube-install\n```\n\n## Export YouTube data and scrape it\n\n### Export your youtube data\n1. Login to your YouTube account\n2. Click on your profile picture in the top right corner of the web page\n3. Make sure your preferred language is English\n4. Click on \"Your data in YouTube\" in the displayed drop down\n5. Click on \"More\" in the \"Your YouTube dashboard\" card\n6. Click on \"Download YouTube data\"\n7. Under \"Create a New Export\", make sure \"YouTube and YouTube Music\" is selected\n8. Click \"Next step\"\n9. Select your preferred method of delivery (Email, Dropbox, etc.) and click on \"Create Export\"\n10. Download the .zip file\n11. Unzip the file\n\n### Load your takeout file into yourtube\n```bash\nsudo chown -R $USER:$USER ~/.yourtube\nmkdir ~/.yourtube/data/takeouts/default\nmv __PATH_TO_YOUR_TAKEOUT__/Takeout .yourtube/data/takeouts/default\n```\n\nTo add other users, do the same, but replace `default` with the username you want to use.\n\n### Scrape videos\nNow run:\n```bash\ndocker-compose -f ~/.yourtube/yourtube.yml run yourtube poetry run yourtube-scrape\n```\n\nIt will collect recommendations from the videos in your playlists and from your liked videos, which can take up to an hour.\n\n\n## Running\n\n```bash\ndocker-compose -f ~/.yourtube/yourtube.yml down ; docker-compose -f ~/.yourtube/yourtube.yml up -d\n```\n\nYourTube shuld be now available at: `http://localhost:8866/`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilyp%2Fyourtube","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffilyp%2Fyourtube","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffilyp%2Fyourtube/lists"}