pyrekordbox 0.2.1__tar.gz → 0.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/workflows/pypi-publish.yml +9 -7
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/workflows/tests.yml +2 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.pre-commit-config.yaml +1 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.readthedocs.yaml +1 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/CHANGELOG.md +38 -1
- {pyrekordbox-0.2.1/pyrekordbox.egg-info → pyrekordbox-0.2.2}/PKG-INFO +12 -11
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/README.md +9 -3
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/formats/anlz.md +178 -7
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/formats/db6.md +1 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/index.md +2 -6
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/quickstart.md +68 -45
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyproject.toml +4 -10
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/__init__.py +1 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/_version.py +2 -2
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/anlz/file.py +39 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/anlz/structs.py +3 -5
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/config.py +71 -27
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/db6/database.py +260 -33
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/db6/registry.py +22 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/db6/tables.py +3 -4
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2/pyrekordbox.egg-info}/PKG-INFO +12 -11
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/SOURCES.txt +1 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/requires.txt +2 -8
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/top_level.txt +0 -1
- pyrekordbox-0.2.2/setup.cfg +4 -0
- pyrekordbox-0.2.2/tests/test_config.py +175 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/tests/test_db6.py +78 -0
- pyrekordbox-0.2.1/setup.cfg +0 -9
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.github/workflows/codeql.yml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.gitignore +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/export.pdb +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/exportExt.pdb +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_bottom/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_top/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/exponential/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/smooth/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/constant/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/fast_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/slow_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/white/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/mono_split/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/stereo/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/post_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/pre_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/toggle/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/trigger/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eight/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eleven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fifteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fourteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/nine/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/seven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/six/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/sixteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/ten/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/thirteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/twelve/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_12db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_18db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_24db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_6db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/advanced/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/normal/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/memory/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_36db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_42db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_48db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_54db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_60db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_66db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_72db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_78db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/rekordbox/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/cdj/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/vinyl/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_simplified/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_traditional/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/czech/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/danish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/dutch/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/english/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/french/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/german/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/greek/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/hungarian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/italian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/japanese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/korean/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/portuguese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/russian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/spanish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/swedish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/turkish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/five/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/four/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/three/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/two/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type1/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type2/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/continue_/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/single/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/eighth/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/half/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/quarter/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/six/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/sixteen/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/ten/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/wide/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/elapsed/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/remain/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/eight/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/half/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixteen/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixtyfour/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/thirtytwo/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/artwork/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/auto/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/info/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/simple/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/five/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch_release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/phase_meter/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/waveform/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/phrase/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/time_scale/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/ExtData.edb +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/datafile.edb +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/database.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/datafile.edb +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists6.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/database.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/masterPlaylists6_template.xml +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_locked.db +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_unlocked.db +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/CONTRIBUTING.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/INSTALLATION.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/LICENSE +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/Makefile +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/make.bat +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_beat.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_file.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pco2.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcob.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcp2.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcpt.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_ppth.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2_2.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqtz.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi_entry.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pvbr.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwav.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv3.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv4.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5_entry.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv6.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv7.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwvc.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_tag.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/logos/dark/logo_primary.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/logos/light/logo_primary.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_static/logos/mid/logo_primary.svg +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/module.rst_t +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/package.rst_t +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/toc.rst_t +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/class.rst +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/module.rst +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/api.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/conf.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/development/changes.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/development/contributing.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/formats/mysetting.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/formats/xml.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/installation.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/requirements.txt +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/anlz.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/configuration.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/db6.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/index.md +1 -1
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/mysetting.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/docs/source/tutorial/xml.md +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/__main__.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/anlz/__init__.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/anlz/tags.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/db6/__init__.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/db6/aux_files.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/logger.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/__init__.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/file.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/structs.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/utils.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox/xml.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/dependency_links.txt +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/not-zip-safe +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/requirements.txt +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/setup.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/tests/__init__.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/tests/test_anlz.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/tests/test_mysetting.py +0 -0
- {pyrekordbox-0.2.1 → pyrekordbox-0.2.2}/tests/test_xml.py +0 -0
@@ -34,26 +34,28 @@ jobs:
|
|
34
34
|
- name: Set up Python
|
35
35
|
uses: actions/setup-python@v4
|
36
36
|
with:
|
37
|
-
python-version: "3.
|
37
|
+
python-version: "3.11"
|
38
38
|
|
39
39
|
- name: Install dependencies
|
40
40
|
run: |
|
41
41
|
python -m pip install --upgrade pip
|
42
|
-
pip install
|
43
|
-
pip install
|
42
|
+
pip install --upgrade build
|
43
|
+
pip install --upgrade twine
|
44
44
|
|
45
|
-
- name: Build
|
45
|
+
- name: Build distribution 📦
|
46
|
+
run: |
|
47
|
+
python -m build
|
48
|
+
|
49
|
+
- name: Publish distribution 📦 to Test PyPI
|
46
50
|
env:
|
47
51
|
TWINE_USERNAME: ${{ secrets.TEST_PYPI_USERNAME }}
|
48
52
|
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_PASSWORD }}
|
49
53
|
run: |
|
50
|
-
python setup.py sdist bdist_wheel
|
51
54
|
twine upload --repository testpypi dist/*
|
52
55
|
|
53
|
-
- name:
|
56
|
+
- name: Publish distribution 📦 to PyPI
|
54
57
|
env:
|
55
58
|
TWINE_USERNAME: ${{ secrets.PYPI_USERNAME }}
|
56
59
|
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
57
60
|
run: |
|
58
|
-
python setup.py sdist bdist_wheel
|
59
61
|
twine upload dist/*
|
@@ -43,7 +43,7 @@ jobs:
|
|
43
43
|
strategy:
|
44
44
|
matrix:
|
45
45
|
os: [windows-latest, macos-latest]
|
46
|
-
python-version: ["3.7", "3.
|
46
|
+
python-version: ["3.7", "3.12"] # check oldest and latest supported version
|
47
47
|
other-os: [true]
|
48
48
|
|
49
49
|
runs-on: ${{ matrix.os }}
|
@@ -66,6 +66,7 @@ jobs:
|
|
66
66
|
- name: Build and install
|
67
67
|
run: |
|
68
68
|
python -m pip install --upgrade pip
|
69
|
+
pip install setuptools
|
69
70
|
pip install .[test]
|
70
71
|
|
71
72
|
- name: Get package version
|
@@ -1,6 +1,42 @@
|
|
1
1
|
# What's New
|
2
2
|
|
3
3
|
|
4
|
+
<a name="0.2.2"></a>
|
5
|
+
## [0.2.2] - 2023-10-26
|
6
|
+
|
7
|
+
### New Features
|
8
|
+
|
9
|
+
- **add new albums to the RBv6 db**
|
10
|
+
New entries can now be added to the `DjmdAlbum` table.
|
11
|
+
- **add new genres to the RBv6 db**
|
12
|
+
New entries can now be added to the `DjmdGenre` table.
|
13
|
+
- **add new artists to the RBv6 db**
|
14
|
+
New entries can now be added to the `DjmdArtist` table.
|
15
|
+
- **add new labels to the RBv6 db**
|
16
|
+
New entries can now be added to the `DjmdLabel` table.
|
17
|
+
- **support renamed Rekordbox application directory**
|
18
|
+
The user can now specify the directory name of the Rekordbox application directory.
|
19
|
+
This supports multiple Rekordbox installations of the same major version.
|
20
|
+
|
21
|
+
### Improvements/Bug Fixes
|
22
|
+
|
23
|
+
- **don't raise error if key is in cache**
|
24
|
+
This fixes an issue when using the database handler for Rekordbox>6.6.5 with the cached key.
|
25
|
+
- **de-obfuscate PSSI tag data on exported ANLZ files**
|
26
|
+
The PSSI tag data of ANLZ files that rekordbox 6 *exports* is garbled with an XOR mask.
|
27
|
+
If the first few known fields of the PSSI tag are not valid values this indicates a garbled tag
|
28
|
+
and the data is de-obfuscated.
|
29
|
+
Thank you [@troyhacks](https://github.com/troyhacks) for the de-obfuscation.
|
30
|
+
- **add disabled context manager to the RBv6 `RekordboxAgentRegistry`**
|
31
|
+
- **only re-enable RBV6 USN tracking if it was enabled**
|
32
|
+
|
33
|
+
### Documentation
|
34
|
+
|
35
|
+
- **add missing documentation of the PSSI tag of ANLZ files**
|
36
|
+
- **Fix typo in djmdCue table documentation**
|
37
|
+
- **update quickstart documentation**
|
38
|
+
|
39
|
+
|
4
40
|
<a name="0.2.1"></a>
|
5
41
|
## [0.2.1] - 2023-10-20
|
6
42
|
|
@@ -430,7 +466,8 @@ This release contains documentation fixes.
|
|
430
466
|
- **add missing djmd tables to `master.db` database documentation**
|
431
467
|
|
432
468
|
|
433
|
-
[Unreleased]: https://github.com/dylanljones/pyrekordbox/compare/0.2.
|
469
|
+
[Unreleased]: https://github.com/dylanljones/pyrekordbox/compare/0.2.2...HEAD
|
470
|
+
[0.2.2]: https://github.com/dylanljones/pyrekordbox/compare/0.2.1...0.2.2
|
434
471
|
[0.2.1]: https://github.com/dylanljones/pyrekordbox/compare/0.2.0...0.2.1
|
435
472
|
[0.2.0]: https://github.com/dylanljones/pyrekordbox/compare/0.1.8...0.2.0
|
436
473
|
[0.1.8]: https://github.com/dylanljones/pyrekordbox/compare/0.1.7...0.1.8
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyrekordbox
|
3
|
-
Version: 0.2.
|
3
|
+
Version: 0.2.2
|
4
4
|
Summary: Inofficial Python package for interacting with the library of Pioneers Rekordbox DJ software.
|
5
5
|
Author-email: Dylan Jones <dylanljones94@gmail.com>
|
6
6
|
License: MIT License
|
@@ -50,19 +50,14 @@ License-File: LICENSE
|
|
50
50
|
Requires-Dist: bidict>=0.21.0
|
51
51
|
Requires-Dist: blowfish>=0.6.0
|
52
52
|
Requires-Dist: construct>=2.10.0
|
53
|
-
Requires-Dist: hypothesis>=6.0.0
|
54
53
|
Requires-Dist: numpy>=1.19.0
|
55
54
|
Requires-Dist: packaging
|
56
|
-
Requires-Dist: pytest>=6.2.0
|
57
55
|
Requires-Dist: psutil>=5.9.0
|
58
|
-
Requires-Dist: setuptools>=60.0.0
|
59
|
-
Requires-Dist: setuptools-scm[toml]>=4
|
60
56
|
Requires-Dist: sqlalchemy>=2.0.0
|
61
|
-
Provides-Extra: build
|
62
|
-
Requires-Dist: wheel>=0.37.0; extra == "build"
|
63
57
|
Provides-Extra: test
|
58
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "test"
|
59
|
+
Requires-Dist: pytest>=6.2.0; extra == "test"
|
64
60
|
Requires-Dist: pytest-cov; extra == "test"
|
65
|
-
Requires-Dist: wheel>=0.37.0; extra == "test"
|
66
61
|
|
67
62
|
|
68
63
|
<p align="center">
|
@@ -88,7 +83,7 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
88
83
|
- Analysis files (ANLZ)
|
89
84
|
- My-Setting files
|
90
85
|
|
91
|
-
Tested Rekordbox versions: ``5.8.6 | 6.5.3``
|
86
|
+
Tested Rekordbox versions: ``5.8.6 | 6.5.3 | 6.7.7``
|
92
87
|
|
93
88
|
|
94
89
|
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future. |
|
@@ -112,7 +107,7 @@ where `VERSION` is a release, tag or branch name.
|
|
112
107
|
|
113
108
|
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
114
109
|
Pyrekordbox makes no attempt to download/install SQLCipher, as it is a
|
115
|
-
pure Python package - whereas the SQLCipher/
|
110
|
+
pure Python package - whereas the SQLCipher/sqlcipher3 installation is
|
116
111
|
platform-dependent and can not be installed via ``pip``.
|
117
112
|
|
118
113
|
#### Windows
|
@@ -205,7 +200,7 @@ So far only a few tables support adding or deleting entries:
|
|
205
200
|
- ``DjmdSongPlaylist``: Songs in a playlist
|
206
201
|
|
207
202
|
Starting from Rekordbox version ``6.6.5`` Pioneer obfuscated the ``app.asar`` file
|
208
|
-
contents, breaking the key extraction (see [this
|
203
|
+
contents, breaking the key extraction (see [this discussion](https://github.com/dylanljones/pyrekordbox/discussions/97) for more details).
|
209
204
|
If you are using a later version of Rekorbox and have no cached key from a previous
|
210
205
|
version, the database can not be unlocked automatically.
|
211
206
|
The command line interface of ``pyrekordbox`` provides a command for downloading
|
@@ -304,6 +299,8 @@ sync = mysett.get("sync")
|
|
304
299
|
quant = mysett.get("quantize")
|
305
300
|
````
|
306
301
|
|
302
|
+
The `DEVSETTING.DAT` file is still not supported
|
303
|
+
|
307
304
|
|
308
305
|
## 💡 File formats
|
309
306
|
|
@@ -323,6 +320,9 @@ If you encounter an issue or want to contribute to pyrekordbox, please feel free
|
|
323
320
|
`pyrekordbox` and the commit-message style can be found in
|
324
321
|
[CONTRIBUTING].
|
325
322
|
|
323
|
+
For general questions or discussions about Rekordbox, please use [GitHub Discussions][discussions]
|
324
|
+
instead of opening an issue.
|
325
|
+
|
326
326
|
Pyrekordbox is tested on Windows and MacOS, however some features can't be tested in
|
327
327
|
the CI setup since it requires a working Rekordbox installation.
|
328
328
|
|
@@ -374,6 +374,7 @@ the CI setup since it requires a working Rekordbox installation.
|
|
374
374
|
[mysettings-doc]: https://pyrekordbox.readthedocs.io/en/stable/formats/mysetting.html
|
375
375
|
|
376
376
|
[new-issue]: https://github.com/dylanljones/pyrekordbox/issues/new/choose
|
377
|
+
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
377
378
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
378
379
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
379
380
|
[INSTALLATION]: https://github.com/dylanljones/pyrekordbox/blob/master/INSTALLATION.md
|
@@ -22,7 +22,7 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
22
22
|
- Analysis files (ANLZ)
|
23
23
|
- My-Setting files
|
24
24
|
|
25
|
-
Tested Rekordbox versions: ``5.8.6 | 6.5.3``
|
25
|
+
Tested Rekordbox versions: ``5.8.6 | 6.5.3 | 6.7.7``
|
26
26
|
|
27
27
|
|
28
28
|
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future. |
|
@@ -46,7 +46,7 @@ where `VERSION` is a release, tag or branch name.
|
|
46
46
|
|
47
47
|
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
48
48
|
Pyrekordbox makes no attempt to download/install SQLCipher, as it is a
|
49
|
-
pure Python package - whereas the SQLCipher/
|
49
|
+
pure Python package - whereas the SQLCipher/sqlcipher3 installation is
|
50
50
|
platform-dependent and can not be installed via ``pip``.
|
51
51
|
|
52
52
|
#### Windows
|
@@ -139,7 +139,7 @@ So far only a few tables support adding or deleting entries:
|
|
139
139
|
- ``DjmdSongPlaylist``: Songs in a playlist
|
140
140
|
|
141
141
|
Starting from Rekordbox version ``6.6.5`` Pioneer obfuscated the ``app.asar`` file
|
142
|
-
contents, breaking the key extraction (see [this
|
142
|
+
contents, breaking the key extraction (see [this discussion](https://github.com/dylanljones/pyrekordbox/discussions/97) for more details).
|
143
143
|
If you are using a later version of Rekorbox and have no cached key from a previous
|
144
144
|
version, the database can not be unlocked automatically.
|
145
145
|
The command line interface of ``pyrekordbox`` provides a command for downloading
|
@@ -238,6 +238,8 @@ sync = mysett.get("sync")
|
|
238
238
|
quant = mysett.get("quantize")
|
239
239
|
````
|
240
240
|
|
241
|
+
The `DEVSETTING.DAT` file is still not supported
|
242
|
+
|
241
243
|
|
242
244
|
## 💡 File formats
|
243
245
|
|
@@ -257,6 +259,9 @@ If you encounter an issue or want to contribute to pyrekordbox, please feel free
|
|
257
259
|
`pyrekordbox` and the commit-message style can be found in
|
258
260
|
[CONTRIBUTING].
|
259
261
|
|
262
|
+
For general questions or discussions about Rekordbox, please use [GitHub Discussions][discussions]
|
263
|
+
instead of opening an issue.
|
264
|
+
|
260
265
|
Pyrekordbox is tested on Windows and MacOS, however some features can't be tested in
|
261
266
|
the CI setup since it requires a working Rekordbox installation.
|
262
267
|
|
@@ -308,6 +313,7 @@ the CI setup since it requires a working Rekordbox installation.
|
|
308
313
|
[mysettings-doc]: https://pyrekordbox.readthedocs.io/en/stable/formats/mysetting.html
|
309
314
|
|
310
315
|
[new-issue]: https://github.com/dylanljones/pyrekordbox/issues/new/choose
|
316
|
+
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
311
317
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
312
318
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
313
319
|
[INSTALLATION]: https://github.com/dylanljones/pyrekordbox/blob/master/INSTALLATION.md
|
@@ -247,7 +247,7 @@ Rekordbox Performance Mode, but starting with Rekordbox version 6 it also gets
|
|
247
247
|
exported to external media so CDJ-3000 players can use it to control lighting looks.
|
248
248
|
|
249
249
|
```{note}
|
250
|
-
The version that Rekordbox 6 exports is garbled with an XOR mask to make it
|
250
|
+
The version that Rekordbox 6 **exports** is garbled with an XOR mask to make it
|
251
251
|
more difficult to access the data. All bytes after `len_e` are XOR-masked with a
|
252
252
|
pattern that is generated by adding the value of `len_e` to each byte of the following
|
253
253
|
base pattern:
|
@@ -270,14 +270,16 @@ entries are present in the tag. Each entry represents one recognized phrase.
|
|
270
270
|
|
271
271
|
The value `mood` specifies the overall type of phrase structure that rekordbox chose to
|
272
272
|
represent the song, based on its analysis of the audio.
|
273
|
-
|
274
|
-
where the phrase types consist of “Intro”, “Up”, “Down”,
|
275
|
-
Other values in each phrase entry cause the intro, chorus, and
|
276
|
-
their labels subdivided into styes “1” or “2”
|
277
|
-
subdivided into style “Up 1”, “Up 2”, or “Up 3”.
|
278
|
-
version of this description.
|
273
|
+
|
274
|
+
The value 1 is a “high” mood where the phrase types consist of “Intro”, “Up”, “Down”,
|
275
|
+
“Chorus”, and “Outro”. Other values in each phrase entry cause the intro, chorus, and
|
276
|
+
outro phrases to have their labels subdivided into styes “1” or “2”
|
277
|
+
(for example, “Intro 1”), and “up” is subdivided into style “Up 1”, “Up 2”, or “Up 3”.
|
278
|
+
See the table below for an expanded version of this description.
|
279
|
+
|
279
280
|
The value 2 is a “mid” mood where the phrase types are labeled “Intro”, “Verse 1”
|
280
281
|
through “Verse 6”, “Chorus”, “Bridge”, and “Outro”.
|
282
|
+
|
281
283
|
And value 3 is a “low” mood where the phrase types are labeled “Intro”, “Verse 1”,
|
282
284
|
“Verse 2”, “Chorus”, “Bridge”, and “Outro”. There are three different phrase type
|
283
285
|
values for each of “Verse 1” and “Verse 2”, but rekordbox makes no distinction between
|
@@ -301,6 +303,175 @@ Each phrase entry has the structure shown below:
|
|
301
303
|
Song structure entry.
|
302
304
|
```
|
303
305
|
|
306
|
+
The first two bytes of each song structure entry hold `index`, which numbers each phrase,
|
307
|
+
starting at one and incrementing with each entry. That is followed by beat,
|
308
|
+
a two-byte value that specifies the beat at which this phrase begins in the track.
|
309
|
+
It continues until either the beat number of the next phrase, or the beat identified
|
310
|
+
by end in the tag header if this is the last entry.
|
311
|
+
|
312
|
+
`kind` specifies what kind of phrase rekordbox has identified here.
|
313
|
+
The interpretation depends on the value of mood in the tag header, as is detailed the
|
314
|
+
table below. In the case of the “high” mood, there are numbered variations for some
|
315
|
+
of the phrases displayed in rekordbox that are not reflected in kind, but depend on the
|
316
|
+
values of three flag bytes `k1` through `k3` in a complicated way shown in its own table.
|
317
|
+
|
318
|
+
We also noticed that when `mood`, `kind` and the `k` flags indicate a phrase of type
|
319
|
+
“Up 3”, additional beat numbers (which all fall within the phrase) are present in the
|
320
|
+
entry. These may indicate points within the phrase at which lighting changes would look good;
|
321
|
+
more investigation is required to make sense of them.
|
322
|
+
The number of beats that will be listed seems to depend on the value of the flag `b`:
|
323
|
+
if this has the value 0, there will be a single beat found in `beat2`, and if `b` has
|
324
|
+
the value 1 there will be three different beat numbers present, with increasing values,
|
325
|
+
in `beat2`, `beat3` and `beat4`.
|
326
|
+
|
327
|
+
`fill` is a flag that indicates whether there are fill (non-phrase) beats at the end of
|
328
|
+
the phrase. If it is non-zero, then ``beat fill`` holds the beat number at which the
|
329
|
+
fill begins. When fill-in is present, it is indicated in rekordbox by little dots on the
|
330
|
+
full waveform. The manual says:
|
331
|
+
|
332
|
+
|
333
|
+
[Fill in] is a section that provides improvisational changes at the end of phrase.
|
334
|
+
[Fill in] is detected at the end of Intro, Up, and Chorus (up to 4 beats).
|
335
|
+
|
336
|
+
|
337
|
+
|
338
|
+
```{eval-rst}
|
339
|
+
.. list-table:: Phrase labels in each mood.
|
340
|
+
:header-rows: 1
|
341
|
+
|
342
|
+
* - Phrase ID
|
343
|
+
- Low Label
|
344
|
+
- Mid Label
|
345
|
+
- High Label
|
346
|
+
* - 1
|
347
|
+
- Intro
|
348
|
+
- Intro
|
349
|
+
- Intro n
|
350
|
+
* - 2
|
351
|
+
- Verse 1
|
352
|
+
- Verse 1
|
353
|
+
- Up n
|
354
|
+
* - 3
|
355
|
+
- Verse 1
|
356
|
+
- Verse 2
|
357
|
+
- Down
|
358
|
+
* - 4
|
359
|
+
- Verse 1
|
360
|
+
- Verse 3
|
361
|
+
-
|
362
|
+
* - 5
|
363
|
+
- Verse 2
|
364
|
+
- Verse 4
|
365
|
+
- Chorus n
|
366
|
+
* - 6
|
367
|
+
- Verse 2
|
368
|
+
- Verse 5
|
369
|
+
- Outro n
|
370
|
+
* - 7
|
371
|
+
- Verse 2
|
372
|
+
- Verse 6
|
373
|
+
-
|
374
|
+
* - 8
|
375
|
+
- Bridge
|
376
|
+
- Bridge
|
377
|
+
-
|
378
|
+
* - 9
|
379
|
+
- Chorus
|
380
|
+
- Chorus
|
381
|
+
-
|
382
|
+
* - 10
|
383
|
+
- Outro
|
384
|
+
- Outro
|
385
|
+
-
|
386
|
+
```
|
387
|
+
|
388
|
+
```{eval-rst}
|
389
|
+
.. list-table:: High mood phrase variants.
|
390
|
+
:header-rows: 1
|
391
|
+
|
392
|
+
* - Phrase ID
|
393
|
+
- k1
|
394
|
+
- k2
|
395
|
+
- k3
|
396
|
+
- Expanded Label
|
397
|
+
* - 1
|
398
|
+
- 1
|
399
|
+
-
|
400
|
+
-
|
401
|
+
- Intro 1
|
402
|
+
* - 1
|
403
|
+
- 0
|
404
|
+
-
|
405
|
+
-
|
406
|
+
- Intro 2
|
407
|
+
* - 2
|
408
|
+
-
|
409
|
+
- 0
|
410
|
+
- 0
|
411
|
+
- Up 1
|
412
|
+
* - 2
|
413
|
+
-
|
414
|
+
- 0
|
415
|
+
- 1
|
416
|
+
- Up 2
|
417
|
+
* - 2
|
418
|
+
-
|
419
|
+
- 1
|
420
|
+
- 0
|
421
|
+
- Up 3
|
422
|
+
* - 3
|
423
|
+
-
|
424
|
+
-
|
425
|
+
-
|
426
|
+
- Down 1
|
427
|
+
* - 5
|
428
|
+
- 1
|
429
|
+
-
|
430
|
+
-
|
431
|
+
- Chorus 2
|
432
|
+
* - 5
|
433
|
+
- 0
|
434
|
+
-
|
435
|
+
-
|
436
|
+
- Chorus 1
|
437
|
+
* - 6
|
438
|
+
- 1
|
439
|
+
-
|
440
|
+
-
|
441
|
+
- Outro 1
|
442
|
+
* - 6
|
443
|
+
- 0
|
444
|
+
-
|
445
|
+
-
|
446
|
+
- Outro 2
|
447
|
+
```
|
448
|
+
|
449
|
+
```{eval-rst}
|
450
|
+
.. list-table:: Track banks.
|
451
|
+
:header-rows: 1
|
452
|
+
|
453
|
+
* - Bank ID
|
454
|
+
- Label
|
455
|
+
* - 0
|
456
|
+
- Default (treated as Cool)
|
457
|
+
* - 1
|
458
|
+
- Cool
|
459
|
+
* - 2
|
460
|
+
- Natural
|
461
|
+
* - 3
|
462
|
+
- Hot
|
463
|
+
* - 4
|
464
|
+
- Subtle
|
465
|
+
* - 5
|
466
|
+
- Warm
|
467
|
+
* - 6
|
468
|
+
- Vivid
|
469
|
+
* - 7
|
470
|
+
- Club 1
|
471
|
+
* - 8
|
472
|
+
- Club 2
|
473
|
+
```
|
474
|
+
|
304
475
|
### PWAV: Waveform Preview Tag
|
305
476
|
|
306
477
|
Seen in `.DAT` analysis files. This kind of section holds a fixed-width monochrome
|
@@ -489,7 +489,7 @@ around 1/75th of a second (13.333ms) per frame, i.e. about half the granularity
|
|
489
489
|
- `0` if not a loop or VBR/ABR MPEG file
|
490
490
|
* - `Kind`
|
491
491
|
- Type of cue point
|
492
|
-
- Cue= `0` , Fade-In= `
|
492
|
+
- Cue= `0` , Fade-In= `1` , Fade-Out= `2` , Load= `3` , Loop= `4`
|
493
493
|
* - `Color`
|
494
494
|
- The color ID of the cue point
|
495
495
|
- `-1` if no color
|
@@ -28,11 +28,7 @@ Pioneer's Rekordbox DJ Software. It currently supports
|
|
28
28
|
- Analysis files (ANLZ)
|
29
29
|
- My-Settings files
|
30
30
|
|
31
|
-
Tested Rekordbox versions: `5.8.6 | 6.5.3`
|
32
|
-
|
33
|
-
Starting from version `6.6.5` Pioneer obfuscated the `app.asar` file contents, breaking
|
34
|
-
the key extraction (see [this issue][issue] and the Rekordbox 6 database section for
|
35
|
-
more details).
|
31
|
+
Tested Rekordbox versions: `5.8.6 | 6.5.3 | 6.7.7`
|
36
32
|
|
37
33
|
```{warning}
|
38
34
|
This project is still under development and might contain bugs or
|
@@ -59,10 +55,10 @@ maxdepth: 2
|
|
59
55
|
caption: File formats
|
60
56
|
---
|
61
57
|
|
58
|
+
formats/db6
|
62
59
|
formats/xml
|
63
60
|
formats/anlz
|
64
61
|
formats/mysetting
|
65
|
-
formats/db6
|
66
62
|
```
|
67
63
|
|
68
64
|
```{toctree}
|
@@ -25,18 +25,6 @@ from pyrekordbox import show_config
|
|
25
25
|
|
26
26
|
show_config()
|
27
27
|
````
|
28
|
-
|
29
|
-
which, for example, will print
|
30
|
-
````
|
31
|
-
Pioneer:
|
32
|
-
app_dir = C:\Users\user\AppData\Roaming\Pioneer
|
33
|
-
install_dir = C:\Program Files\Pioneer
|
34
|
-
Rekordbox 5:
|
35
|
-
app_dir = C:\Users\user\AppData\Roaming\Pioneer\rekordbox
|
36
|
-
install_dir = C:\Program Files\Pioneer\rekordbox 5.8.6
|
37
|
-
...
|
38
|
-
````
|
39
|
-
|
40
28
|
If for some reason the configuration fails the values can be updated by providing the
|
41
29
|
paths to the directory where Pioneer applications are installed (`pioneer_install_dir`)
|
42
30
|
and to the directory where Pioneer stores the application data (`pioneer_app_dir`)
|
@@ -45,12 +33,65 @@ from pyrekordbox.config import update_config
|
|
45
33
|
|
46
34
|
update_config("<pioneer_install_dir>", "<pioneer_app_dir>")
|
47
35
|
````
|
48
|
-
|
49
36
|
Alternatively the two paths can be specified in a configuration file under the section
|
50
37
|
`rekordbox`. Supported configuration files are pyproject.toml, setup.cfg, pyrekordbox.toml,
|
51
38
|
pyrekordbox.cfg and pyrekordbox.yaml.
|
52
39
|
|
53
40
|
|
41
|
+
## Rekordbox 6 database
|
42
|
+
|
43
|
+
Rekordbox 6 now uses a SQLite database for storing the collection content.
|
44
|
+
Unfortunatly, the new `master.db` SQLite database is encrypted using
|
45
|
+
[SQLCipher][sqlcipher], which means it can't be used without the encryption key.
|
46
|
+
However, since your data is stored and used locally, the key must be present on the
|
47
|
+
machine running Rekordbox.
|
48
|
+
|
49
|
+
Pyrekordbox can unlock the new Rekordbox `master.db` SQLite database and provides
|
50
|
+
an easy interface for accessing the data stored in it:
|
51
|
+
|
52
|
+
````python
|
53
|
+
from pyrekordbox import Rekordbox6Database
|
54
|
+
|
55
|
+
db = Rekordbox6Database()
|
56
|
+
|
57
|
+
for content in db.get_content():
|
58
|
+
print(content.Title, content.Artist.Name)
|
59
|
+
|
60
|
+
playlist = db.get_playlist()[0]
|
61
|
+
for song in playlist.Songs:
|
62
|
+
content = song.Content
|
63
|
+
print(content.Title, content.Artist.Name)
|
64
|
+
````
|
65
|
+
Fields in the Rekordbox database that are stored without linking to other tables
|
66
|
+
can be changed via the corresponding property of the object:
|
67
|
+
````python
|
68
|
+
content = db.get_content()[0]
|
69
|
+
content.Title = "New Title"
|
70
|
+
````
|
71
|
+
Some fields are stored as references to other tables, for example the artist of a track.
|
72
|
+
Check the [documentation](#db6-format) of the corresponding object for more information.
|
73
|
+
So far only a few tables support adding or deleting entries:
|
74
|
+
- ``DjmdPlaylist``: Playlists/Playlist Folders
|
75
|
+
- ``DjmdSongPlaylist``: Songs in a playlist
|
76
|
+
|
77
|
+
````{important}
|
78
|
+
Starting from Rekordbox version ``6.6.5`` Pioneer obfuscated the ``app.asar`` file
|
79
|
+
contents, breaking the key extraction (see [this discussion](https://github.com/dylanljones/pyrekordbox/discussions/97) for more details).
|
80
|
+
If you are using a later version of Rekorbox and have no cached key from a previous
|
81
|
+
version, the database can not be unlocked automatically.
|
82
|
+
The command line interface of ``pyrekordbox`` provides a command for downloading
|
83
|
+
the key from known sources and writing it to the cache file:
|
84
|
+
```shell
|
85
|
+
python -m pyrekordbox download-key
|
86
|
+
```
|
87
|
+
Once the key is cached the database can be opened without providing the key.
|
88
|
+
The key can also be provided manually:
|
89
|
+
```python
|
90
|
+
db = Rekordbox6Database(key="<insert key here>")
|
91
|
+
```
|
92
|
+
````
|
93
|
+
|
94
|
+
|
54
95
|
## Rekordbox XML
|
55
96
|
|
56
97
|
The Rekordbox XML database is used for importing (and exporting) Rekordbox collections
|
@@ -107,6 +148,17 @@ Changing and creating the Rekordbox analysis files is planned as well, but for t
|
|
107
148
|
full structure of the analysis files has to be understood.
|
108
149
|
|
109
150
|
|
151
|
+
```{note}
|
152
|
+
Some ANLZ tags are still unsupported:
|
153
|
+
- PCOB
|
154
|
+
- PCO2
|
155
|
+
- PSSI
|
156
|
+
- PWV6
|
157
|
+
- PWV7
|
158
|
+
- PWVC
|
159
|
+
```
|
160
|
+
|
161
|
+
|
110
162
|
## Rekordbox My-Settings
|
111
163
|
|
112
164
|
Rekordbox stores the user settings in `*SETTING.DAT` files, which get exported to USB
|
@@ -126,37 +178,8 @@ sync = mysett.get("sync")
|
|
126
178
|
quant = mysett.get("quantize")
|
127
179
|
````
|
128
180
|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
Rekordbox 6 now uses a SQLite database for storing the collection content.
|
133
|
-
Unfortunatly, the new `master.db` SQLite database is encrypted using
|
134
|
-
[SQLCipher][sqlcipher], which means it can't be used without the encryption key.
|
135
|
-
However, since your data is stored and used locally, the key must be present on the
|
136
|
-
machine running Rekordbox.
|
137
|
-
|
138
|
-
Pyrekordbox can unlock the new Rekordbox `master.db` SQLite database and provides
|
139
|
-
an easy interface for accessing the data stored in it:
|
140
|
-
|
141
|
-
````python
|
142
|
-
from pyrekordbox import Rekordbox6Database
|
143
|
-
|
144
|
-
db = Rekordbox6Database()
|
145
|
-
|
146
|
-
for content in db.get_content():
|
147
|
-
print(content.Title, content.Artist.Name)
|
148
|
-
|
149
|
-
playlist = db.get_playlist()[0]
|
150
|
-
for song in playlist.Songs:
|
151
|
-
content = song.Content
|
152
|
-
print(content.Title, content.Artist.Name)
|
153
|
-
````
|
154
|
-
Adding new rows to the tables of the database is not supported since it is not yet known
|
155
|
-
how Rekordbox generates the UUID/ID's. Using wrong values for new database entries
|
156
|
-
could corrupt the library. This feature will be added after some testing.
|
157
|
-
Changing existing entries like the title, artist or file path of a track in the database
|
158
|
-
should work as expected.
|
159
|
-
|
160
|
-
|
181
|
+
```{note}
|
182
|
+
The `DEVSETTING.DAT` file is still not supported
|
183
|
+
```
|
161
184
|
|
162
185
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
@@ -32,23 +32,17 @@ dependencies = [
|
|
32
32
|
"bidict>=0.21.0",
|
33
33
|
"blowfish>=0.6.0",
|
34
34
|
"construct>=2.10.0",
|
35
|
-
"hypothesis>=6.0.0",
|
36
35
|
"numpy>=1.19.0",
|
37
36
|
"packaging",
|
38
|
-
"pytest>=6.2.0",
|
39
37
|
"psutil>=5.9.0",
|
40
|
-
"setuptools>=60.0.0",
|
41
|
-
"setuptools-scm[toml]>=4",
|
42
38
|
"sqlalchemy>=2.0.0",
|
43
39
|
]
|
44
40
|
|
45
41
|
[project.optional-dependencies]
|
46
|
-
build = [
|
47
|
-
"wheel>=0.37.0",
|
48
|
-
]
|
49
42
|
test = [
|
43
|
+
"hypothesis>=6.0.0",
|
44
|
+
"pytest>=6.2.0",
|
50
45
|
"pytest-cov",
|
51
|
-
"wheel>=0.37.0",
|
52
46
|
]
|
53
47
|
|
54
48
|
[project.urls]
|
@@ -61,8 +55,8 @@ Tracker = "https://github.com/dylanljones/pyrekordbox/issues"
|
|
61
55
|
|
62
56
|
[build-system]
|
63
57
|
requires = [
|
64
|
-
"setuptools >=
|
65
|
-
"setuptools_scm[toml] >= 4
|
58
|
+
"setuptools >= 61.0.0",
|
59
|
+
"setuptools_scm[toml] >= 4",
|
66
60
|
"setuptools_scm_git_archive",
|
67
61
|
"wheel >= 0.37.0",
|
68
62
|
]
|