pyrekordbox 0.2.0__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.0 → pyrekordbox-0.2.2}/.github/workflows/pypi-publish.yml +9 -7
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/workflows/tests.yml +2 -1
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.pre-commit-config.yaml +3 -3
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.readthedocs.yaml +1 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/CHANGELOG.md +64 -1
- pyrekordbox-0.2.2/INSTALLATION.md +207 -0
- {pyrekordbox-0.2.0/pyrekordbox.egg-info → pyrekordbox-0.2.2}/PKG-INFO +42 -20
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/README.md +14 -7
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/anlz.md +178 -7
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/db6.md +54 -28
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/index.md +2 -6
- pyrekordbox-0.2.2/docs/source/installation.md +3 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/quickstart.md +68 -45
- pyrekordbox-0.2.2/pyproject.toml +144 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/__init__.py +1 -1
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/__main__.py +16 -37
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/_version.py +2 -2
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/file.py +39 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/structs.py +3 -5
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/config.py +71 -27
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/database.py +290 -61
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/registry.py +24 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/tables.py +501 -340
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/file.py +0 -25
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/utils.py +1 -1
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2/pyrekordbox.egg-info}/PKG-INFO +42 -20
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/SOURCES.txt +1 -1
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/requires.txt +3 -9
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/top_level.txt +2 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/requirements.txt +1 -1
- pyrekordbox-0.2.2/setup.cfg +4 -0
- pyrekordbox-0.2.2/tests/test_config.py +175 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_db6.py +95 -0
- pyrekordbox-0.2.0/INSTALLATION.md +0 -173
- pyrekordbox-0.2.0/docs/source/installation.md +0 -177
- pyrekordbox-0.2.0/pyproject.toml +0 -30
- pyrekordbox-0.2.0/setup.cfg +0 -114
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/workflows/codeql.yml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.gitignore +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/export.pdb +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/exportExt.pdb +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_bottom/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_top/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/exponential/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/smooth/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/constant/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/fast_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/slow_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/white/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/mono_split/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/stereo/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/post_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/pre_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/toggle/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/trigger/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eight/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eleven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fifteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fourteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/nine/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/seven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/six/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/sixteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/ten/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/thirteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/twelve/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_12db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_18db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_24db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_6db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/advanced/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/normal/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/memory/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_36db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_42db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_48db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_54db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_60db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_66db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_72db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_78db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/rekordbox/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/cdj/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/vinyl/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_simplified/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_traditional/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/czech/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/danish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/dutch/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/english/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/french/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/german/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/greek/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/hungarian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/italian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/japanese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/korean/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/portuguese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/russian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/spanish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/swedish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/turkish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/five/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/four/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/three/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/two/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type1/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type2/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/continue_/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/single/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/eighth/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/half/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/quarter/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/six/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/sixteen/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/ten/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/wide/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/elapsed/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/remain/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/eight/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/half/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixteen/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixtyfour/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/thirtytwo/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/artwork/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/auto/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/info/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/simple/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/five/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch_release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/phase_meter/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/waveform/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/phrase/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/time_scale/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/ExtData.edb +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/datafile.edb +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/database.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/datafile.edb +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists6.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/database.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/masterPlaylists6_template.xml +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_locked.db +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_unlocked.db +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/CONTRIBUTING.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/LICENSE +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/Makefile +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/make.bat +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_beat.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_file.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pco2.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcob.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcp2.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcpt.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_ppth.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2_2.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqtz.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi_entry.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pvbr.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwav.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv3.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv4.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5_entry.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv6.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv7.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwvc.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_tag.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/dark/logo_primary.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/light/logo_primary.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/mid/logo_primary.svg +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/module.rst_t +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/package.rst_t +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/toc.rst_t +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/class.rst +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/module.rst +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/api.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/conf.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/development/changes.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/development/contributing.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/mysetting.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/xml.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/requirements.txt +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/anlz.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/configuration.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/db6.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/index.md +1 -1
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/mysetting.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/xml.md +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/__init__.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/tags.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/__init__.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/aux_files.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/logger.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/__init__.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/structs.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/xml.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/dependency_links.txt +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/not-zip-safe +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/setup.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/__init__.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_anlz.py +0 -0
- {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_mysetting.py +0 -0
- {pyrekordbox-0.2.0 → 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
|
@@ -3,7 +3,7 @@
|
|
3
3
|
|
4
4
|
repos:
|
5
5
|
- repo: https://github.com/pre-commit/pre-commit-hooks
|
6
|
-
rev: v4.
|
6
|
+
rev: v4.5.0
|
7
7
|
hooks:
|
8
8
|
- id: end-of-file-fixer
|
9
9
|
- id: trailing-whitespace
|
@@ -13,7 +13,7 @@ repos:
|
|
13
13
|
- id: check-yaml
|
14
14
|
|
15
15
|
- repo: https://github.com/psf/black
|
16
|
-
rev: 23.
|
16
|
+
rev: 23.10.0
|
17
17
|
hooks:
|
18
18
|
- id: black
|
19
19
|
args: [ --safe ]
|
@@ -22,4 +22,4 @@ repos:
|
|
22
22
|
rev: 6.1.0
|
23
23
|
hooks:
|
24
24
|
- id: flake8
|
25
|
-
|
25
|
+
additional_dependencies: [Flake8-pyproject]
|
@@ -1,6 +1,67 @@
|
|
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
|
+
|
40
|
+
<a name="0.2.1"></a>
|
41
|
+
## [0.2.1] - 2023-10-20
|
42
|
+
|
43
|
+
This release migrates to SqlAlchemy 2.0 and fixes some bugs.
|
44
|
+
|
45
|
+
### Improvements/Bug Fixes
|
46
|
+
|
47
|
+
- **migrate to SqlAlchemy 2.0**
|
48
|
+
- **add getters/setters for the mixer gain/peak settings in the RBv6 db ([#88](https://github.com/dylanljones/pyrekordbox/issues/88)).**
|
49
|
+
The gain and peak values are stored as high/low binary values.
|
50
|
+
It is now possible to get or set the gain/peak as a simple decibel value.
|
51
|
+
Thank you [@gsuberland](https://github.com/gsuberland) for the help!
|
52
|
+
- **automatically set `updated_at` of tables in the RBv6 db**
|
53
|
+
The `updated_at` column is automatically updated via `onupdate` if rows are modified.
|
54
|
+
This only happens if the user did not set the column manually.
|
55
|
+
- **flush the RBv6 db changes before applying USN auto-increment.**
|
56
|
+
This allows the user to use `before_flush` events more easily without
|
57
|
+
affecting the USN changes
|
58
|
+
|
59
|
+
### BREAKING CHANGE
|
60
|
+
|
61
|
+
`pyrekordbox` now only supports `sqlcipher3`. `pysqlcipher3` is no longer supported
|
62
|
+
since it is not compatible with SqlAlchemy 2.0.
|
63
|
+
|
64
|
+
|
4
65
|
<a name="0.2.0"></a>
|
5
66
|
## [0.2.0] - 2023-10-03
|
6
67
|
|
@@ -405,7 +466,9 @@ This release contains documentation fixes.
|
|
405
466
|
- **add missing djmd tables to `master.db` database documentation**
|
406
467
|
|
407
468
|
|
408
|
-
[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
|
471
|
+
[0.2.1]: https://github.com/dylanljones/pyrekordbox/compare/0.2.0...0.2.1
|
409
472
|
[0.2.0]: https://github.com/dylanljones/pyrekordbox/compare/0.1.8...0.2.0
|
410
473
|
[0.1.8]: https://github.com/dylanljones/pyrekordbox/compare/0.1.7...0.1.8
|
411
474
|
[0.1.7]: https://github.com/dylanljones/pyrekordbox/compare/0.1.6...0.1.7
|
@@ -0,0 +1,207 @@
|
|
1
|
+
# Installation
|
2
|
+
|
3
|
+
Pyrekordbox is available on [PyPI]:
|
4
|
+
|
5
|
+
```sh
|
6
|
+
$ pip install pyrekordbox
|
7
|
+
```
|
8
|
+
|
9
|
+
Alternatively, it can be installed via [GitHub]:
|
10
|
+
|
11
|
+
```sh
|
12
|
+
$ pip install git+https://github.com/dylanljones/pyrekordbox.git@VERSION
|
13
|
+
```
|
14
|
+
|
15
|
+
where `VERSION` is a branch, tag or release. The project can also be cloned/forked
|
16
|
+
and installed via
|
17
|
+
|
18
|
+
```sh
|
19
|
+
$ python setup.py install
|
20
|
+
```
|
21
|
+
|
22
|
+
## Installing SQLCipher
|
23
|
+
|
24
|
+
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
25
|
+
|
26
|
+
### Windows
|
27
|
+
|
28
|
+
The easiest method to install SQLCipher on Windows is to build [sqlcipher3]
|
29
|
+
against an amalgamation of the SQLite3 source code.
|
30
|
+
|
31
|
+
1. **Install [Visual Studio Community Edition][VS]**
|
32
|
+
|
33
|
+
Make sure to select all the GCC options (VC++, C++, etc) in the installation process.
|
34
|
+
The following workloads under ``Desktop & Mobile`` should be sufficient:
|
35
|
+
- Desktop Development with C++
|
36
|
+
- .NET desktop development
|
37
|
+
|
38
|
+
|
39
|
+
2. **Install a prebuilt [OpenSSL binary][OpenSSL]**
|
40
|
+
|
41
|
+
Choose the latest Win32/Win64 version. Make sure to download the full version,
|
42
|
+
not the light version.
|
43
|
+
|
44
|
+
|
45
|
+
3. **Confirm that the `OPENSSL_CONF` environment variable is set properly in environment variables**
|
46
|
+
|
47
|
+
This should not be root openssl path (ex: `C:/Program Files/openssl-Win64`),
|
48
|
+
but instead should be the path to the config file, for example:
|
49
|
+
- 32-bit: ``C:/Program Files (x86)/openssl-Win32/bin/openssl.cfg``
|
50
|
+
- 64-bit: ``C:/Program Files/openssl-Win64/bin/openssl.cfg``
|
51
|
+
|
52
|
+
The library names of OpenSSL have changed in version 1.1.0 (see [this](https://stackoverflow.com/questions/65345077/unable-to-build-sqlcipher3-on-windows) discussion).
|
53
|
+
If you are using a newer version, you can set an environment variable
|
54
|
+
``OPENSSL_LIBNAME`` to the name of the library, e.g. ``libcrypto.lib``.
|
55
|
+
Alternatively, you can modify the ``setup.py`` script (see step 8 below).
|
56
|
+
|
57
|
+
You might have to restart Windows for the changes to take effect.
|
58
|
+
|
59
|
+
|
60
|
+
4. **Copy the openssl folder to the Microsoft Visual Studio 14 VC include directory**
|
61
|
+
|
62
|
+
The openssl folder can be found here:
|
63
|
+
- 32-bit: `C:/Program Files (x86)/OpenSSL-Win32/include/openssl`
|
64
|
+
- 64-bit: `C:/Program Files/OpenSSL-Win64/include/openssl`
|
65
|
+
|
66
|
+
The VC include directory (for any VS version) can be found in the
|
67
|
+
Visual Studio installation directory:
|
68
|
+
`C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include`
|
69
|
+
|
70
|
+
Confirm the following path exists `.../include/openssl/aes.h`
|
71
|
+
|
72
|
+
|
73
|
+
5. **Download / compile the SQLCipher 3 amalgamation files**
|
74
|
+
|
75
|
+
Pre-built SQLCipher 3 amalgamation files can be downloaded from [this repo](https://github.com/geekbrother/sqlcipher-amalgamation).
|
76
|
+
To compile the amalgamation files, follow [this tutorial](http://www.jerryrw.com/howtocompile.php).
|
77
|
+
|
78
|
+
|
79
|
+
6. **Clone [sqlcipher3] into any directory**
|
80
|
+
|
81
|
+
````commandline
|
82
|
+
git clone https://github.com/coleifer/sqlcipher3
|
83
|
+
````
|
84
|
+
|
85
|
+
|
86
|
+
7. **Copy amalgamation files to the `sqlcipher3` directory**
|
87
|
+
|
88
|
+
Copy files ``sqlite3.c`` and ``sqlite3.h`` from the amalgamation directory from step 5
|
89
|
+
to the root of the ``sqlcipher3`` directory from step 6.
|
90
|
+
|
91
|
+
|
92
|
+
8. **Modify the ``sqlcipher3/setup.py`` script (optional)**
|
93
|
+
|
94
|
+
If building the amalgamation fails and you haven't set the ``OPENSSL_LIBNAME``
|
95
|
+
environment variable in step 3, you have to modify the ``setup.py`` script. Change
|
96
|
+
````python
|
97
|
+
openssl_libname = os.environ.get('OPENSSL_LIBNAME') or 'libeay32.lib'
|
98
|
+
````
|
99
|
+
to
|
100
|
+
````python
|
101
|
+
openssl_libname = os.environ.get('OPENSSL_LIBNAME') or 'libcrypto.lib'
|
102
|
+
````
|
103
|
+
|
104
|
+
|
105
|
+
9. **Build using the amalgamation**
|
106
|
+
|
107
|
+
``cd`` into the ``sqlcipher3`` directory and run
|
108
|
+
````commandline
|
109
|
+
python setup.py build_static build
|
110
|
+
````
|
111
|
+
|
112
|
+
|
113
|
+
10. **Install ``sqlcipher3``**
|
114
|
+
|
115
|
+
````commandline
|
116
|
+
python setup.py install
|
117
|
+
````
|
118
|
+
|
119
|
+
You now should have a working ``sqlcipher3`` installation! The directory of the
|
120
|
+
cloned ``sqlcipher3`` repo can be deleted after installing the package.
|
121
|
+
|
122
|
+
Steps 5-10 can be automated using the CLI of ``pyrekordbox``:
|
123
|
+
````commandline
|
124
|
+
> python3 -m pyrekordbox install-sqlcipher --help
|
125
|
+
usage: pyrekordbox install-sqlcipher [-h] [-t TMPDIR] [-l CRYPTOLIB] [-q] [-b]
|
126
|
+
|
127
|
+
-h, --help show this help message and exit
|
128
|
+
-t TMPDIR, --tmpdir TMPDIR
|
129
|
+
Path for storing temporary data (default: '.tmp')
|
130
|
+
-l CRYPTOLIB, --cryptolib CRYPTOLIB
|
131
|
+
The name of the OpenSSl crypto libary (default: 'libcrypto.lib')
|
132
|
+
-b, --buildonly Don't install sqlcipher3, only build the amalgamation
|
133
|
+
````
|
134
|
+
|
135
|
+
#### Troubleshooting
|
136
|
+
|
137
|
+
- **Microsoft Visual C++ error**
|
138
|
+
|
139
|
+
If you are getting an error like
|
140
|
+
````commandline
|
141
|
+
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"``
|
142
|
+
````
|
143
|
+
and have Visual Studio installed, you might not have all the necessary C/C++ components.
|
144
|
+
|
145
|
+
- **LINK error**
|
146
|
+
|
147
|
+
If you are getting an error like
|
148
|
+
````commandline
|
149
|
+
LINK : fatal error LNK1158: cannot run 'rc.exe'
|
150
|
+
````
|
151
|
+
or
|
152
|
+
````commandline
|
153
|
+
LINK : fatal error LNK1327: failure during running rc.exe
|
154
|
+
````
|
155
|
+
make sure all the necessary C/C++ components are installed and that you have selected
|
156
|
+
the latest Win 10/11 SDK in the Visual Studio installer. If you are still getting the error,
|
157
|
+
follow the suggestions in this [StackOverflow post](https://stackoverflow.com/questions/14372706/visual-studio-cant-build-due-to-rc-exe).
|
158
|
+
|
159
|
+
|
160
|
+
### MacOS
|
161
|
+
|
162
|
+
For MacOS follow these steps:
|
163
|
+
|
164
|
+
1) Install [Homebrew](https://brew.sh) if you do not have it on your machine.
|
165
|
+
2) Install SQLCipher with `brew install SQLCipher`.
|
166
|
+
3) With the python environment you are using to run pyrekordbox active execute the following:
|
167
|
+
```shell
|
168
|
+
git clone https://github.com/coleifer/sqlcipher3
|
169
|
+
cd sqlcipher3
|
170
|
+
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py build
|
171
|
+
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py install
|
172
|
+
```
|
173
|
+
Make sure the `C_INCLUDE` and `LIBRARY_PATH` point to the installed SQLCipher path. It may differ on your machine.
|
174
|
+
|
175
|
+
If you are having issues building sqlcipher on M1 Macs you might have to add some symlinks:
|
176
|
+
```shell
|
177
|
+
ln -s /opt/homebrew/lib/libsqlcipher.a /usr/local/lib/libsqlcipher.a
|
178
|
+
ln -s /opt/homebrew/include/sqlcipher /usr/local/include/sqlcipher
|
179
|
+
```
|
180
|
+
Alternatively, you can also build [sqlcipher3] against an amalgamation (as described above for Windows, steps 5-10).
|
181
|
+
|
182
|
+
|
183
|
+
## Using SQLCipher
|
184
|
+
|
185
|
+
After the installation SQLCipher-databases can be unlocked via the `sqlcipher3` package:
|
186
|
+
````python
|
187
|
+
from sqlcipher3 import dbapi2 as sqlite3
|
188
|
+
|
189
|
+
conn = sqlite3.connect('test.db')
|
190
|
+
c = conn.cursor()
|
191
|
+
c.execute("PRAGMA key='password'")
|
192
|
+
````
|
193
|
+
|
194
|
+
|
195
|
+
### References:
|
196
|
+
|
197
|
+
- [https://stackoverflow.com/questions/33618565/how-to-build-sql-cipher-python-binding-for-windows](https://stackoverflow.com/questions/33618565/how-to-build-sql-cipher-python-binding-for-windows)
|
198
|
+
- [https://github.com/Monogi/pysqlcipher3_install_win10](https://github.com/Monogi/pysqlcipher3_install_win10)
|
199
|
+
|
200
|
+
|
201
|
+
|
202
|
+
[VS]: https://visualstudio.microsoft.com/de/vs/community/
|
203
|
+
[OpenSSL]: https://slproweb.com/products/Win32OpenSSL.html
|
204
|
+
[sqlcipher3]: https://github.com/coleifer/sqlcipher3
|
205
|
+
[Pypi]: https://pypi.org/project/pyrekordbox/
|
206
|
+
[GitHub]: https://github.com/dylanljones/pyrekordbox
|
207
|
+
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
@@ -1,14 +1,34 @@
|
|
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
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
5
|
+
Author-email: Dylan Jones <dylanljones94@gmail.com>
|
6
|
+
License: MIT License
|
7
|
+
|
8
|
+
Copyright (c) 2022-2023, Dylan Jones
|
9
|
+
|
10
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
11
|
+
of this software and associated documentation files (the "Software"), to deal
|
12
|
+
in the Software without restriction, including without limitation the rights
|
13
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
14
|
+
copies of the Software, and to permit persons to whom the Software is
|
15
|
+
furnished to do so, subject to the following conditions:
|
16
|
+
|
17
|
+
The above copyright notice and this permission notice shall be included in all
|
18
|
+
copies or substantial portions of the Software.
|
19
|
+
|
20
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
21
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
22
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
23
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
24
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
25
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
26
|
+
SOFTWARE.
|
27
|
+
|
9
28
|
Project-URL: Source, https://github.com/dylanljones/pyrekordbox
|
10
29
|
Project-URL: Documentation, https://pyrekordbox.readthedocs.io/en/stable/
|
11
30
|
Project-URL: Tracker, https://github.com/dylanljones/pyrekordbox/issues
|
31
|
+
Platform: any
|
12
32
|
Classifier: Development Status :: 3 - Alpha
|
13
33
|
Classifier: Intended Audience :: Developers
|
14
34
|
Classifier: Intended Audience :: Information Technology
|
@@ -30,19 +50,14 @@ License-File: LICENSE
|
|
30
50
|
Requires-Dist: bidict>=0.21.0
|
31
51
|
Requires-Dist: blowfish>=0.6.0
|
32
52
|
Requires-Dist: construct>=2.10.0
|
33
|
-
Requires-Dist: hypothesis>=6.0.0
|
34
53
|
Requires-Dist: numpy>=1.19.0
|
35
54
|
Requires-Dist: packaging
|
36
|
-
Requires-Dist: pytest>=6.2.0
|
37
55
|
Requires-Dist: psutil>=5.9.0
|
38
|
-
Requires-Dist:
|
39
|
-
Requires-Dist: setuptools-scm[toml]>=4
|
40
|
-
Requires-Dist: sqlalchemy~=1.4.0
|
41
|
-
Provides-Extra: build
|
42
|
-
Requires-Dist: wheel>=0.37.0; extra == "build"
|
56
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
43
57
|
Provides-Extra: test
|
58
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "test"
|
59
|
+
Requires-Dist: pytest>=6.2.0; extra == "test"
|
44
60
|
Requires-Dist: pytest-cov; extra == "test"
|
45
|
-
Requires-Dist: wheel>=0.37.0; extra == "test"
|
46
61
|
|
47
62
|
|
48
63
|
<p align="center">
|
@@ -68,7 +83,7 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
68
83
|
- Analysis files (ANLZ)
|
69
84
|
- My-Setting files
|
70
85
|
|
71
|
-
Tested Rekordbox versions: ``5.8.6 | 6.5.3``
|
86
|
+
Tested Rekordbox versions: ``5.8.6 | 6.5.3 | 6.7.7``
|
72
87
|
|
73
88
|
|
74
89
|
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future. |
|
@@ -92,12 +107,12 @@ where `VERSION` is a release, tag or branch name.
|
|
92
107
|
|
93
108
|
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
94
109
|
Pyrekordbox makes no attempt to download/install SQLCipher, as it is a
|
95
|
-
pure Python package - whereas the SQLCipher/
|
110
|
+
pure Python package - whereas the SQLCipher/sqlcipher3 installation is
|
96
111
|
platform-dependent and can not be installed via ``pip``.
|
97
112
|
|
98
113
|
#### Windows
|
99
114
|
|
100
|
-
SQLCipher can be used by building the libary against an amalgamation with [
|
115
|
+
SQLCipher can be used by building the libary against an amalgamation with [sqlcipher3].
|
101
116
|
For a detailed instruction, see [INSTALLATION].
|
102
117
|
|
103
118
|
#### MacOS
|
@@ -108,12 +123,13 @@ For MacOS follow these steps:
|
|
108
123
|
2) Install SQLCipher with `brew install SQLCipher`.
|
109
124
|
3) With the python environment you are using to run pyrekordbox active execute the following:
|
110
125
|
```shell
|
111
|
-
git clone https://github.com/
|
112
|
-
cd
|
126
|
+
git clone https://github.com/coleifer/sqlcipher3
|
127
|
+
cd sqlcipher3
|
113
128
|
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py build
|
114
129
|
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py install
|
115
130
|
```
|
116
131
|
Make sure the `C_INCLUDE` and `LIBRARY_PATH` point to the installed SQLCipher path. It may differ on your machine.
|
132
|
+
If you are having issues installing [sqlcipher3] on M1 Macs please refer to [INSTALLATION].
|
117
133
|
|
118
134
|
|
119
135
|
## 🚀 Quick-Start
|
@@ -184,7 +200,7 @@ So far only a few tables support adding or deleting entries:
|
|
184
200
|
- ``DjmdSongPlaylist``: Songs in a playlist
|
185
201
|
|
186
202
|
Starting from Rekordbox version ``6.6.5`` Pioneer obfuscated the ``app.asar`` file
|
187
|
-
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).
|
188
204
|
If you are using a later version of Rekorbox and have no cached key from a previous
|
189
205
|
version, the database can not be unlocked automatically.
|
190
206
|
The command line interface of ``pyrekordbox`` provides a command for downloading
|
@@ -283,6 +299,8 @@ sync = mysett.get("sync")
|
|
283
299
|
quant = mysett.get("quantize")
|
284
300
|
````
|
285
301
|
|
302
|
+
The `DEVSETTING.DAT` file is still not supported
|
303
|
+
|
286
304
|
|
287
305
|
## 💡 File formats
|
288
306
|
|
@@ -302,6 +320,9 @@ If you encounter an issue or want to contribute to pyrekordbox, please feel free
|
|
302
320
|
`pyrekordbox` and the commit-message style can be found in
|
303
321
|
[CONTRIBUTING].
|
304
322
|
|
323
|
+
For general questions or discussions about Rekordbox, please use [GitHub Discussions][discussions]
|
324
|
+
instead of opening an issue.
|
325
|
+
|
305
326
|
Pyrekordbox is tested on Windows and MacOS, however some features can't be tested in
|
306
327
|
the CI setup since it requires a working Rekordbox installation.
|
307
328
|
|
@@ -353,13 +374,14 @@ the CI setup since it requires a working Rekordbox installation.
|
|
353
374
|
[mysettings-doc]: https://pyrekordbox.readthedocs.io/en/stable/formats/mysetting.html
|
354
375
|
|
355
376
|
[new-issue]: https://github.com/dylanljones/pyrekordbox/issues/new/choose
|
377
|
+
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
356
378
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
357
379
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
358
380
|
[INSTALLATION]: https://github.com/dylanljones/pyrekordbox/blob/master/INSTALLATION.md
|
359
381
|
|
360
382
|
[repo]: https://github.com/dylanljones/pyrekordbox
|
361
383
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
362
|
-
[
|
384
|
+
[sqlcipher3]: https://github.com/coleifer/sqlcipher3
|
363
385
|
[rekordcrate]: https://github.com/Holzhaus/rekordcrate
|
364
386
|
[crate-digger]: https://github.com/Deep-Symmetry/crate-digger
|
365
387
|
[supbox]: https://github.com/gabek/supbox
|
@@ -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,12 +46,12 @@ 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
|
53
53
|
|
54
|
-
SQLCipher can be used by building the libary against an amalgamation with [
|
54
|
+
SQLCipher can be used by building the libary against an amalgamation with [sqlcipher3].
|
55
55
|
For a detailed instruction, see [INSTALLATION].
|
56
56
|
|
57
57
|
#### MacOS
|
@@ -62,12 +62,13 @@ For MacOS follow these steps:
|
|
62
62
|
2) Install SQLCipher with `brew install SQLCipher`.
|
63
63
|
3) With the python environment you are using to run pyrekordbox active execute the following:
|
64
64
|
```shell
|
65
|
-
git clone https://github.com/
|
66
|
-
cd
|
65
|
+
git clone https://github.com/coleifer/sqlcipher3
|
66
|
+
cd sqlcipher3
|
67
67
|
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py build
|
68
68
|
SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_PATH="$SQLCIPHER_PATH"/include LIBRARY_PATH="$SQLCIPHER_PATH"/lib python setup.py install
|
69
69
|
```
|
70
70
|
Make sure the `C_INCLUDE` and `LIBRARY_PATH` point to the installed SQLCipher path. It may differ on your machine.
|
71
|
+
If you are having issues installing [sqlcipher3] on M1 Macs please refer to [INSTALLATION].
|
71
72
|
|
72
73
|
|
73
74
|
## 🚀 Quick-Start
|
@@ -138,7 +139,7 @@ So far only a few tables support adding or deleting entries:
|
|
138
139
|
- ``DjmdSongPlaylist``: Songs in a playlist
|
139
140
|
|
140
141
|
Starting from Rekordbox version ``6.6.5`` Pioneer obfuscated the ``app.asar`` file
|
141
|
-
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).
|
142
143
|
If you are using a later version of Rekorbox and have no cached key from a previous
|
143
144
|
version, the database can not be unlocked automatically.
|
144
145
|
The command line interface of ``pyrekordbox`` provides a command for downloading
|
@@ -237,6 +238,8 @@ sync = mysett.get("sync")
|
|
237
238
|
quant = mysett.get("quantize")
|
238
239
|
````
|
239
240
|
|
241
|
+
The `DEVSETTING.DAT` file is still not supported
|
242
|
+
|
240
243
|
|
241
244
|
## 💡 File formats
|
242
245
|
|
@@ -256,6 +259,9 @@ If you encounter an issue or want to contribute to pyrekordbox, please feel free
|
|
256
259
|
`pyrekordbox` and the commit-message style can be found in
|
257
260
|
[CONTRIBUTING].
|
258
261
|
|
262
|
+
For general questions or discussions about Rekordbox, please use [GitHub Discussions][discussions]
|
263
|
+
instead of opening an issue.
|
264
|
+
|
259
265
|
Pyrekordbox is tested on Windows and MacOS, however some features can't be tested in
|
260
266
|
the CI setup since it requires a working Rekordbox installation.
|
261
267
|
|
@@ -307,13 +313,14 @@ the CI setup since it requires a working Rekordbox installation.
|
|
307
313
|
[mysettings-doc]: https://pyrekordbox.readthedocs.io/en/stable/formats/mysetting.html
|
308
314
|
|
309
315
|
[new-issue]: https://github.com/dylanljones/pyrekordbox/issues/new/choose
|
316
|
+
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
310
317
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
311
318
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
312
319
|
[INSTALLATION]: https://github.com/dylanljones/pyrekordbox/blob/master/INSTALLATION.md
|
313
320
|
|
314
321
|
[repo]: https://github.com/dylanljones/pyrekordbox
|
315
322
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
316
|
-
[
|
323
|
+
[sqlcipher3]: https://github.com/coleifer/sqlcipher3
|
317
324
|
[rekordcrate]: https://github.com/Holzhaus/rekordcrate
|
318
325
|
[crate-digger]: https://github.com/Deep-Symmetry/crate-digger
|
319
326
|
[supbox]: https://github.com/gabek/supbox
|