# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## Known unresolved issues
* Logging is very chatty.
* Caching is hardwired, everything and doesn't update. Currently only `Metalove.purge/0` as stopgap measure
* API is preliminary and missing any sort of meaningful error handling.
* ID3 tag parsing is best effort and just based on the specs and a few sample files. Needs hardening.
## [0.5.0] - 2025-09-16
- adds support for `itunes:owner` parsing
- adds support for `itunes:explicit` parsing
- adds support for `podcast:guid` parsing
- adds support for `podcast:transcript` parsing
- adds support for `itunes:episodeType` parsing
- fix: use correct byterange when fetching mp3 meta
- fix: handle urls with spaces
- replace HTTPoison with Req
- add application option to override req options
config :metalove, :req_options, [
plug: {Req.Test, Metalove}
]
- update dependencies
- increase minimum Elixir version to 1.15
## [0.4.0] - 2024-04-05
- update dependencies
- code cleanup (adjustments to modern Elixir/Erlang)
## [0.3.0] - 2019-07-05
### Added
- improved `ml.chapters`: safe cover image, add option to output `mp4chaps` and `json` as well.
### Changed
- depending on `chapters ~> 1.0` for chapter generation.
- use `chapters` functions to parse and format normal playtime.
- `ml.chapters` now writes to a tmp location and reports it if no output path is given. Previously the files were written next to the source file, and failed when a URL was given.
### Fixed
- trim whitespace around URLs in ID3 parsing, properly recognise an empty string as `nil`.
## [0.2.3] - 2019-06-21
### Added
- add `.iex.exs` file with convenience aliases and fancy prompt for quicker turnaround.
### Fixed
- do not crash due to debug string generation when encountering flags in ID3 headers (e.g. `:unsync`).
- properly handle unsynchronization in ID3 tags.
- properly handle utf16 strings in ID3 tag text content. (incorrectly accidentially split utf16 characters if two zero bytes where encountered)
- translate `image/jpg` to `image/jpeg` so mimerl properly returns an extension.
- make `ml.chapter` task not crash on empty chapters.
### Changed
- update dependencies.
## [0.2.2] - 2019-05-30
### Fixed
- properly recognize `application/x-rss+xml` as allowed feed content-type.
## [0.2.1] - 2019-02-27
### Added
- `Metalove.version/0` to use in `Fetcher` headers and users of the library.
### Fixed
- remove use MixProject.project() so the library can be used by other projects.
- make functions properly private and clean up the generated docs.
- casing of readme in docs so the hexdoc link works.
## [0.2.0] - 2019-02-26
### Added
- Core functionality, find, parse and ingest podcasts from website URLs
and feed URLs
- `ml.chapter` mix task to parse ID3 headers from mp3 files, extract the chapter information and images.
- `ml.podcast` mix task to discover and parse a feed to display a nice human readable terminal version.
[Unreleased]: https://github.com/podlove/metalove/compare/v0.3.0...HEAD
[0.3.0]: https://github.com/podlove/metalove/compare/v0.2.3...v0.3.0
[0.2.3]: https://github.com/podlove/metalove/compare/v0.2.2...v0.2.3
[0.2.2]: https://github.com/podlove/metalove/compare/v0.2.1...v0.2.2
[0.2.1]: https://github.com/podlove/metalove/compare/v0.2.0...v0.2.1
[0.2.0]: https://github.com/podlove/metalove/releases/tag/v0.2.0