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.
Files changed (334) hide show
  1. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/workflows/pypi-publish.yml +9 -7
  2. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/workflows/tests.yml +2 -1
  3. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.pre-commit-config.yaml +3 -3
  4. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.readthedocs.yaml +1 -0
  5. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/CHANGELOG.md +64 -1
  6. pyrekordbox-0.2.2/INSTALLATION.md +207 -0
  7. {pyrekordbox-0.2.0/pyrekordbox.egg-info → pyrekordbox-0.2.2}/PKG-INFO +42 -20
  8. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/README.md +14 -7
  9. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/anlz.md +178 -7
  10. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/db6.md +54 -28
  11. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/index.md +2 -6
  12. pyrekordbox-0.2.2/docs/source/installation.md +3 -0
  13. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/quickstart.md +68 -45
  14. pyrekordbox-0.2.2/pyproject.toml +144 -0
  15. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/__init__.py +1 -1
  16. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/__main__.py +16 -37
  17. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/_version.py +2 -2
  18. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/file.py +39 -0
  19. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/structs.py +3 -5
  20. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/config.py +71 -27
  21. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/database.py +290 -61
  22. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/registry.py +24 -0
  23. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/tables.py +501 -340
  24. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/file.py +0 -25
  25. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/utils.py +1 -1
  26. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2/pyrekordbox.egg-info}/PKG-INFO +42 -20
  27. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/SOURCES.txt +1 -1
  28. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/requires.txt +3 -9
  29. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/top_level.txt +2 -0
  30. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/requirements.txt +1 -1
  31. pyrekordbox-0.2.2/setup.cfg +4 -0
  32. pyrekordbox-0.2.2/tests/test_config.py +175 -0
  33. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_db6.py +95 -0
  34. pyrekordbox-0.2.0/INSTALLATION.md +0 -173
  35. pyrekordbox-0.2.0/docs/source/installation.md +0 -177
  36. pyrekordbox-0.2.0/pyproject.toml +0 -30
  37. pyrekordbox-0.2.0/setup.cfg +0 -114
  38. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/bug_report.md +0 -0
  39. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/config.yaml +0 -0
  40. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/ISSUE_TEMPLATE/feature_request.md +0 -0
  41. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.github/workflows/codeql.yml +0 -0
  42. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.gitignore +0 -0
  43. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DEVSETTING.DAT +0 -0
  44. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/DJMMYSETTING.DAT +0 -0
  45. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING.DAT +0 -0
  46. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/MYSETTING2.DAT +0 -0
  47. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.2EX +0 -0
  48. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.DAT +0 -0
  49. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P016/0000875E/ANLZ0000.EXT +0 -0
  50. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.2EX +0 -0
  51. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.DAT +0 -0
  52. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P017/00009B77/ANLZ0000.EXT +0 -0
  53. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.2EX +0 -0
  54. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.DAT +0 -0
  55. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P019/00020AA9/ANLZ0000.EXT +0 -0
  56. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.2EX +0 -0
  57. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.DAT +0 -0
  58. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P021/00006D2B/ANLZ0000.EXT +0 -0
  59. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.2EX +0 -0
  60. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.DAT +0 -0
  61. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P043/00011517/ANLZ0000.EXT +0 -0
  62. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.2EX +0 -0
  63. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.DAT +0 -0
  64. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/USBANLZ/P053/0001D21F/ANLZ0000.EXT +0 -0
  65. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/export.pdb +0 -0
  66. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/export/PIONEER/rekordbox/exportExt.pdb +0 -0
  67. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/DEVSETTING.DAT +0 -0
  68. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/DJMMYSETTING.DAT +0 -0
  69. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING.DAT +0 -0
  70. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/MYSETTING2.DAT +0 -0
  71. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/off/DJMMYSETTING.DAT +0 -0
  72. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/beat_fx_quantize/on/DJMMYSETTING.DAT +0 -0
  73. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/linear/DJMMYSETTING.DAT +0 -0
  74. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_bottom/DJMMYSETTING.DAT +0 -0
  75. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve/steep_top/DJMMYSETTING.DAT +0 -0
  76. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/exponential/DJMMYSETTING.DAT +0 -0
  77. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/linear/DJMMYSETTING.DAT +0 -0
  78. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/channel_fader_curve_long/smooth/DJMMYSETTING.DAT +0 -0
  79. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/constant/DJMMYSETTING.DAT +0 -0
  80. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/fast_cut/DJMMYSETTING.DAT +0 -0
  81. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/cross_fader_curve/slow_cut/DJMMYSETTING.DAT +0 -0
  82. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/five/DJMMYSETTING.DAT +0 -0
  83. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/four/DJMMYSETTING.DAT +0 -0
  84. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/one/DJMMYSETTING.DAT +0 -0
  85. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/three/DJMMYSETTING.DAT +0 -0
  86. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/two/DJMMYSETTING.DAT +0 -0
  87. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/display_brightness/white/DJMMYSETTING.DAT +0 -0
  88. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/mono_split/DJMMYSETTING.DAT +0 -0
  89. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_mono_split/stereo/DJMMYSETTING.DAT +0 -0
  90. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/post_eq/DJMMYSETTING.DAT +0 -0
  91. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/headphones_pre_eq/pre_eq/DJMMYSETTING.DAT +0 -0
  92. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/one/DJMMYSETTING.DAT +0 -0
  93. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/three/DJMMYSETTING.DAT +0 -0
  94. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/indicator_brightness/two/DJMMYSETTING.DAT +0 -0
  95. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/off/DJMMYSETTING.DAT +0 -0
  96. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/mic_low_cut/on/DJMMYSETTING.DAT +0 -0
  97. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/toggle/DJMMYSETTING.DAT +0 -0
  98. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_button_type/trigger/DJMMYSETTING.DAT +0 -0
  99. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eight/DJMMYSETTING.DAT +0 -0
  100. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/eleven/DJMMYSETTING.DAT +0 -0
  101. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fifteen/DJMMYSETTING.DAT +0 -0
  102. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/five/DJMMYSETTING.DAT +0 -0
  103. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/four/DJMMYSETTING.DAT +0 -0
  104. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/fourteen/DJMMYSETTING.DAT +0 -0
  105. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/nine/DJMMYSETTING.DAT +0 -0
  106. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/one/DJMMYSETTING.DAT +0 -0
  107. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/seven/DJMMYSETTING.DAT +0 -0
  108. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/six/DJMMYSETTING.DAT +0 -0
  109. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/sixteen/DJMMYSETTING.DAT +0 -0
  110. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/ten/DJMMYSETTING.DAT +0 -0
  111. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/thirteen/DJMMYSETTING.DAT +0 -0
  112. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/three/DJMMYSETTING.DAT +0 -0
  113. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/twelve/DJMMYSETTING.DAT +0 -0
  114. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/midi_channel/two/DJMMYSETTING.DAT +0 -0
  115. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_12db/DJMMYSETTING.DAT +0 -0
  116. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_18db/DJMMYSETTING.DAT +0 -0
  117. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_24db/DJMMYSETTING.DAT +0 -0
  118. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_level/minus_6db/DJMMYSETTING.DAT +0 -0
  119. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/advanced/DJMMYSETTING.DAT +0 -0
  120. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/djmmysetting/talk_over_mode/normal/DJMMYSETTING.DAT +0 -0
  121. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/off/MYSETTING.DAT +0 -0
  122. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue/on/MYSETTING.DAT +0 -0
  123. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/memory/MYSETTING.DAT +0 -0
  124. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_36db/MYSETTING.DAT +0 -0
  125. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_42db/MYSETTING.DAT +0 -0
  126. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_48db/MYSETTING.DAT +0 -0
  127. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_54db/MYSETTING.DAT +0 -0
  128. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_60db/MYSETTING.DAT +0 -0
  129. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_66db/MYSETTING.DAT +0 -0
  130. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_72db/MYSETTING.DAT +0 -0
  131. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/auto_cue_level/minus_78db/MYSETTING.DAT +0 -0
  132. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/bright/MYSETTING.DAT +0 -0
  133. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/dark/MYSETTING.DAT +0 -0
  134. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/disc_slot_illumination/off/MYSETTING.DAT +0 -0
  135. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/lock/MYSETTING.DAT +0 -0
  136. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/eject_lock/unlock/MYSETTING.DAT +0 -0
  137. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/off/MYSETTING.DAT +0 -0
  138. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/on/MYSETTING.DAT +0 -0
  139. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_autoload/rekordbox/MYSETTING.DAT +0 -0
  140. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/off/MYSETTING.DAT +0 -0
  141. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/hotcue_color/on/MYSETTING.DAT +0 -0
  142. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/cdj/MYSETTING.DAT +0 -0
  143. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_mode/vinyl/MYSETTING.DAT +0 -0
  144. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/bright/MYSETTING.DAT +0 -0
  145. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/dark/MYSETTING.DAT +0 -0
  146. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_brightness/off/MYSETTING.DAT +0 -0
  147. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/off/MYSETTING.DAT +0 -0
  148. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/jog_ring_indicator/on/MYSETTING.DAT +0 -0
  149. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_simplified/MYSETTING.DAT +0 -0
  150. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/chinese_traditional/MYSETTING.DAT +0 -0
  151. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/czech/MYSETTING.DAT +0 -0
  152. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/danish/MYSETTING.DAT +0 -0
  153. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/dutch/MYSETTING.DAT +0 -0
  154. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/english/MYSETTING.DAT +0 -0
  155. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/french/MYSETTING.DAT +0 -0
  156. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/german/MYSETTING.DAT +0 -0
  157. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/greek/MYSETTING.DAT +0 -0
  158. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/hungarian/MYSETTING.DAT +0 -0
  159. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/italian/MYSETTING.DAT +0 -0
  160. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/japanese/MYSETTING.DAT +0 -0
  161. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/korean/MYSETTING.DAT +0 -0
  162. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/portuguese/MYSETTING.DAT +0 -0
  163. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/russian/MYSETTING.DAT +0 -0
  164. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/spanish/MYSETTING.DAT +0 -0
  165. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/swedish/MYSETTING.DAT +0 -0
  166. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/language/turkish/MYSETTING.DAT +0 -0
  167. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/five/MYSETTING.DAT +0 -0
  168. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/four/MYSETTING.DAT +0 -0
  169. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/one/MYSETTING.DAT +0 -0
  170. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/three/MYSETTING.DAT +0 -0
  171. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/lcd_brightness/two/MYSETTING.DAT +0 -0
  172. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/off/MYSETTING.DAT +0 -0
  173. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/master_tempo/on/MYSETTING.DAT +0 -0
  174. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/lock/MYSETTING.DAT +0 -0
  175. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/needle_lock/unlock/MYSETTING.DAT +0 -0
  176. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/off/MYSETTING.DAT +0 -0
  177. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/on_air_display/on/MYSETTING.DAT +0 -0
  178. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type1/MYSETTING.DAT +0 -0
  179. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/phase_meter/type2/MYSETTING.DAT +0 -0
  180. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/continue_/MYSETTING.DAT +0 -0
  181. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/play_mode/single/MYSETTING.DAT +0 -0
  182. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/off/MYSETTING.DAT +0 -0
  183. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize/on/MYSETTING.DAT +0 -0
  184. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/eighth/MYSETTING.DAT +0 -0
  185. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/half/MYSETTING.DAT +0 -0
  186. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/one/MYSETTING.DAT +0 -0
  187. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/quantize_beat_value/quarter/MYSETTING.DAT +0 -0
  188. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/off/MYSETTING.DAT +0 -0
  189. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/slip_flashing/on/MYSETTING.DAT +0 -0
  190. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/off/MYSETTING.DAT +0 -0
  191. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/sync/on/MYSETTING.DAT +0 -0
  192. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/six/MYSETTING.DAT +0 -0
  193. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/sixteen/MYSETTING.DAT +0 -0
  194. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/ten/MYSETTING.DAT +0 -0
  195. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/tempo_range/wide/MYSETTING.DAT +0 -0
  196. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/elapsed/MYSETTING.DAT +0 -0
  197. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting/time_mode/remain/MYSETTING.DAT +0 -0
  198. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/eight/MYSETTING2.DAT +0 -0
  199. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/four/MYSETTING2.DAT +0 -0
  200. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/half/MYSETTING2.DAT +0 -0
  201. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/one/MYSETTING2.DAT +0 -0
  202. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixteen/MYSETTING2.DAT +0 -0
  203. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/sixtyfour/MYSETTING2.DAT +0 -0
  204. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/thirtytwo/MYSETTING2.DAT +0 -0
  205. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/beat_jump_beat_value/two/MYSETTING2.DAT +0 -0
  206. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/artwork/MYSETTING2.DAT +0 -0
  207. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/auto/MYSETTING2.DAT +0 -0
  208. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/info/MYSETTING2.DAT +0 -0
  209. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_display_mode/simple/MYSETTING2.DAT +0 -0
  210. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/five/MYSETTING2.DAT +0 -0
  211. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/four/MYSETTING2.DAT +0 -0
  212. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/one/MYSETTING2.DAT +0 -0
  213. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/three/MYSETTING2.DAT +0 -0
  214. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/jog_lcd_brightness/two/MYSETTING2.DAT +0 -0
  215. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/four/MYSETTING2.DAT +0 -0
  216. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/one/MYSETTING2.DAT +0 -0
  217. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/three/MYSETTING2.DAT +0 -0
  218. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/pad_button_brightness/two/MYSETTING2.DAT +0 -0
  219. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/release/MYSETTING2.DAT +0 -0
  220. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch/MYSETTING2.DAT +0 -0
  221. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/vinyl_speed_adjust/touch_release/MYSETTING2.DAT +0 -0
  222. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/phase_meter/MYSETTING2.DAT +0 -0
  223. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform/waveform/MYSETTING2.DAT +0 -0
  224. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/phrase/MYSETTING2.DAT +0 -0
  225. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/mysettings/mysetting2/waveform_divisions/time_scale/MYSETTING2.DAT +0 -0
  226. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/DEVSETTING.DAT +0 -0
  227. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/ExtData.edb +0 -0
  228. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/MYSETTING.DAT +0 -0
  229. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.DAT +0 -0
  230. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P002/00009C2E/ANLZ0000.EXT +0 -0
  231. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.DAT +0 -0
  232. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P02B/00023587/ANLZ0000.EXT +0 -0
  233. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.DAT +0 -0
  234. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P035/00027763/ANLZ0000.EXT +0 -0
  235. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.DAT +0 -0
  236. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P038/0002AAA0/ANLZ0000.EXT +0 -0
  237. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.DAT +0 -0
  238. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P068/00012CA2/ANLZ0000.EXT +0 -0
  239. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.DAT +0 -0
  240. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/PIONEER/USBANLZ/P076/00013B6E/ANLZ0000.EXT +0 -0
  241. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/datafile.edb +0 -0
  242. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/backup/masterPlaylists3.xml +0 -0
  243. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/database.xml +0 -0
  244. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 5/datafile.edb +0 -0
  245. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DEVSETTING.DAT +0 -0
  246. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/DJMMYSETTING.DAT +0 -0
  247. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING.DAT +0 -0
  248. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/MYSETTING2.DAT +0 -0
  249. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists3.xml +0 -0
  250. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/backup/masterPlaylists6.xml +0 -0
  251. {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
  252. {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
  253. {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
  254. {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
  255. {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
  256. {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
  257. {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
  258. {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
  259. {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
  260. {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
  261. {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
  262. {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
  263. {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
  264. {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
  265. {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
  266. {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
  267. {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
  268. {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
  269. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/database.xml +0 -0
  270. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/masterPlaylists6_template.xml +0 -0
  271. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_locked.db +0 -0
  272. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/.testdata/rekordbox 6/master_unlocked.db +0 -0
  273. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/CONTRIBUTING.md +0 -0
  274. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/LICENSE +0 -0
  275. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/Makefile +0 -0
  276. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/make.bat +0 -0
  277. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_beat.svg +0 -0
  278. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_file.svg +0 -0
  279. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pco2.svg +0 -0
  280. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcob.svg +0 -0
  281. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcp2.svg +0 -0
  282. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pcpt.svg +0 -0
  283. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_ppth.svg +0 -0
  284. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2.svg +0 -0
  285. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqt2_2.svg +0 -0
  286. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pqtz.svg +0 -0
  287. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi.svg +0 -0
  288. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pssi_entry.svg +0 -0
  289. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pvbr.svg +0 -0
  290. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwav.svg +0 -0
  291. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv3.svg +0 -0
  292. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv4.svg +0 -0
  293. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5.svg +0 -0
  294. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv5_entry.svg +0 -0
  295. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv6.svg +0 -0
  296. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwv7.svg +0 -0
  297. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_pwvc.svg +0 -0
  298. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/images/anlz_tag.svg +0 -0
  299. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/dark/logo_primary.svg +0 -0
  300. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/light/logo_primary.svg +0 -0
  301. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_static/logos/mid/logo_primary.svg +0 -0
  302. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/module.rst_t +0 -0
  303. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/package.rst_t +0 -0
  304. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/apidoc/toc.rst_t +0 -0
  305. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/class.rst +0 -0
  306. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/_templates/autosummary/module.rst +0 -0
  307. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/api.md +0 -0
  308. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/conf.py +0 -0
  309. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/development/changes.md +0 -0
  310. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/development/contributing.md +0 -0
  311. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/mysetting.md +0 -0
  312. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/formats/xml.md +0 -0
  313. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/requirements.txt +0 -0
  314. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/anlz.md +0 -0
  315. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/configuration.md +0 -0
  316. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/db6.md +0 -0
  317. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/index.md +1 -1
  318. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/mysetting.md +0 -0
  319. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/docs/source/tutorial/xml.md +0 -0
  320. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/__init__.py +0 -0
  321. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/anlz/tags.py +0 -0
  322. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/__init__.py +0 -0
  323. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/db6/aux_files.py +0 -0
  324. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/logger.py +0 -0
  325. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/__init__.py +0 -0
  326. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/mysettings/structs.py +0 -0
  327. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox/xml.py +0 -0
  328. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/dependency_links.txt +0 -0
  329. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/pyrekordbox.egg-info/not-zip-safe +0 -0
  330. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/setup.py +0 -0
  331. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/__init__.py +0 -0
  332. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_anlz.py +0 -0
  333. {pyrekordbox-0.2.0 → pyrekordbox-0.2.2}/tests/test_mysetting.py +0 -0
  334. {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.9"
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 twine
43
- pip install .[build]
42
+ pip install --upgrade build
43
+ pip install --upgrade twine
44
44
 
45
- - name: Build and publish distribution 📦 to Test PyPI
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: Build and publish distribution 📦 to PyPI
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.11"] # check oldest and latest supported version
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.4.0
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.9.1
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
- args: [--config, setup.cfg]
25
+ additional_dependencies: [Flake8-pyproject]
@@ -10,6 +10,7 @@ build:
10
10
 
11
11
  sphinx:
12
12
  builder: html
13
+ configuration: docs/source/conf.py
13
14
 
14
15
  python:
15
16
  install:
@@ -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.0...HEAD
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.0
3
+ Version: 0.2.2
4
4
  Summary: Inofficial Python package for interacting with the library of Pioneers Rekordbox DJ software.
5
- Home-page: https://github.com/dylanljones/pyrekordbox
6
- Author: Dylan Jones
7
- Author-email: dylanljones94@gmail.com
8
- License: MIT
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: setuptools>=60.0.0
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/pysqlcipher3 installation is
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 [pysqlcipher3].
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/rigglemania/pysqlcipher3
112
- cd pysqlcipher3
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 issue](https://github.com/dylanljones/pyrekordbox/issues/64) for more details).
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
- [pysqlcipher3]: https://github.com/rigglemania/pysqlcipher3
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/pysqlcipher3 installation is
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 [pysqlcipher3].
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/rigglemania/pysqlcipher3
66
- cd pysqlcipher3
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 issue](https://github.com/dylanljones/pyrekordbox/issues/64) for more details).
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
- [pysqlcipher3]: https://github.com/rigglemania/pysqlcipher3
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