Overview
DiscoDOS 3.0 is huge! The plan was to support "selling records" on the Discogs Marketplace. A lot of fixing seemed to be essential to achieve that goal nicely, refactoring madness started, some unplanned features where suddenly more easily possible, the developer couldn't resist and in the end....all went overboard and dozens of features "just happened" along the road.
Some highlights:
- [`dsc ls`](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-ls-tui-command) - a TUI app to manage Discogs Marketplace listings using the beautiful [Textual framework](https://textual.textualize.io).
- A bunch of new `dsc subcommands` and loads of usability improvements and reworks of existing commands.
- Progress bars for longer running process using [Rich Progress](https://rich.readthedocs.io/en/stable/progress.html).
- Generally making more use of the wonderful [Rich library](https://rich.readthedocs.io) which goal is to make CLI applications more coloful, better usable and visually appealing in general.
New Features and improvements
- [Importing is now divided into several subcommands](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-import-command-group) and new things can be imported:
- `dsc import release` for single releases (fixed and performance improved).
- `dsc import basic` for a minimal full-collection import (more data is imported, a new 'collection' table saves each collection item instance, notes, collection folder).
- `dsc import sales` for the Marketplace inventory (new).
- `dsc import listing` for single Marketplace listings (new).
- Cleanup commands group:
- `dsc clean sales`
- `dsc clean collection`
- Incorporated [Rich](https://rich.readthedocs.io) indicators for **each and every** (potentially long running) `import` and `clean` operation
- All `print` statements in DiscoDOS use [Rich print](https://rich.readthedocs.io/en/stable/introduction.html#quick-start) which gives a basic set of colors certain CLI elements (numbers, strings, json) but also "enables" futher use of [Rich console markup](https://rich.readthedocs.io/en/stable/markup.html#console-markup).
- [`dsc sell`](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-sell-command) - a "wizard type" CLI command guiding through the process of listing a record for sale.
- [`dsc stats`](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-stats-command) - More statistics.
- [`dsc links`](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-links-command) - From the ashes of "dsc search all", a [key/value search](https://discodos.readthedocs.io/en/latest/MANUAL.html#key-value-search) based report view - get every hyperlink DiscoDOS can generate in one view.
- [`dsc ls`](https://discodos.readthedocs.io/en/latest/MANUAL.html#the-ls-tui-command) - a _Textual App_ for displaying collection and sales data. Its main purpose is "managing Marketplace listings":
- [Key/value search](https://discodos.readthedocs.io/en/latest/MANUAL.html#key-value-search) for what you want to see/edit, for example: `dsc ls artist=squarepusher status=forsale`
- A table view displaying search results
- A three column subpanel viewing details about: 1. sales listing, 2. Your price and marketplace stats, 3. A list of YouTube videos
- Supersimple "one-key-commands" v - fetch video links, l - fetch sales listing, return - fetch marketplace stats and suggested prices
- A "non-tui" version of `dsc ls` is available too (`-x/--no-tui` or config option - see below).
New config options
- `enable_tui` - toggle **Textual-based UI** for the `dsc ls` command.
- `discogs_sold_folder_id` - collection items in this Discogs collection folder are marked "sold" during `import basic` automatically.
Documentation
- New layout using the PyData Sphinx theme
- A lot of outdated documentation was removed
- New features where of course documented
- Deprecations where noted, eg. [AcousticBrainz is discontinued but still working partly in DiscoDOS](https://discodos.readthedocs.io/en/latestMANUAL.html#acousticbrainz-support-is-deprecated)
- Generally docs are now more polished - less sections - more self-explanatory "where to look for what"
Fixes and improvements under the hood
- Restructured almost everything. Introduced Python subpackages `ctrl`, `model`, `view` and separated a lot of 1000+ lines long files to smaller module files.
- Online operations moved to a separate mix-in class `DiscogsMixin`
- Use `TableDefaults` descriptor class more often - column/field/shortcut/naming-magic
- Almost everything touched, now `black`-formatted.
- _f-strings_ instead of `.format()`
- Wherever possible refactored to "early returns", modularization, pythonic variable/class naming, comprehensions to improve code quality
- Logging now uses _`%s`-formatting_ and loads of INFO level clutter was changed to DEBUG or removed.
- Refactored fundamental database functions, supporting new useful flags like `as_dict`, `join`, `union`
- Streamlined "getters" and Discogs "fetchers" naming
- There is still a lot of room for improvement, but it's definitely a start!
Known issues
- Collection folders not yet displayed with names, just ID's in `dsc ls` TUI.