# defrost
* split broken icecast recordings into separate mp3s
* MIT-Licensed, 2019-06-01, ed @ irc.rizon.net, [github](https://github.com/9001/defrost), [pypi](https://pypi.org/project/defrostir/)
# features
* **silence detection** -- finds the best part to split at
* **mp3 parser** -- clean splits at frame boundaries
* **icy-meta parser** -- extract artist/title from inband metadata
* dynamic recalibration to recover from server glitches
* **charset detection** -- UTF8, latin-1, shift-jis and friends, all good
* **ID3 tags** -- uses mutagen to write aritst/title into the files
* **timestamping** -- the date/time that the song was played live
* support for other input formats:
* loopstream recording
# installation
* get the latest release from pypi: `python3 -m pip install --user -U defrostir`
* or the latest commit from github: `python3 -m pip install --user -U https://github.com/9001/defrost/tarball/hovudstraum`
# usage
from an internet radio station:
```
wget -U MPlayer --header "Icy-MetaData: 1" -S "https://stream.r-a-d.io/main.mp3"
# wait until the show is over, then abort the download
python3 -m defrostir main.mp3
```
from a loopstream recording:
```
python3 -m defrostir -i ls Loopstream-2021-10-02_22.53.44.mp3
```
# notes
versions `x.y.1` have [chardet](https://pypi.org/project/chardet/) as a dependency, while `x.y.2` have [charset-normalizer](https://pypi.org/project/charset-normalizer/) (preferred) and are otherwise identical; `setup.py rls` will produce both to avoid a pypi package selection bug
Raw data
{
"_id": null,
"home_page": "https://github.com/9001/defrost",
"name": "defrostir",
"maintainer": "",
"docs_url": null,
"requires_python": ">=2.7",
"maintainer_email": "",
"keywords": "icecast internet radio stream ripping silence splitting",
"author": "ed",
"author_email": "defrostir@ocv.me",
"download_url": "https://files.pythonhosted.org/packages/f8/11/7f91626ad3683ae1f2377a2dcc2897fa300d67ada34014b8c2a1c73f9454/defrostir-1.0.2.tar.gz",
"platform": null,
"description": "# defrost\n* split broken icecast recordings into separate mp3s\n* MIT-Licensed, 2019-06-01, ed @ irc.rizon.net, [github](https://github.com/9001/defrost), [pypi](https://pypi.org/project/defrostir/)\n\n# features\n* **silence detection** -- finds the best part to split at\n* **mp3 parser** -- clean splits at frame boundaries\n* **icy-meta parser** -- extract artist/title from inband metadata\n * dynamic recalibration to recover from server glitches\n* **charset detection** -- UTF8, latin-1, shift-jis and friends, all good\n* **ID3 tags** -- uses mutagen to write aritst/title into the files\n* **timestamping** -- the date/time that the song was played live\n* support for other input formats:\n * loopstream recording\n\n# installation\n* get the latest release from pypi: `python3 -m pip install --user -U defrostir`\n* or the latest commit from github: `python3 -m pip install --user -U https://github.com/9001/defrost/tarball/hovudstraum`\n\n\n# usage\n\nfrom an internet radio station:\n```\nwget -U MPlayer --header \"Icy-MetaData: 1\" -S \"https://stream.r-a-d.io/main.mp3\"\n# wait until the show is over, then abort the download\npython3 -m defrostir main.mp3\n```\n\nfrom a loopstream recording:\n```\npython3 -m defrostir -i ls Loopstream-2021-10-02_22.53.44.mp3\n```\n\n# notes\nversions `x.y.1` have [chardet](https://pypi.org/project/chardet/) as a dependency, while `x.y.2` have [charset-normalizer](https://pypi.org/project/charset-normalizer/) (preferred) and are otherwise identical; `setup.py rls` will produce both to avoid a pypi package selection bug\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "split broken icecast recordings into separate mp3s",
"version": "1.0.2",
"project_urls": {
"Homepage": "https://github.com/9001/defrost"
},
"split_keywords": [
"icecast",
"internet",
"radio",
"stream",
"ripping",
"silence",
"splitting"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "96558a4999eca71d5c765343d3fae54818354f885869362a3e76b1c758e120b1",
"md5": "ae3cb2eae43fa3e7935426b9e46897fd",
"sha256": "64023e9a51e27f01adf7556bfa0ae99adb48d510b813896c43bd1ece779eaaec"
},
"downloads": -1,
"filename": "defrostir-1.0.2-py2.py3-none-any.whl",
"has_sig": false,
"md5_digest": "ae3cb2eae43fa3e7935426b9e46897fd",
"packagetype": "bdist_wheel",
"python_version": "py2.py3",
"requires_python": ">=2.7",
"size": 17104,
"upload_time": "2023-10-31T23:42:34",
"upload_time_iso_8601": "2023-10-31T23:42:34.691740Z",
"url": "https://files.pythonhosted.org/packages/96/55/8a4999eca71d5c765343d3fae54818354f885869362a3e76b1c758e120b1/defrostir-1.0.2-py2.py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "f8117f91626ad3683ae1f2377a2dcc2897fa300d67ada34014b8c2a1c73f9454",
"md5": "395c173b5db8915ada090c354e7976be",
"sha256": "fb093dcc5ab742d26dae7e2e70ad0a2f2118bedcb07fad859cb62b52b96b0cf3"
},
"downloads": -1,
"filename": "defrostir-1.0.2.tar.gz",
"has_sig": false,
"md5_digest": "395c173b5db8915ada090c354e7976be",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=2.7",
"size": 18479,
"upload_time": "2023-10-31T23:42:46",
"upload_time_iso_8601": "2023-10-31T23:42:46.980885Z",
"url": "https://files.pythonhosted.org/packages/f8/11/7f91626ad3683ae1f2377a2dcc2897fa300d67ada34014b8c2a1c73f9454/defrostir-1.0.2.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-10-31 23:42:46",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "9001",
"github_project": "defrost",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "defrostir"
}