{"id":13908105,"url":"https://github.com/oreparaz/rshift","last_synced_at":"2025-07-18T06:32:52.684Z","repository":{"id":38335910,"uuid":"506025723","full_name":"oreparaz/rshift","owner":"oreparaz","description":"Time-shifted HLS streaming","archived":false,"fork":false,"pushed_at":"2022-12-27T12:53:15.000Z","size":30,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-11-25T16:40:33.881Z","etag":null,"topics":["hls","hls-live-streaming","hls-stream","radio-streaming-application","time-shift"],"latest_commit_sha":null,"homepage":"","language":"Go","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/oreparaz.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}},"created_at":"2022-06-21T22:43:20.000Z","updated_at":"2023-02-08T18:53:39.000Z","dependencies_parsed_at":"2023-01-31T03:30:32.185Z","dependency_job_id":null,"html_url":"https://github.com/oreparaz/rshift","commit_stats":null,"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/oreparaz/rshift","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oreparaz%2Frshift","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oreparaz%2Frshift/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oreparaz%2Frshift/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oreparaz%2Frshift/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/oreparaz","download_url":"https://codeload.github.com/oreparaz/rshift/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/oreparaz%2Frshift/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":265710667,"owners_count":23815397,"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":["hls","hls-live-streaming","hls-stream","radio-streaming-application","time-shift"],"created_at":"2024-08-06T23:02:27.822Z","updated_at":"2025-07-18T06:32:51.918Z","avatar_url":"https://github.com/oreparaz.png","language":"Go","funding_links":[],"categories":["HarmonyOS"],"sub_categories":["Windows Manager"],"readme":"# Time-shifted HLS streaming\n\n\nhttps://github.com/oreparaz/rshift\n\n\nThose living in California know that listening to the BBC Radio 4 live stream isn't the same thing ---\nwhen you're waking up, people in London are already eating supper.\nFine disc jockeys won't play same music at 8am or 8pm; time zones messes this up.\n\nThis simple project allows you to listen to internet radio streams (HLS) with a configurable time delay.\nYou end up listening to your favorite show at the proper\n(local) time: you listen at 8pm California time what was broadcasted at 8pm in London.\n\nIt works by serving a time shifted M3U file and caching the fragmented stream.\nTime shifting into the future isn't supported yet, unfortunately.\n\n## Deploy\n\nYou need a server 24/7 to run this. You don't need a very powerful machine. A home server\nwith a large disk will work, or any small cloud VM instance will work fine too.\n\nExample usage:\n```\ncurl -LO https://github.com/oreparaz/rshift/releases/latest/download/rshift\n./rshift -download-m3u8-url https://radio/playlist.m3u8 -output-path=/path/to \n```\n\nThen you can visit http://host:8080/timeshift/1234.m3u8 if you want to listen to the stream with a time delay of 1234 seconds.\n(You'll probably need NAT to access from clients outside of your LAN).\n\n## FAQ\n\n__Will this eventually eat all my disk space?__\n`rshift` keeps only 5 days of stream data and deletes any files older than that. So no, it won't end up filling all your disk.\n\n__Which client should I use?__\nWorks great with Safari on iOS/MacOS. On iOS the stream plays even when Safari is minimized or the screen is locked.\n\n__Which cloud provider should I use?__\nIf you don't want to keep your own server at home, I found Google Compute Platform is a cool environment to run rshift.\nYou can run this on a micro instance that qualifies for the free forever tier.\nYou pay for _egress_ traffic (_ingress_ is for free), so you just pay for what you listen.\n\n__No authentication?__\n\nYou can set the following environment variables to turn basic HTTP auth on:\n```\nRSHIFT_USERNAME=foo RSHIFT_PASSWORD=bar ./rshift ...\n```\n\n## Status\n\nThis is \"code complete\" for my (very) specific use case.\n`rshift` has been running solidly for more than one year.\nFeature-wise it's pretty barebones.\nThere is a tons of items in the TODO if you want to tackle on those.\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foreparaz%2Frshift","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Foreparaz%2Frshift","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Foreparaz%2Frshift/lists"}