{"id":13746683,"url":"https://github.com/matcornic/subify","last_synced_at":"2025-05-15T19:31:54.500Z","repository":{"id":46651023,"uuid":"49824992","full_name":"matcornic/subify","owner":"matcornic","description":"Subify - Download subtitles for your favorite TV shows and movies","archived":false,"fork":false,"pushed_at":"2025-04-02T14:56:52.000Z","size":18378,"stargazers_count":178,"open_issues_count":3,"forks_count":13,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-02T15:26:35.041Z","etag":null,"topics":["download-subtitles","golang","golang-application","movie","opensubtitles","subtitle","video"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/matcornic.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","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}},"created_at":"2016-01-17T16:19:46.000Z","updated_at":"2025-04-02T14:48:59.000Z","dependencies_parsed_at":"2024-01-13T01:39:43.712Z","dependency_job_id":"2a0d07b1-be55-40e2-b9e5-e59ece580719","html_url":"https://github.com/matcornic/subify","commit_stats":null,"previous_names":[],"tags_count":8,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcornic%2Fsubify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcornic%2Fsubify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcornic%2Fsubify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/matcornic%2Fsubify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/matcornic","download_url":"https://codeload.github.com/matcornic/subify/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254407409,"owners_count":22066236,"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":["download-subtitles","golang","golang-application","movie","opensubtitles","subtitle","video"],"created_at":"2024-08-03T06:00:58.604Z","updated_at":"2025-05-15T19:31:54.486Z","avatar_url":"https://github.com/matcornic.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"\u003cimg align=\"right\" height=\"200px\" src=\"https://raw.githubusercontent.com/matcornic/subify/master/images/logo.png\"/\u003e\n\nSubify is a tool to download subtitles for your favorite TV shows and movies.\nIt is directly able to open the video with your default player, once the subtitle is downloaded.\n\nSubify combines [OpenSubtitles API](http://trac.opensubtitles.org/projects/opensubtitles/wiki) and [Addic7ed](http://www.addic7ed.com/) to get the best subtitles for your video. It also considers that you use a default player interpreting srt subtitles when the video file name is the same than the srt file (ex: [VLC](http://www.videolan.org/vlc/)).\n\nSubify gets the best match from several APIs in this order. This default behavior can easily be changed. See the documentation below\n\n1. OpenSubtitles\n2. Addic7ed\n\n## Installing\n\nDownload the [latest version of Subify](https://github.com/matcornic/subify/releases), and that's it. No need to install something else. Works on Linux, Mac OS (Darwin) and Windows\n\nIf you use Golang, you can get Subify and its binary directly with :\n```shell\ngo get -u github.com/matcornic/subify\n```\n\n### Mac OS\n\nIn MacOS, you can use the power of **Service Automator** to add *Subify* options in the Finder contextual menu for your videos.\n\n![Subify in one click](./images/subify_macos_service.png)\n\n* Open Automator\n* Create a Service\n* On top :\n  * Service receives select =\u003e *Movie files*\n  * In =\u003e *Any application*\n* Drag \u0026 drop a *Run shell script* action\n  * Shell =\u003e `bin/bash`\n  * Pass input =\u003e *as argument*\n  * Copy the following code in the input :\n\n```shell\n# Change \"/projects/go/bin/subify\" by the path of your downloaded binary\n# Use the commaned you want. Commands are explained below\n/projects/go/bin/subify dl \"$1\" -o\n```\n\n* Save to service with the name that you want to be displayed in the Finder menu (e.g. *Subify - download subtitle and play video*)\n* Enjoy your video with subtitles in one click\n* Create as many as service you need (*don't open video*, *change API order*, *change language*, and so on)\n\n![Subify in Automator](./images/subify_macos_automator.png)\n\n### Windows\n\nIn Windows, you can use Shortcuts do to approximately the same. \n\n- Open Run (win + R) and execute `shell:sendto` (this will navigate to the folder with the \"Send to\" context menu shortcuts)\n- Add an new shortcut\n- Location: `C:\\Windows\\System32\\cmd.exe /k \"C:\\tools\\subify.exe dl -o\"` (Change the subify command if needed)\n- Choose an name, like \"Subtitle and open\"\n\nAnd you're done! Just right mouse click on an video and Send to \u003e Subtitle and open. It will find the subtitle and open the video.\n\nIssues:\n\n- You have to add the first part to prevent the `You need to open cmd.exe and run it from there.` warning. This makes sense if there is no file parameter, but the Send to functionality in explorer automatically adds this.\n- You can not change the icon. (Changing it will replace the CMD shortcut icon everywhere)\n- After opening there is still an CMD window open. You can fix this by changing `/k` to `/c`, but then you will never know when an error occurs.\n\n\u003e Thanks @AndreasFurster for finding this tip. \n\n## Get started\nNote : the binary is usable as is. If you want to run the command from anywhere on your OS, make sure to add Subify home installation to your PATH environment variable\n\n```shell\n# Download subtitle with default language (English) from default APIs (OpenSubtitles, then Addic7ed)\nsubify dl \u003cpath_to_your_video\u003e\n# Download subtitle with default language (English), from default APIs (OpenSubtitles, then Addic7ed), then open video with your default player\nsubify dl \u003cpath_to_your_video\u003e -o\n# Download subtitle with french language, from default APIs (OpenSubtitles, then Addic7ed), and open with your default player\nsubify dl \u003cpath_to_your_video\u003e -o -l fr\n# Download subtitle with french language, if not found spanish, if not found english, from default APIs (OpenSubtitles, then Addic7ed)\nsubify dl \u003cpath_to_your_video\u003e -l fr,es,en\n# Download subtitle with default language, by searching first in Addic7ed then OpenSubtitles\nsubify dl \u003cpath_to_your_video\u003e -a add,os\n# Download subtitle with default language, by searching only in OpenSubtitles\nsubify dl \u003cpath_to_your_video\u003e -a OpenSubtitles\n```\n\n## Documentation\n### Global usage\n```\nTool to handle subtitles for your best TV Shows and movies\nhttp://github.com/matcornic/subify\n\nUsage:\n  subify [command]\n\nAvailable Commands:\n  dl          Download the subtitles for your video - 'subify dl --help'\n  help        Help about any command\n  list        List information about something\n  version     Get version of Subify\n\nFlags:\n      --config string   Config file (default is $HOME/.subify.yaml|json|toml). Edit to change default behavior\n      --dev             Instantiate development sandbox instead of production variables\n  -h, --help            help for subify\n  -v, --verbose         Print more information while executing\n\nUse \"subify [command] --help\" for more information about a command.\n```\n\n### Downloading command\n```\nDownload the subtitles for your video (movie or TV Shows)\nGive the path of your video as first parameter and let's go !\n\nUsage:\n  subify dl \u003cvideo-path\u003e [flags]\n\nAliases:\n  dl, download\n\nFlags:\n  -a, --apis string        Overwrite default searching APIs behavior, hence the subtitles are downloaded. Available APIs at 'subify list apis' (default \"OpenSubtitles,Addic7ed\")\n  -h, --help               help for dl\n      --lang-in-filename   Language is in the filename (e.g. if enabled: 'xxx.English.srt' for English), else 'xxx.srt' (default true)\n  -l, --languages string   Languages of the subtitle separated by a comma (First to match is downloaded). Available languages at 'subify list languages' (default \"en\")\n  -n, --notify             Display desktop notification (default true)\n  -o, --open               Once the subtitle is downloaded, open the video with your default video player (OSX: \"open\", Windows: \"start\", Linux/Other: \"xdg-open\")\n\nGlobal Flags:\n      --config string   Config file (default is $HOME/.subify.yaml|json|toml). Edit to change default behavior\n      --dev             Instantiate development sandbox instead of production variables\n  -v, --verbose         Print more information while executing\n\n```\n\n### Listing command\n\n```\nList available languages\n\nUsage:\n  subify list languages [flags]\n\nAliases:\n  languages, lang\n\n\nGlobal Flags:\n      --all             Shows all languages\n      --config string   Config file (default is $HOME/.subify.|json|yaml|toml). Edit to change default behaviour\n      --dev             Instanciate development sandbox instead of production variables\n  -v, --verbose         Print more information while executing\n```\n```\nList the available apis used by Subify\n\nUsage:\n  subify list apis [flags]\n\nGlobal Flags:\n      --config string   Config file (default is $HOME/.subify.|json|yaml|toml). Edit to change default behaviour\n      --dev             Instanciate development sandbox instead of production variables\n  -v, --verbose         Print more information while executing\n```\n\n## Compile from source\n\nBinaries for common Operating Systems and architectures are available in [Release page](https://github.com/matcornic/subify/releases). But if you need to compile Subify from source, you can do it as well.\n\n1. [Install Go 1.13+](https://golang.org/doc/install) \n2. Download Subify: `git clone https://github.com/matcornic/subify.git` (for HTTPS) or `git@github.com:matcornic/subify.git` (for SSH), or `https://github.com/matcornic/subify/archive/master.zip` (for the Zip archive)\n3. Go to the downloaded Subify folder\n4. Run `go get`\n5. Run `go build`\n6. Run `./subify --help` to test if binary is working (you may have to add execution rights on generated file to launch it, for example `chmod u+x ./subify` for Linux)\n\n## Overriding default configuration\n\nDefault configuration can be overridden. Instead of passing the same parameters again and again to the command, you can write a `JSON/YAML/TOML` in your home folder (`$HOME/.subify.|json|yaml|toml`). Here is an example with a `.subify.toml` file :\n\n```toml\n\n# Root is for all commands\n[root]\nverbose = false # Turn on to print more information by default\ndev = false # Don't turn on, just for development purpose\n\n# download for the download/dl command\n[download]\nlanguages = \"en\" # Searching for theses languages. Can be a list like : \"fr,es,en\"\napis = \"OpenSubtitles,Addic7ed\" # Searching from these sites\nnotify = false\n```\n\n## Release Notes\n* **0.6.0** Apr 2, 2025\n  * Add option to not having the language in the subtitle file name (some player does not support that)\n  * Removed Subdb (project is dead)\n* **0.5.0** Apr 2, 2025\n  * Migrate to Go 1.23\n  * Updated Addic7ed library (again), as they changed implementation of the download button\n* **0.4.1** Dec 23, 2019\n  * Updated Addic7ed library, which was not able to search for subtitles before update\n* **0.4.0** Dec 22, 2019\n  * System notification can be turned off with option `--notify=false`\n  * Subtitles file contains language in name\n  * Migrate to Go.13 and Go modules\n  * Use golangci-lint instead of Gometalinter (deprecated)\n* **0.3.0** Feb 23, 2018\n  * Add system notifications (for Linux, Windows and MacOS)\n  * Add version command\n* **0.2.0** Feb 19, 2018\n  * Addic7ed implementation\n  * Refactoring\n  * Vendoring with dep\n  * Dropping 32bit support\n  * Add system notifications\n  * Add version command\n* **0.1.1** Jan 31, 2016\n  * Language checking\n  * OpenSubtitles API implementation\n  * List of favorite languages (Downloads the first to match)\n  * Vendoring (with glide)\n  * List of available apis\n  * Usage of APIs is customizable (can order Subdb search before OpenSubtitles for ex)\n  * customizable default configuration with a conf file (for example to change the default language for all downloads)\n* **0.1.0** Jan 15, 2016\n  * Implement first init\n\n## License\n\nSubify is released under the Apache 2.0 license. See LICENSE.txt\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcornic%2Fsubify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmatcornic%2Fsubify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmatcornic%2Fsubify/lists"}