pyrekordbox 0.2.2__tar.gz → 0.3.0__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.2 → pyrekordbox-0.3.0}/.github/workflows/codeql.yml +25 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.github/workflows/pypi-publish.yml +4 -4
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.github/workflows/tests.yml +2 -5
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.pre-commit-config.yaml +7 -10
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/CHANGELOG.md +41 -1
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/CONTRIBUTING.md +3 -4
- {pyrekordbox-0.2.2/pyrekordbox.egg-info → pyrekordbox-0.3.0}/PKG-INFO +15 -11
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/README.md +12 -8
- pyrekordbox-0.3.0/docs/source/_static/images/x64dbg_rb_key.png +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/index.md +2 -4
- pyrekordbox-0.2.2/INSTALLATION.md → pyrekordbox-0.3.0/docs/source/installation.md +105 -41
- pyrekordbox-0.3.0/docs/source/key.md +104 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/quickstart.md +1 -1
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyproject.toml +22 -25
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/__init__.py +1 -1
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/__main__.py +1 -5
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/_version.py +2 -2
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/anlz/file.py +2 -2
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/config.py +20 -16
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/db6/database.py +60 -27
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/db6/registry.py +7 -1
- pyrekordbox-0.3.0/pyrekordbox/xml.py +8 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0/pyrekordbox.egg-info}/PKG-INFO +15 -11
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox.egg-info/SOURCES.txt +3 -1
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/test_xml.py +1 -1
- pyrekordbox-0.2.2/docs/source/installation.md +0 -3
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.gitignore +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.readthedocs.yaml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/rekordbox/export.pdb +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/export/PIONEER/rekordbox/exportExt.pdb +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/beat_fx_quantize/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/beat_fx_quantize/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_bottom/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_top/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/exponential/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/linear/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/smooth/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/cross_fader_curve/constant/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/cross_fader_curve/fast_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/cross_fader_curve/slow_cut/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/display_brightness/white/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/headphones_mono_split/mono_split/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/headphones_mono_split/stereo/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/headphones_pre_eq/post_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/headphones_pre_eq/pre_eq/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/indicator_brightness/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/indicator_brightness/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/indicator_brightness/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/mic_low_cut/off/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/mic_low_cut/on/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_button_type/toggle/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_button_type/trigger/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/eight/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/eleven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/fifteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/five/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/four/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/fourteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/nine/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/one/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/seven/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/six/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/sixteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/ten/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/thirteen/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/three/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/twelve/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/midi_channel/two/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_level/minus_12db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_level/minus_18db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_level/minus_24db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_level/minus_6db/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_mode/advanced/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/djmmysetting/talk_over_mode/normal/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/memory/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_36db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_42db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_48db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_54db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_60db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_66db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_72db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/auto_cue_level/minus_78db/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/disc_slot_illumination/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/disc_slot_illumination/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/disc_slot_illumination/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/eject_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/eject_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/hotcue_autoload/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/hotcue_autoload/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/hotcue_autoload/rekordbox/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/hotcue_color/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/hotcue_color/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_mode/cdj/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_mode/vinyl/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_ring_brightness/bright/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_ring_brightness/dark/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_ring_brightness/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_ring_indicator/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/jog_ring_indicator/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/chinese_simplified/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/chinese_traditional/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/czech/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/danish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/dutch/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/english/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/french/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/german/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/greek/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/hungarian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/italian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/japanese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/korean/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/portuguese/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/russian/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/spanish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/swedish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/language/turkish/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/lcd_brightness/five/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/lcd_brightness/four/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/lcd_brightness/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/lcd_brightness/three/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/lcd_brightness/two/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/master_tempo/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/master_tempo/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/needle_lock/lock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/needle_lock/unlock/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/on_air_display/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/on_air_display/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/phase_meter/type1/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/phase_meter/type2/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/play_mode/continue_/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/play_mode/single/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize_beat_value/eighth/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize_beat_value/half/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize_beat_value/one/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/quantize_beat_value/quarter/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/slip_flashing/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/slip_flashing/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/sync/off/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/sync/on/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/tempo_range/six/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/tempo_range/sixteen/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/tempo_range/ten/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/tempo_range/wide/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/time_mode/elapsed/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting/time_mode/remain/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/eight/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/half/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixteen/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixtyfour/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/thirtytwo/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/beat_jump_beat_value/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_display_mode/artwork/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_display_mode/auto/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_display_mode/info/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_display_mode/simple/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_lcd_brightness/five/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_lcd_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_lcd_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_lcd_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/jog_lcd_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/pad_button_brightness/four/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/pad_button_brightness/one/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/pad_button_brightness/three/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/pad_button_brightness/two/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch_release/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/waveform/phase_meter/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/waveform/waveform/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/waveform_divisions/phrase/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/mysettings/mysetting2/waveform_divisions/time_scale/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/ExtData.edb +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/datafile.edb +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/database.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 5/datafile.edb +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/DEVSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/DJMMYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/MYSETTING.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/MYSETTING2.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/masterPlaylists3.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/masterPlaylists6.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/003/c9538-33bc-4ca7-b6c7-e63ebf9a96f8/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/104/c82cc-661c-4f30-ab60-51ce1effeeed/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/36d/ad2b4-5d4e-4b94-9a5d-a5bb241aee4b/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/731/0104f-53cb-453e-8b83-e0dfd5cff825/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/c8b/ac74a-bbfc-4fce-8fb8-50aa4e974273/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.2EX +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.DAT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/backup/share/PIONEER/USBANLZ/e35/fa187-3f34-47e2-9880-2b33cb8d1304/ANLZ0000.EXT +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/database.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/masterPlaylists6_template.xml +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/master_locked.db +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/.testdata/rekordbox 6/master_unlocked.db +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/LICENSE +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/Makefile +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/make.bat +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_beat.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_file.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pco2.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pcob.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pcp2.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pcpt.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_ppth.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pqt2.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pqt2_2.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pqtz.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pssi.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pssi_entry.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pvbr.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwav.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv3.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv4.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv5.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv5_entry.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv6.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwv7.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_pwvc.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/images/anlz_tag.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/logos/dark/logo_primary.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/logos/light/logo_primary.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_static/logos/mid/logo_primary.svg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_templates/apidoc/module.rst_t +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_templates/apidoc/package.rst_t +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_templates/apidoc/toc.rst_t +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_templates/autosummary/class.rst +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/_templates/autosummary/module.rst +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/api.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/conf.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/development/changes.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/development/contributing.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/formats/anlz.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/formats/db6.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/formats/mysetting.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/formats/xml.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/requirements.txt +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/anlz.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/configuration.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/db6.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/index.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/mysetting.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/docs/source/tutorial/xml.md +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/anlz/__init__.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/anlz/structs.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/anlz/tags.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/db6/__init__.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/db6/aux_files.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/db6/tables.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/logger.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/mysettings/__init__.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/mysettings/file.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/mysettings/structs.py +0 -0
- /pyrekordbox-0.2.2/pyrekordbox/xml.py → /pyrekordbox-0.3.0/pyrekordbox/rbxml.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox/utils.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox.egg-info/dependency_links.txt +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox.egg-info/not-zip-safe +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox.egg-info/requires.txt +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/pyrekordbox.egg-info/top_level.txt +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/requirements.txt +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/setup.cfg +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/setup.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/__init__.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/test_anlz.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/test_config.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/test_db6.py +0 -0
- {pyrekordbox-0.2.2 → pyrekordbox-0.3.0}/tests/test_mysetting.py +0 -0
@@ -9,8 +9,33 @@ on:
|
|
9
9
|
- cron: "4 11 * * 1"
|
10
10
|
|
11
11
|
jobs:
|
12
|
+
|
13
|
+
code-change:
|
14
|
+
runs-on: ubuntu-latest
|
15
|
+
steps:
|
16
|
+
- id: skip_check
|
17
|
+
uses: fkirc/skip-duplicate-actions@master
|
18
|
+
with:
|
19
|
+
paths_ignore: '[
|
20
|
+
"docs/**",
|
21
|
+
".github/**",
|
22
|
+
".resources/**",
|
23
|
+
"logos/**",
|
24
|
+
"README.md",
|
25
|
+
"CHANGELOG.md",
|
26
|
+
"CONTRIBUTING.md",
|
27
|
+
".pre-commit-config.yaml",
|
28
|
+
".readthedocs.yaml",
|
29
|
+
"pyproject.toml"
|
30
|
+
]'
|
31
|
+
outputs:
|
32
|
+
should_skip: ${{ steps.skip_check.outputs.should_skip }}
|
33
|
+
|
34
|
+
|
12
35
|
analyze:
|
13
36
|
name: Analyze
|
37
|
+
needs: code-change
|
38
|
+
if: ${{ needs.code-change.outputs.should_skip != 'true'}}
|
14
39
|
runs-on: ubuntu-latest
|
15
40
|
permissions:
|
16
41
|
actions: read
|
@@ -48,14 +48,14 @@ jobs:
|
|
48
48
|
|
49
49
|
- name: Publish distribution 📦 to Test PyPI
|
50
50
|
env:
|
51
|
-
TWINE_USERNAME:
|
52
|
-
TWINE_PASSWORD: ${{ secrets.
|
51
|
+
TWINE_USERNAME: __token__
|
52
|
+
TWINE_PASSWORD: ${{ secrets.TEST_PYPI_TOKEN }}
|
53
53
|
run: |
|
54
54
|
twine upload --repository testpypi dist/*
|
55
55
|
|
56
56
|
- name: Publish distribution 📦 to PyPI
|
57
57
|
env:
|
58
|
-
TWINE_USERNAME:
|
59
|
-
TWINE_PASSWORD: ${{ secrets.
|
58
|
+
TWINE_USERNAME: __token__
|
59
|
+
TWINE_PASSWORD: ${{ secrets.PYPI_TOKEN }}
|
60
60
|
run: |
|
61
61
|
twine upload dist/*
|
@@ -43,11 +43,11 @@ jobs:
|
|
43
43
|
strategy:
|
44
44
|
matrix:
|
45
45
|
os: [windows-latest, macos-latest]
|
46
|
-
python-version: ["3.
|
46
|
+
python-version: ["3.8", "3.12"] # check oldest and latest supported version
|
47
47
|
other-os: [true]
|
48
48
|
|
49
49
|
runs-on: ${{ matrix.os }}
|
50
|
-
continue-on-error:
|
50
|
+
continue-on-error: false # don't cancel due to OS specific failures
|
51
51
|
env:
|
52
52
|
OS: ${{ matrix.os }}
|
53
53
|
PYTHON: ${{ matrix.python-version }}
|
@@ -69,9 +69,6 @@ jobs:
|
|
69
69
|
pip install setuptools
|
70
70
|
pip install .[test]
|
71
71
|
|
72
|
-
- name: Get package version
|
73
|
-
run: python setup.py --version
|
74
|
-
|
75
72
|
- name: Run tests
|
76
73
|
run: |
|
77
74
|
pytest tests/ --cov=pyrekordbox --cov-report=xml -v
|
@@ -12,14 +12,11 @@ repos:
|
|
12
12
|
- id: check-toml
|
13
13
|
- id: check-yaml
|
14
14
|
|
15
|
-
- repo: https://github.com/
|
16
|
-
rev:
|
15
|
+
- repo: https://github.com/astral-sh/ruff-pre-commit
|
16
|
+
rev: v0.1.7
|
17
17
|
hooks:
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
hooks:
|
24
|
-
- id: flake8
|
25
|
-
additional_dependencies: [Flake8-pyproject]
|
18
|
+
# Run the linter.
|
19
|
+
- id: ruff
|
20
|
+
args: [ --fix ]
|
21
|
+
# Run the formatter.
|
22
|
+
- id: ruff-format
|
@@ -1,5 +1,43 @@
|
|
1
1
|
# What's New
|
2
2
|
|
3
|
+
<a name="0.3.0"></a>
|
4
|
+
## [0.3.0] - 2023-12-12
|
5
|
+
|
6
|
+
This release fixes bugs and imrpoves error handling.
|
7
|
+
|
8
|
+
### Improvements/Bug Fixes
|
9
|
+
|
10
|
+
- **The `bank` field of PSSI ANLZ tag can also have a value of 0 ([#108](https://github.com/dylanljones/pyrekordbox/issues/108))**
|
11
|
+
This fixes an issue where the XOR mask was applied to un-garbled PSSI tags.
|
12
|
+
- **check if RBv6 db key seems valid ([#105](https://github.com/dylanljones/pyrekordbox/issues/105))**
|
13
|
+
Check the key if it is passed manually to the db handler and raise an exception
|
14
|
+
if it doesn't look valid. Only the first few characters are checked.
|
15
|
+
- **also change `OrgFolderPath` and `FileNameL` in `update_content_path` ([#104](https://github.com/dylanljones/pyrekordbox/issues/104))**
|
16
|
+
There were columns missing in the `update_content_path` method.
|
17
|
+
These changes make the file paths consistent.
|
18
|
+
Thank you [@ben-hearn-sb](https://github.com/ben-hearn-sb) for the help!
|
19
|
+
- **rename the `xml` module to `rbxml` to prevent conflict with builtin.**
|
20
|
+
Note that the old module name `xml` is deprecated and will be removed in version `0.4.0`.
|
21
|
+
|
22
|
+
### Documentation
|
23
|
+
|
24
|
+
- **add Rekordbox6 database key extraction alternatives**
|
25
|
+
|
26
|
+
|
27
|
+
<a name="0.2.3"></a>
|
28
|
+
## [0.2.3] - 2023-11-17
|
29
|
+
|
30
|
+
### Improvements/Bug Fixes
|
31
|
+
|
32
|
+
- **drop Python 3.7 support**
|
33
|
+
Python 3.7 reached its end of lifetime in June 2023.
|
34
|
+
- **raise ImportError if RBv6 db is locked and sqlcipher is not available**
|
35
|
+
Pyrekordbox falls back to `sqlite3` if `sqlcipher3` is not available.
|
36
|
+
This can lead to errors if the RBv6 database is locked and the user does not have
|
37
|
+
`sqlcipher3` installed.
|
38
|
+
- **don't pass deleted RBv6 instance to USN callback**
|
39
|
+
This sometimes raised an `ObjectDeletedError`
|
40
|
+
|
3
41
|
|
4
42
|
<a name="0.2.2"></a>
|
5
43
|
## [0.2.2] - 2023-10-26
|
@@ -466,7 +504,9 @@ This release contains documentation fixes.
|
|
466
504
|
- **add missing djmd tables to `master.db` database documentation**
|
467
505
|
|
468
506
|
|
469
|
-
[Unreleased]: https://github.com/dylanljones/pyrekordbox/compare/0.
|
507
|
+
[Unreleased]: https://github.com/dylanljones/pyrekordbox/compare/0.3.0...HEAD
|
508
|
+
[0.3.0]: https://github.com/dylanljones/pyrekordbox/compare/0.2.3...0.3.0
|
509
|
+
[0.2.3]: https://github.com/dylanljones/pyrekordbox/compare/0.2.2...0.2.3
|
470
510
|
[0.2.2]: https://github.com/dylanljones/pyrekordbox/compare/0.2.1...0.2.2
|
471
511
|
[0.2.1]: https://github.com/dylanljones/pyrekordbox/compare/0.2.0...0.2.1
|
472
512
|
[0.2.0]: https://github.com/dylanljones/pyrekordbox/compare/0.1.8...0.2.0
|
@@ -8,9 +8,9 @@ the CI setup since it requires a working Rekordbox installation.
|
|
8
8
|
|
9
9
|
## Pre-commit Hooks
|
10
10
|
|
11
|
-
We are using the [pre-commit framework] to automatically run
|
12
|
-
|
13
|
-
|
11
|
+
We are using the [pre-commit framework] to automatically run a linter and code formatter
|
12
|
+
at commit time. This ensures that every commit fulfills the basic requirements to be
|
13
|
+
mergeable and follows the coding style of the project.
|
14
14
|
|
15
15
|
The pre-commit hooks can be installed via
|
16
16
|
````sh
|
@@ -88,5 +88,4 @@ Similarly, a Deprecation section should start with "DEPRECATED: " followed by a
|
|
88
88
|
[issue]: https://github.com/dylanljones/pyrekordbox/issues
|
89
89
|
[pulls]: https://github.com/dylanljones/pyrekordbox/pulls
|
90
90
|
[pre-commit framework]: https://pre-commit.com/
|
91
|
-
[Black code formatter]: https://github.com/psf/black
|
92
91
|
[Angular commit message]: https://github.com/angular/angular/blob/master/CONTRIBUTING.md#commit-message-format
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: pyrekordbox
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.0
|
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
|
@@ -38,13 +38,13 @@ Classifier: Operating System :: MacOS
|
|
38
38
|
Classifier: Operating System :: Microsoft :: Windows
|
39
39
|
Classifier: Programming Language :: Python :: 3
|
40
40
|
Classifier: Programming Language :: Python :: 3 :: Only
|
41
|
-
Classifier: Programming Language :: Python :: 3.7
|
42
41
|
Classifier: Programming Language :: Python :: 3.8
|
43
42
|
Classifier: Programming Language :: Python :: 3.9
|
44
43
|
Classifier: Programming Language :: Python :: 3.10
|
45
44
|
Classifier: Programming Language :: Python :: 3.11
|
45
|
+
Classifier: Programming Language :: Python :: 3.12
|
46
46
|
Classifier: Topic :: Multimedia :: Sound/Audio
|
47
|
-
Requires-Python: >=3.
|
47
|
+
Requires-Python: >=3.8
|
48
48
|
Description-Content-Type: text/markdown
|
49
49
|
License-File: LICENSE
|
50
50
|
Requires-Dist: bidict>=0.21.0
|
@@ -70,7 +70,7 @@ Requires-Dist: pytest-cov; extra == "test"
|
|
70
70
|
[![Python][python-badge+]][pypi-link]
|
71
71
|
[![Platform][platform-badge]][pypi-link]
|
72
72
|
[![license: MIT][license-badge]][license-link]
|
73
|
-
[![style:
|
73
|
+
[![style: ruff][ruff-badge]][ruff-link]
|
74
74
|
|
75
75
|
> **Disclaimer**: This project is **not** affiliated with Pioneer Corp. or its related companies
|
76
76
|
in any way and has been written independently! Pyrekordbox is licensed under the
|
@@ -86,8 +86,8 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
86
86
|
Tested Rekordbox versions: ``5.8.6 | 6.5.3 | 6.7.7``
|
87
87
|
|
88
88
|
|
89
|
-
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future.
|
90
|
-
|
89
|
+
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future. Check the [changelog][CHANGELOG] for recent changes! |
|
90
|
+
|----|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
91
91
|
|
92
92
|
|
93
93
|
## 🔧 Installation
|
@@ -113,7 +113,7 @@ platform-dependent and can not be installed via ``pip``.
|
|
113
113
|
#### Windows
|
114
114
|
|
115
115
|
SQLCipher can be used by building the libary against an amalgamation with [sqlcipher3].
|
116
|
-
For a detailed instruction, see [
|
116
|
+
For a detailed instruction, see the [installation guide][installation].
|
117
117
|
|
118
118
|
#### MacOS
|
119
119
|
|
@@ -129,7 +129,8 @@ SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_
|
|
129
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
|
130
130
|
```
|
131
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
|
132
|
+
If you are having issues installing [sqlcipher3] on M1 Macs please refer to the
|
133
|
+
[installation guide][installation].
|
133
134
|
|
134
135
|
|
135
136
|
## 🚀 Quick-Start
|
@@ -224,7 +225,7 @@ between two databases.
|
|
224
225
|
Pyrekordbox can read and write Rekordbox XML databases.
|
225
226
|
|
226
227
|
````python
|
227
|
-
from pyrekordbox.
|
228
|
+
from pyrekordbox.rbxml import RekordboxXml
|
228
229
|
|
229
230
|
xml = RekordboxXml("database.xml")
|
230
231
|
|
@@ -347,17 +348,20 @@ the CI setup since it requires a working Rekordbox installation.
|
|
347
348
|
[tests-badge]: https://img.shields.io/github/actions/workflow/status/dylanljones/pyrekordbox/tests.yml?branch=master&label=tests&logo=github&style=flat
|
348
349
|
[docs-badge]: https://img.shields.io/readthedocs/pyrekordbox/stable?style=flat
|
349
350
|
[python-badge]: https://img.shields.io/pypi/pyversions/pyrekordbox?style=flat
|
350
|
-
[python-badge+]: https://img.shields.io/badge/python-3.
|
351
|
+
[python-badge+]: https://img.shields.io/badge/python-3.8+-blue.svg
|
351
352
|
[platform-badge]: https://img.shields.io/badge/platform-win%20%7C%20osx-blue?style=flat
|
352
353
|
[pypi-badge]: https://img.shields.io/pypi/v/pyrekordbox?style=flat
|
353
354
|
[license-badge]: https://img.shields.io/pypi/l/pyrekordbox?color=lightgrey
|
354
355
|
[black-badge]: https://img.shields.io/badge/code%20style-black-000000?style=flat
|
356
|
+
[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
|
355
357
|
[codecov-badge]: https://codecov.io/gh/dylanljones/pyrekordbox/branch/master/graph/badge.svg?token=5Z2KVGL7N3
|
356
358
|
|
359
|
+
|
357
360
|
[pypi-link]: https://pypi.org/project/pyrekordbox/
|
358
361
|
[license-link]: https://github.com/dylanljones/pyrekordbox/blob/master/LICENSE
|
359
362
|
[tests-link]: https://github.com/dylanljones/pyrekordbox/actions/workflows/tests.yml
|
360
363
|
[black-link]: https://github.com/psf/black
|
364
|
+
[ruff-link]: https://github.com/astral-sh/ruff
|
361
365
|
[lgtm-link]: https://lgtm.com/projects/g/dylanljones/pyrekordbox/context:python
|
362
366
|
[codecov-link]: https://app.codecov.io/gh/dylanljones/pyrekordbox/tree/master
|
363
367
|
[codecov-dev-link]: https://app.codecov.io/gh/dylanljones/pyrekordbox/tree/dev
|
@@ -377,7 +381,7 @@ the CI setup since it requires a working Rekordbox installation.
|
|
377
381
|
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
378
382
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
379
383
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
380
|
-
[
|
384
|
+
[installation]: https://pyrekordbox.readthedocs.io/en/latest/installation.html
|
381
385
|
|
382
386
|
[repo]: https://github.com/dylanljones/pyrekordbox
|
383
387
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
@@ -9,7 +9,7 @@
|
|
9
9
|
[![Python][python-badge+]][pypi-link]
|
10
10
|
[![Platform][platform-badge]][pypi-link]
|
11
11
|
[![license: MIT][license-badge]][license-link]
|
12
|
-
[![style:
|
12
|
+
[![style: ruff][ruff-badge]][ruff-link]
|
13
13
|
|
14
14
|
> **Disclaimer**: This project is **not** affiliated with Pioneer Corp. or its related companies
|
15
15
|
in any way and has been written independently! Pyrekordbox is licensed under the
|
@@ -25,8 +25,8 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
25
25
|
Tested Rekordbox versions: ``5.8.6 | 6.5.3 | 6.7.7``
|
26
26
|
|
27
27
|
|
28
|
-
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future.
|
29
|
-
|
28
|
+
|⚠️| This project is still under development and might contain bugs or have breaking API changes in the future. Check the [changelog][CHANGELOG] for recent changes! |
|
29
|
+
|----|:----------------------------------------------------------------------------------------------------------------------------------------------------------------|
|
30
30
|
|
31
31
|
|
32
32
|
## 🔧 Installation
|
@@ -52,7 +52,7 @@ platform-dependent and can not be installed via ``pip``.
|
|
52
52
|
#### Windows
|
53
53
|
|
54
54
|
SQLCipher can be used by building the libary against an amalgamation with [sqlcipher3].
|
55
|
-
For a detailed instruction, see [
|
55
|
+
For a detailed instruction, see the [installation guide][installation].
|
56
56
|
|
57
57
|
#### MacOS
|
58
58
|
|
@@ -68,7 +68,8 @@ SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_
|
|
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
|
71
|
+
If you are having issues installing [sqlcipher3] on M1 Macs please refer to the
|
72
|
+
[installation guide][installation].
|
72
73
|
|
73
74
|
|
74
75
|
## 🚀 Quick-Start
|
@@ -163,7 +164,7 @@ between two databases.
|
|
163
164
|
Pyrekordbox can read and write Rekordbox XML databases.
|
164
165
|
|
165
166
|
````python
|
166
|
-
from pyrekordbox.
|
167
|
+
from pyrekordbox.rbxml import RekordboxXml
|
167
168
|
|
168
169
|
xml = RekordboxXml("database.xml")
|
169
170
|
|
@@ -286,17 +287,20 @@ the CI setup since it requires a working Rekordbox installation.
|
|
286
287
|
[tests-badge]: https://img.shields.io/github/actions/workflow/status/dylanljones/pyrekordbox/tests.yml?branch=master&label=tests&logo=github&style=flat
|
287
288
|
[docs-badge]: https://img.shields.io/readthedocs/pyrekordbox/stable?style=flat
|
288
289
|
[python-badge]: https://img.shields.io/pypi/pyversions/pyrekordbox?style=flat
|
289
|
-
[python-badge+]: https://img.shields.io/badge/python-3.
|
290
|
+
[python-badge+]: https://img.shields.io/badge/python-3.8+-blue.svg
|
290
291
|
[platform-badge]: https://img.shields.io/badge/platform-win%20%7C%20osx-blue?style=flat
|
291
292
|
[pypi-badge]: https://img.shields.io/pypi/v/pyrekordbox?style=flat
|
292
293
|
[license-badge]: https://img.shields.io/pypi/l/pyrekordbox?color=lightgrey
|
293
294
|
[black-badge]: https://img.shields.io/badge/code%20style-black-000000?style=flat
|
295
|
+
[ruff-badge]: https://img.shields.io/endpoint?url=https://raw.githubusercontent.com/astral-sh/ruff/main/assets/badge/v2.json
|
294
296
|
[codecov-badge]: https://codecov.io/gh/dylanljones/pyrekordbox/branch/master/graph/badge.svg?token=5Z2KVGL7N3
|
295
297
|
|
298
|
+
|
296
299
|
[pypi-link]: https://pypi.org/project/pyrekordbox/
|
297
300
|
[license-link]: https://github.com/dylanljones/pyrekordbox/blob/master/LICENSE
|
298
301
|
[tests-link]: https://github.com/dylanljones/pyrekordbox/actions/workflows/tests.yml
|
299
302
|
[black-link]: https://github.com/psf/black
|
303
|
+
[ruff-link]: https://github.com/astral-sh/ruff
|
300
304
|
[lgtm-link]: https://lgtm.com/projects/g/dylanljones/pyrekordbox/context:python
|
301
305
|
[codecov-link]: https://app.codecov.io/gh/dylanljones/pyrekordbox/tree/master
|
302
306
|
[codecov-dev-link]: https://app.codecov.io/gh/dylanljones/pyrekordbox/tree/dev
|
@@ -316,7 +320,7 @@ the CI setup since it requires a working Rekordbox installation.
|
|
316
320
|
[discussions]: https://github.com/dylanljones/pyrekordbox/discussions
|
317
321
|
[CONTRIBUTING]: https://github.com/dylanljones/pyrekordbox/blob/master/CONTRIBUTING.md
|
318
322
|
[CHANGELOG]: https://github.com/dylanljones/pyrekordbox/blob/master/CHANGELOG.md
|
319
|
-
[
|
323
|
+
[installation]: https://pyrekordbox.readthedocs.io/en/latest/installation.html
|
320
324
|
|
321
325
|
[repo]: https://github.com/dylanljones/pyrekordbox
|
322
326
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
Binary file
|
@@ -11,7 +11,6 @@ sphinx-quickstart on Thu Apr 7 15:06:50 2022.
|
|
11
11
|
[![Python][python-badge+]][pypi-link]
|
12
12
|
[![Platform][platform-badge]][pypi-link]
|
13
13
|
[![license: MIT][license-badge]][license-link]
|
14
|
-
[![style: black][black-badge]][black-link]
|
15
14
|
|
16
15
|
```{admonition} Disclaimer
|
17
16
|
This project is not affiliated with Pioneer Corp. or its related companies
|
@@ -45,6 +44,7 @@ caption: User Guide
|
|
45
44
|
|
46
45
|
quickstart
|
47
46
|
installation
|
47
|
+
key
|
48
48
|
tutorial/index
|
49
49
|
api
|
50
50
|
```
|
@@ -90,16 +90,14 @@ PyPI <https://pypi.org/project/pyrekordbox/>
|
|
90
90
|
[tests-badge]: https://img.shields.io/github/actions/workflow/status/dylanljones/pyrekordbox/tests.yml?branch=master&label=tests&logo=github&style=flat
|
91
91
|
[codecov-badge]: https://codecov.io/gh/dylanljones/pyrekordbox/branch/master/graph/badge.svg?token=5Z2KVGL7N3
|
92
92
|
[python-badge]: https://img.shields.io/pypi/pyversions/pyrekordbox?style=flat
|
93
|
-
[python-badge+]: https://img.shields.io/badge/python-3.
|
93
|
+
[python-badge+]: https://img.shields.io/badge/python-3.8+-blue.svg
|
94
94
|
[platform-badge]: https://img.shields.io/badge/platform-win%20%7C%20osx-blue?style=flat
|
95
95
|
[pypi-badge]: https://img.shields.io/pypi/v/pyrekordbox?style=flat
|
96
96
|
[license-badge]: https://img.shields.io/pypi/l/pyrekordbox?color=lightgrey
|
97
|
-
[black-badge]: https://img.shields.io/badge/code%20style-black-000000?style=flat
|
98
97
|
|
99
98
|
[pypi-link]: https://pypi.org/project/pyrekordbox/
|
100
99
|
[license-link]: https://github.com/dylanljones/pyrekordbox/blob/master/LICENSE
|
101
100
|
[tests-link]: https://github.com/dylanljones/pyrekordbox/actions/workflows/tests.yml
|
102
|
-
[black-link]: https://github.com/psf/black
|
103
101
|
[codecov-link]: https://app.codecov.io/gh/dylanljones/pyrekordbox/tree/master
|
104
102
|
|
105
103
|
[issue]: https://github.com/dylanljones/pyrekordbox/issues/64
|
@@ -16,15 +16,24 @@ where `VERSION` is a branch, tag or release. The project can also be cloned/fork
|
|
16
16
|
and installed via
|
17
17
|
|
18
18
|
```sh
|
19
|
-
$
|
19
|
+
$ pip install .
|
20
20
|
```
|
21
21
|
|
22
|
+
|
22
23
|
## Installing SQLCipher
|
23
24
|
|
24
25
|
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
26
|
+
Pyrekordbox makes no attempt to download/install SQLCipher, as it is a
|
27
|
+
pure Python package - whereas the SQLCipher/sqlcipher3 installation is
|
28
|
+
platform-dependent and can not be installed easily via ``pip``.
|
29
|
+
|
30
|
+
[sqlcipher3] can either be built with the system [SQLCipher][sqlcipher] or built against
|
31
|
+
a statically linked amalgamation of the SQLite3 source code.
|
25
32
|
|
26
33
|
### Windows
|
27
34
|
|
35
|
+
#### SQLCipher Amalagamation
|
36
|
+
|
28
37
|
The easiest method to install SQLCipher on Windows is to build [sqlcipher3]
|
29
38
|
against an amalgamation of the SQLite3 source code.
|
30
39
|
|
@@ -49,13 +58,14 @@ against an amalgamation of the SQLite3 source code.
|
|
49
58
|
- 32-bit: ``C:/Program Files (x86)/openssl-Win32/bin/openssl.cfg``
|
50
59
|
- 64-bit: ``C:/Program Files/openssl-Win64/bin/openssl.cfg``
|
51
60
|
|
61
|
+
```{note}
|
52
62
|
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
63
|
If you are using a newer version, you can set an environment variable
|
54
64
|
``OPENSSL_LIBNAME`` to the name of the library, e.g. ``libcrypto.lib``.
|
55
65
|
Alternatively, you can modify the ``setup.py`` script (see step 8 below).
|
56
66
|
|
57
67
|
You might have to restart Windows for the changes to take effect.
|
58
|
-
|
68
|
+
```
|
59
69
|
|
60
70
|
4. **Copy the openssl folder to the Microsoft Visual Studio 14 VC include directory**
|
61
71
|
|
@@ -63,22 +73,30 @@ against an amalgamation of the SQLite3 source code.
|
|
63
73
|
- 32-bit: `C:/Program Files (x86)/OpenSSL-Win32/include/openssl`
|
64
74
|
- 64-bit: `C:/Program Files/OpenSSL-Win64/include/openssl`
|
65
75
|
|
66
|
-
The VC include directory
|
67
|
-
Visual Studio installation directory:
|
68
|
-
|
76
|
+
The VC include directory can be found in the
|
77
|
+
Visual Studio 14 installation directory:
|
78
|
+
|
79
|
+
> C:/Program Files (x86)/Microsoft Visual Studio 14.0/VC/include
|
80
|
+
|
81
|
+
In newer versions it might aso be in
|
82
|
+
|
83
|
+
> C:/Program Files/Microsoft Visual Studio/2022/Community/VC/Tools/MSVC/[version]/include
|
69
84
|
|
70
85
|
Confirm the following path exists `.../include/openssl/aes.h`
|
71
86
|
|
72
87
|
|
73
88
|
5. **Download / compile the SQLCipher 3 amalgamation files**
|
74
89
|
|
75
|
-
Pre-built SQLCipher
|
76
|
-
|
90
|
+
Pre-built SQLCipher amalgamation files can be downloaded from [this repo][amalgamation]:
|
91
|
+
````shell
|
92
|
+
git clone https://github.com/geekbrother/sqlcipher-amalgamation
|
93
|
+
````
|
94
|
+
To compile the amalgamation files on your own, follow [this tutorial](http://www.jerryrw.com/howtocompile.php).
|
77
95
|
|
78
96
|
|
79
97
|
6. **Clone [sqlcipher3] into any directory**
|
80
98
|
|
81
|
-
````
|
99
|
+
````shell
|
82
100
|
git clone https://github.com/coleifer/sqlcipher3
|
83
101
|
````
|
84
102
|
|
@@ -87,6 +105,10 @@ against an amalgamation of the SQLite3 source code.
|
|
87
105
|
|
88
106
|
Copy files ``sqlite3.c`` and ``sqlite3.h`` from the amalgamation directory from step 5
|
89
107
|
to the root of the ``sqlcipher3`` directory from step 6.
|
108
|
+
````shell
|
109
|
+
Copy-Item -Path 'sqlcipher-amalgamation/src/sqlite3.c' -Destination "sqlcipher3/"
|
110
|
+
Copy-Item -Path 'sqlcipher-amalgamation/src/sqlite3.h' -Destination "sqlcipher3/"
|
111
|
+
````
|
90
112
|
|
91
113
|
|
92
114
|
8. **Modify the ``sqlcipher3/setup.py`` script (optional)**
|
@@ -102,42 +124,36 @@ against an amalgamation of the SQLite3 source code.
|
|
102
124
|
````
|
103
125
|
|
104
126
|
|
105
|
-
9. **Build using the amalgamation**
|
127
|
+
9. **Build using the amalgamation and install**
|
106
128
|
|
107
129
|
``cd`` into the ``sqlcipher3`` directory and run
|
108
|
-
````
|
130
|
+
````shell
|
109
131
|
python setup.py build_static build
|
110
|
-
````
|
111
|
-
|
112
|
-
|
113
|
-
10. **Install ``sqlcipher3``**
|
114
|
-
|
115
|
-
````commandline
|
116
132
|
python setup.py install
|
117
133
|
````
|
118
134
|
|
135
|
+
|
119
136
|
You now should have a working ``sqlcipher3`` installation! The directory of the
|
120
137
|
cloned ``sqlcipher3`` repo can be deleted after installing the package.
|
121
138
|
|
122
|
-
Steps 5-
|
123
|
-
|
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
|
-
````
|
139
|
+
Steps 5-9 can be automated using the CLI of ``pyrekordbox``:
|
140
|
+
|
141
|
+
> python3 -m pyrekordbox install-sqlcipher --help
|
142
|
+
usage: pyrekordbox install-sqlcipher [-h] [-t TMPDIR] [-l CRYPTOLIB] [-q] [-b]
|
134
143
|
|
135
|
-
|
144
|
+
-t TMPDIR, --tmpdir TMPDIR
|
145
|
+
Path for storing temporary data (default: '.tmp')
|
146
|
+
-l CRYPTOLIB, --cryptolib CRYPTOLIB
|
147
|
+
The name of the OpenSSl crypto libary (default: 'libcrypto.lib')
|
148
|
+
-b, --buildonly Don't install sqlcipher3, only build the amalgamation
|
149
|
+
|
150
|
+
|
151
|
+
##### Troubleshooting
|
136
152
|
|
137
153
|
- **Microsoft Visual C++ error**
|
138
154
|
|
139
155
|
If you are getting an error like
|
140
|
-
````
|
156
|
+
````shell
|
141
157
|
error: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools"``
|
142
158
|
````
|
143
159
|
and have Visual Studio installed, you might not have all the necessary C/C++ components.
|
@@ -145,11 +161,11 @@ usage: pyrekordbox install-sqlcipher [-h] [-t TMPDIR] [-l CRYPTOLIB] [-q] [-b]
|
|
145
161
|
- **LINK error**
|
146
162
|
|
147
163
|
If you are getting an error like
|
148
|
-
````
|
164
|
+
````shell
|
149
165
|
LINK : fatal error LNK1158: cannot run 'rc.exe'
|
150
166
|
````
|
151
167
|
or
|
152
|
-
````
|
168
|
+
````shell
|
153
169
|
LINK : fatal error LNK1327: failure during running rc.exe
|
154
170
|
````
|
155
171
|
make sure all the necessary C/C++ components are installed and that you have selected
|
@@ -159,7 +175,10 @@ usage: pyrekordbox install-sqlcipher [-h] [-t TMPDIR] [-l CRYPTOLIB] [-q] [-b]
|
|
159
175
|
|
160
176
|
### MacOS
|
161
177
|
|
162
|
-
|
178
|
+
|
179
|
+
#### System SQLCipher
|
180
|
+
|
181
|
+
For building [sqlcipher3] against the system SQLCipher installation on MacOS follow these steps:
|
163
182
|
|
164
183
|
1) Install [Homebrew](https://brew.sh) if you do not have it on your machine.
|
165
184
|
2) Install SQLCipher with `brew install SQLCipher`.
|
@@ -172,15 +191,65 @@ SQLCIPHER_PATH=$(brew info sqlcipher | awk 'NR==4 {print $1; exit}'); C_INCLUDE_
|
|
172
191
|
```
|
173
192
|
Make sure the `C_INCLUDE` and `LIBRARY_PATH` point to the installed SQLCipher path. It may differ on your machine.
|
174
193
|
|
194
|
+
````{note}
|
175
195
|
If you are having issues building sqlcipher on M1 Macs you might have to add some symlinks:
|
176
196
|
```shell
|
177
197
|
ln -s /opt/homebrew/lib/libsqlcipher.a /usr/local/lib/libsqlcipher.a
|
178
198
|
ln -s /opt/homebrew/include/sqlcipher /usr/local/include/sqlcipher
|
179
199
|
```
|
180
|
-
|
200
|
+
````
|
201
|
+
#### SQLCipher Amalagamation
|
202
|
+
|
203
|
+
You can also build [sqlcipher3] against an amalgamation on MacOS.
|
204
|
+
|
205
|
+
1. **Download / compile the SQLCipher amalgamation files**
|
206
|
+
|
207
|
+
Pre-built SQLCipher amalgamation files can be downloaded from [this repo][amalgamation]:
|
208
|
+
````shell
|
209
|
+
git clone https://github.com/geekbrother/sqlcipher-amalgamation
|
210
|
+
````
|
211
|
+
You can also build the amalagamtion files on your own.
|
181
212
|
|
182
213
|
|
183
|
-
|
214
|
+
2. **Clone [sqlcipher3] into any directory**
|
215
|
+
|
216
|
+
````shell
|
217
|
+
git clone https://github.com/coleifer/sqlcipher3
|
218
|
+
````
|
219
|
+
|
220
|
+
|
221
|
+
3. **Copy amalgamation files to the `sqlcipher3` directory**
|
222
|
+
|
223
|
+
Copy files ``sqlite3.c`` and ``sqlite3.h`` from the amalgamation directory from step 1
|
224
|
+
to the root of the ``sqlcipher3`` directory from step 2.
|
225
|
+
````shell
|
226
|
+
cp sqlcipher-amalgamation/src/sqlite3.[ch] sqlcipher3/
|
227
|
+
````
|
228
|
+
|
229
|
+
4. **Build using the amalgamation and install**
|
230
|
+
|
231
|
+
``cd`` into the ``sqlcipher3`` directory and run
|
232
|
+
````shell
|
233
|
+
python setup.py build_static build
|
234
|
+
python setup.py install
|
235
|
+
````
|
236
|
+
|
237
|
+
The steps above can be automated using the CLI of ``pyrekordbox``
|
238
|
+
|
239
|
+
> python3 -m pyrekordbox install-sqlcipher --help
|
240
|
+
usage: pyrekordbox install-sqlcipher [-h] [-t TMPDIR] [-l CRYPTOLIB] [-q] [-b]
|
241
|
+
|
242
|
+
-t TMPDIR, --tmpdir TMPDIR
|
243
|
+
Path for storing temporary data (default: '.tmp')
|
244
|
+
-b, --buildonly Don't install sqlcipher3, only build the amalgamation
|
245
|
+
|
246
|
+
|
247
|
+
```{note}
|
248
|
+
The `CRYPTOLIB` argument is only used on Windows
|
249
|
+
```
|
250
|
+
|
251
|
+
|
252
|
+
### Using SQLCipher
|
184
253
|
|
185
254
|
After the installation SQLCipher-databases can be unlocked via the `sqlcipher3` package:
|
186
255
|
````python
|
@@ -192,16 +261,11 @@ c.execute("PRAGMA key='password'")
|
|
192
261
|
````
|
193
262
|
|
194
263
|
|
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
264
|
|
202
265
|
[VS]: https://visualstudio.microsoft.com/de/vs/community/
|
203
266
|
[OpenSSL]: https://slproweb.com/products/Win32OpenSSL.html
|
204
267
|
[sqlcipher3]: https://github.com/coleifer/sqlcipher3
|
268
|
+
[amalgamation]: https://github.com/geekbrother/sqlcipher-amalgamation
|
205
269
|
[Pypi]: https://pypi.org/project/pyrekordbox/
|
206
270
|
[GitHub]: https://github.com/dylanljones/pyrekordbox
|
207
271
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|