Releases: JOJ0/discodos
DiscoDOS v3.3.0
New Features and improvements
- A new
dsc suggestoption--pitch-range(-p) allows overriding the previously hardcoded 6% pitch-up/down range implied by the--bpmoption. For exampledsc suggest -k Dm -b 100 -p 2returns D-minor tracks within a range of 98 to 102 BPM. - All listings of
dsc suggestcommands involving musical key are now ordered by the circle of fifths (clockwise, eg. C, Am, G, Em, D, Bm, A, ...)
Fixes
- Fix the broken SQL SELECT for
dsc suggest -kcommands (Fixes #45) - Also other SQL SELECT statements around
dsc suggesthad flaws that are now fixed.
Fixes and improvements under the hood
- Most helper functions, string manipulation, log messages, error handling around
dsc suggestwere refactored and are more pythonic now.
Notes
Full Changelog: v3.2.1...v3.3.0
DiscoDOS v3.2.1
Fixes
Fixes and improvements under the hood
- Bump requests from 2.32.3 to 2.32.4 by @dependabot[bot] in #39
- Bump urllib3 from 2.2.3 to 2.5.0 by @dependabot[bot] in #42
- Bump aiohttp from 3.10.11 to 3.12.14 by @dependabot[bot] in #43
Full Changelog: v3.2.0...v3.2.1
v3.2.0
Features and improvements
- New
dsc import folderscommand. dsc statsnew sales price statistics (Overall listing price average, Average for listings below 15€)dsc linksanddsc lsnow better support standalone keyword search - If nokey=prefix is used, the fieldsartist,title(album title) andcat(catalog number) are being searched. Any keyword found in any of those fields will match.
Documentation
- Added new chapter on Standalone Keyword Search.
- Improved Key/Value Search chapter with missing field names, better wording and notes boxes.
- Improved
importandimport folderscommand help.
Full Changelog: v3.1.0...v3.2.0
DiscoDOS v3.1.0
Summary
The main improvements in this release are:
- Collection folders handling in
dsc lsTUI is finished - Loads of bug fixes
- Another huge documentation overhaul.
New Features and Improvements
dsc lscollection folders are now displayed with names instead of ID'sdsc lsnew features with simple key commandsr-> reimport collection item (get changes done on Discogs for highlighted collection item)f-> edit collection item folder (updates locally and on Discogs)v-> fetching videos display improved (notes a possibly "outdated" view)s-> shortcut for save in all edit views (instead of mouse)
dsc lsnow displays a modification time (coll_mtime in DB)dsc lsshorten some headings- Add mtime fields to sales,coll,folders tables
- Support
--limitindsc ls, add backend support dsc lsmarketplace stats withpkey, notreturn- Add a database trigger that handles when
dsc lsreimport command should skip importing because nothing changed! - Finally implement a good
dsc cleancommand - Fix and improve kv-search, when non-kv terms are present
- New stats For Sale and Sold in
dsc statscommand - Override configured db file with
--dboption
Documentation
- Describe
discogs_sold_folder_idsetting in initial config docs chapter - Update DiscoDOS website
- Enable myst notes boxes, improve import tracks docs
- Rename "Common Tasks" chapter to FAQ
- Update outdated built-in help of several commands (eg.
importgroup) - Installation docs overhaul
- Further rework MANUAL and QUICKSTART chapters
- Move README gifs to sphinx/source, some linting
- MANUAL chapter "notes boxes", more
dsc lsTUI key-cmds - Update welcome logo in ViewCommon
- Rename docs chapter Video to Screenshots
Fixes
dsc import release -dfix multiple collection item deletedsc lscatch video fetch errorsdsc lsfix UI-log fetch Marketplace stats messagedsc lsfix crash due to exception in collection item fetcherdsc lsfix crash due to exception in price suggestion fetcherdsc lstry to improve online awareness- Fix COALESCE column ID in
dsc lsTUI - Fix clean releases missing check for orphaned
- Fix code style in config.py, reword init-instructions
- Fix col caption showing COALESCE in
dsc -x lsnon-TUI - Fix
dsc lssold,timestamp,folder-edit behaviour - Fix in
import releasewhere not extracted_id used - Fix in remove release where not extracted_id used
- Fix issue #27
import releasedocstring - Fix issue #30 a commenting out leftover
- Fix issue #31 support release URL in
dsc sellcmd - Fix mtime column name in ViewCommon definition
- Fix redundant comma in create release table SQL
- Fix saving listing changes in TUI
- Fix syntax in collfolder table setup
Fixes and improvements under the hood
- GitHub Actions workflows for building and deploying to PyPI
- Fix collection tests class
- Fix empty collection table in test fixtures DB
- Upgrade unittest fixture DiscoBASE schema
- Require python3-discogs-client 2.8 in
setup.py - Set version in
Config, add to.bump2version - Slightly reorder newer collection methods
Notes
Full Changelog: v3.0.3...v3.1.0
DiscoDOS v3.0.3
3.0 PyPI package was faulty due to a number of outdated things around how DiscoDOS was packaged. Some tiny feature fixes too:
- Packaging changed from using
pbrto regularsetup.py - Added dependencies in
setup.pyviainstall_requires - Fixed
statscommand collection counts and added sales stats - Bring back accidentally deleted
discosynctool - Added non-python files in
setup.pyviapackage_data(ls_tui.tcssTextual stylesheet file)
(3.0.1. through 3.0.2 were iterations to finally get a working package)
DiscoDOS v3.0
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- a TUI app to manage Discogs Marketplace listings using the beautiful Textual framework.- A bunch of new
dsc subcommandsand loads of usability improvements and reworks of existing commands. - Progress bars for longer running process using Rich Progress.
- Generally making more use of the wonderful Rich library 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 and new things can be imported:
dsc import releasefor single releases (fixed and performance improved).dsc import basicfor a minimal full-collection import (more data is imported, a new 'collection' table saves each collection item instance, notes, collection folder).dsc import salesfor the Marketplace inventory (new).dsc import listingfor single Marketplace listings (new).
- Cleanup commands group:
dsc clean salesdsc clean collection
- Incorporated Rich indicators for each and every (potentially long running)
importandcleanoperation - All
printstatements in DiscoDOS use Rich print which gives a basic set of colors certain CLI elements (numbers, strings, json) but also "enables" futher use of Rich console markup. dsc sell- a "wizard type" CLI command guiding through the process of listing a record for sale.dsc stats- More statistics.dsc links- From the ashes of "dsc search all", a key/value search based report view - get every hyperlink DiscoDOS can generate in one view.dsc ls- a Textual App for displaying collection and sales data. Its main purpose is "managing Marketplace listings":- 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 lsis available too (-x/--no-tuior config option - see below).
- Key/value search for what you want to see/edit, for example:
New config options
enable_tui- toggle Textual-based UI for thedsc lscommand.discogs_sold_folder_id- collection items in this Discogs collection folder are marked "sold" duringimport basicautomatically.
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
- 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,viewand separated a lot of 1000+ lines long files to smaller module files. - Online operations moved to a separate mix-in class
DiscogsMixin - Use
TableDefaultsdescriptor 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 lsTUI.
DiscoDOS v2.0
New & Breaking Changes
- Introduce CLI frontend rewrite based on Click by @JOJ0 in #17
- The new CLI main command is now
dsc discois still existing for reference but is not maintained anymore- There are 2 reasons for the rewrite
- I prefer to maintain a Click-based CLI rather than an argparser-based one.
- There was a naming conflict with an Ubuntu package. See #15
- The new CLI main command is now
- Fix docs (CLI rewrite), fix rtd build, state AcousticBrainz shutdown in README by @JOJ0 in #20
- Docs have been updated to state the new
dsccommand but might occassionally be still outdated in that matter. - Since AcousticBrainz was shut down, key and BPM fetching does not work anymore.
- There are still loads of notes about AcousticBrainz in the docs, those are not updated yet. Help wanted!
- Docs have been updated to state the new
Notes
- Builds for Windows and macOS are not provided anymore, please install from git: https://discodos.readthedocs.io/en/latest/CONTRIBUTION.html#install-development-version
- Full Changelog: v1.1...v2.0
DiscoDOS v1.1
New
-
*Brainz matching (
-z/-zzoption ofimport,searchandmixsubcommands): New options--skip-unmatched/-s--force/-fgiving more customization possibilites for these longrunning processes. -
The
--resumeoption of theimportsubcommand is now available as--offsetas well, which better reflects what it does when used in combo with aforementioned new options. -
New subcommend
disco statsgiving several counts of releases and tracks in the DiscoBASE, *Brainz match results, tracks used in mixes, and so on. -
New
disco mixoption--format, providing a way to directly pass to the CLI table rendering module (tabulate) what displaying-style should be used. E.g this way even html output can be rendered: Trydisco mix <mixname> --format html -
A graphical version of DiscoDOS is available as a preview. Check out the
qtguibranch if interested. Install requirements viapip install -r gui_requirements.txtand launchgui.py. Thanks a lot to @D8bp8Ags for getting this started, providing a very good basis of a QT based GUI, helping and motivating me to learn a little PyQT programming already and supporting the DiscoDOS project overall. Very much appreciated! Thanks again!
Improved
- Internal overhaul: PEP8 linting as good as possible in many parts of the code.
- Splitting up classes into smaller modules for code readability.
- New class TableDefaults in view_common module, providing a smarter way to handle CLI column headers. This actually was introduced to better handle defaults of TableViews of the QT-GUI in development but then was advanced to support both GUI and CLI things.
- Loads of more improvements related to QT-GUI development that made it into master already.
Fixes
- Fixes and improvements in test suites: test_collection, test_mix, test_config.
- Some fixes in github actions pipelines.
- Fix a bug where content of CLI table cells (like album names, track names, etc.) was not displayed correctly (cut off too early)
Notes
- Installation and upgrade guides: https://discodos.readthedocs.io/en/latest/INSTALLATION.html
- The macOS version was built an macOS 10.5. Catalina and thus requires at least that version. It is tested with
bashas the default shell. Please report problems encountered withzsh. - The Windows version was not tested but is supposed to run on Windows 10 and higher versions. File a github issue in case of problems. I'm happy to help.
- Any other OS: Install from git directly: https://discodos.readthedocs.io/en/latest/CONTRIBUTION.html#install-development-version
DiscoDOS v1.0.1
Fixes
-
When Discogs search didn't get any results (either invoked via
disco search <searchterm>ordisco mix <mixname> -a <searchterm>or any other way) one of the following two errors were shown to the user. All the requested operations were working properly but especially on macOS it caused an ugly popup message - this is fixed now.- AttributeError: bool object has no attribute pages
- TypeError: can only concatenate str (not "int") to str
-
Also when Discogs search didn't find anything, before above errors were shown, a tiny ERROR message about a "non-existent list index" was shown to the user. The error was already catched and handled but is useless to the user anyway, thus it is not shown anymore.
View all release notes: https://github.com/JOJ0/discodos/releases
DiscoDOS v1.0.0
DiscoDOS 1.0 is finally released!
New
- Update full releases (rather than single tracks or whole mixes)
- Discogs update:
search -u all - *Brainz update:
search -z all
- Discogs update:
- DiscoDOS got a website: https://discodos.jojotodos.net
- All documentation is generated with Sphinx and hosted on https://discodos.readthedocs.org.
- Prior docs from github markdown files included
- New autogenerated "Commands Reference" section
- And a lot more fixes and improvements to docs
- Testsuite is run automatically on pushes to master branch using github actions
- Release process automations
- Fully automated generation of Windows package using github actions
- Improvements in generation of macOS package (posix_pack.sh). Has to be executed on local machine because github actions doesn't support running on "older" macOS versions
- Autogeneration of github release when a new tag is pushed
Improved
- Longer Artist/Track/Release names in mix tracklist view are now split into several lines rather than just 2 lines. The default breaking point is fixed to 16 characters and might be configurable in future versions.
- Http Error handling in Discogs update and *Brainz matching is now even more robust. This especially improves long-running *Brainz matching processes.
- Some additional counters are shown in final *Brainz match stats
- Testsuite code style: formatting/linting towards PEP8 compliance
Fixes
- Fix off by one errors when resuming long running processes (e.g Brainz matching)
- Fix "Can't fetch ... Track not existing on Discogs... error" - this happened when user asked for tracks to be matched that where not updated with Track names from Discogs. Now if unavailable Discogs will just be asked on the fly.
- Fix --resume silently ignored when given options combination is actually not yet supported or supposed to work together
- Testsuite fixes: test_collection, test_mix, test_brainz now working well again
- Many fixes and refactoring in macOS packaging and initial installation magic
Deprecated
- Packaging of a self-contained Linux version was dropped with this release - Almost any Linux comes with a supported Python version. Please install DiscoDOS as a Python package or use version 1.0_rc2 that is included in Debian/Ubuntu based distros via
apt-get install discodos