{"id":22751722,"url":"https://github.com/grarak/goytfetcher","last_synced_at":"2025-04-14T13:57:13.704Z","repository":{"id":57646713,"uuid":"127927822","full_name":"Grarak/GoYTFetcher","owner":"Grarak","description":"A music streaming service","archived":false,"fork":false,"pushed_at":"2019-07-02T16:29:41.000Z","size":119,"stargazers_count":18,"open_issues_count":0,"forks_count":4,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-03-28T03:03:53.105Z","etag":null,"topics":["go","golang","music","youtube"],"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/Grarak.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}},"created_at":"2018-04-03T15:17:21.000Z","updated_at":"2024-12-15T04:48:42.000Z","dependencies_parsed_at":"2022-09-10T14:51:35.449Z","dependency_job_id":null,"html_url":"https://github.com/Grarak/GoYTFetcher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grarak%2FGoYTFetcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grarak%2FGoYTFetcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grarak%2FGoYTFetcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Grarak%2FGoYTFetcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Grarak","download_url":"https://codeload.github.com/Grarak/GoYTFetcher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248893730,"owners_count":21179080,"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":["go","golang","music","youtube"],"created_at":"2024-12-11T05:06:54.208Z","updated_at":"2025-04-14T13:57:13.682Z","avatar_url":"https://github.com/Grarak.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# GOYTFetcher [![][travis-url]][travis-svg] [![][license-svg]][license-url] [![][report-card-svg]][report-card-url]\n\nGoYTFetcher is a server application written in Golang to serve Youtube videos as audio files\nthrough HTTP.\n\nIt also comes with a simple login system, so you can manage users easily.\n\n## Installation\n\n#### Dependencies\n\n* **Golang** (You need Go 1.9 or higher)\n* **FFmpeg** (Install with libvorbis enabled)\n* **youtube-dl**\n\n#### Build\n\n```\n$ go get github.com/Grarak/GoYTFetcher\n$ cd $GOPATH/src/github.com/Grarak/GoYTFetcher\n$ make install\n```\n\nCompiled executable should be in $GOPATH/bin.\n\n## Usage\n\n```\n$ ./GoYTFetcher [-p Port] [-yt Youtube API key] [-i Webpage path (where index.html is stored)]\n```\n\nAll flags are optional. When no port is given it will use 6713.\n\nYoutube API key is used for searching and getting video information. When no key is given then\nit will rely on youtube-dl. Only feature which totally depends on the Youtube API is getting\npopular videos.\n\nWebpage path is the directory where your index.html is stored, in case you want to host a website\non the same port.\n\nThe first user who sign ups will automatically promoted to administrator and can unlock other\nusers. When you request a video, then the server will first return the audio link from google\nand start the downloading of the video at the same time. Once the download is finished and the\nsame video is requested again, it will serve the local audio file. Both the link from google\nthe local audio file are encoded in vorbis format. (Audio bitrate: 160kb/s)\n\n## Clients\n\n* **Android:** [YTFetcher](https://github.com/Grarak/YTFetcher)\n* **Web** [YTFetcher-Web](https://github.com/Grarak/YTFetcher-Web)\n\nIf you want write your own client. Please let me know, then I can write up a documentation\nfor API calls.\n\n## Libraries\n\n* [mattn/go-sqlite3](https://github.com/mattn/go-sqlite3)\n* [pbkdf2](https://godoc.org/golang.org/x/crypto/pbkdf2)\n* [PuerkitoBio/goquery](https://github.com/PuerkitoBio/goquery)\n* [op/go-logging](https://github.com/op/go-logging)\n* [rylio/ytdl](https://github.com/rylio/ytdl)\n\n[travis-url]: https://travis-ci.org/Grarak/GoYTFetcher.svg?branch=master\n[travis-svg]: https://travis-ci.org/Grarak/GoYTFetcher.svg\n\n[license-url]: https://github.com/Grarak/GoYTFetcher/blob/master/LICENSE\n[license-svg]: https://img.shields.io/badge/license-MIT-blue.svg\n\n[report-card-url]: https://goreportcard.com/report/github.com/Grarak/GoYTFetcher\n[report-card-svg]: https://goreportcard.com/badge/github.com/Grarak/GoYTFetcher\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrarak%2Fgoytfetcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgrarak%2Fgoytfetcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgrarak%2Fgoytfetcher/lists"}