pyrekordbox 0.2.2__py3-none-any.whl → 0.3.0__py3-none-any.whl
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.
- docs/source/_static/images/x64dbg_rb_key.png +0 -0
- docs/source/index.md +2 -4
- docs/source/installation.md +269 -1
- docs/source/key.md +104 -0
- docs/source/quickstart.md +1 -1
- pyrekordbox/__init__.py +1 -1
- pyrekordbox/__main__.py +1 -5
- pyrekordbox/_version.py +2 -2
- pyrekordbox/anlz/file.py +2 -2
- pyrekordbox/config.py +20 -16
- pyrekordbox/db6/database.py +60 -27
- pyrekordbox/db6/registry.py +7 -1
- pyrekordbox/rbxml.py +1294 -0
- pyrekordbox/xml.py +3 -1289
- {pyrekordbox-0.2.2.dist-info → pyrekordbox-0.3.0.dist-info}/METADATA +15 -11
- {pyrekordbox-0.2.2.dist-info → pyrekordbox-0.3.0.dist-info}/RECORD +20 -17
- {pyrekordbox-0.2.2.dist-info → pyrekordbox-0.3.0.dist-info}/WHEEL +1 -1
- tests/test_xml.py +1 -1
- {pyrekordbox-0.2.2.dist-info → pyrekordbox-0.3.0.dist-info}/LICENSE +0 -0
- {pyrekordbox-0.2.2.dist-info → pyrekordbox-0.3.0.dist-info}/top_level.txt +0 -0
@@ -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/
|
@@ -2,9 +2,10 @@ docs/Makefile,sha256=4zv3TVkTACm6JBaKgTES3ZI9cETXgM6ULbZkXZP1as8,638
|
|
2
2
|
docs/make.bat,sha256=s8EuuVXNRnn4xmWLWTpk3Z01aqJSJT8ymrmK6ux0zbc,769
|
3
3
|
docs/source/api.md,sha256=IKKMeQ2wFSS_ippOWJ63ELtMjfkNe27KjWcFFEdUXnE,276
|
4
4
|
docs/source/conf.py,sha256=lPfAJtd0VY7uEDmHrEfHvQzNJg6WN_1seM9pCFc2e6E,6244
|
5
|
-
docs/source/index.md,sha256=
|
6
|
-
docs/source/installation.md,sha256=
|
7
|
-
docs/source/
|
5
|
+
docs/source/index.md,sha256=c67TMpDCaiqFe44n0pXWL__utlLAz7xqfDVjyWbxx3M,2660
|
6
|
+
docs/source/installation.md,sha256=WmX6gjuPimA6uXhS7wZzKKG1AQCHpfB0nPm3g8_ur6A,9234
|
7
|
+
docs/source/key.md,sha256=TmuJRr1Z7hUTwNhQgIZQIkywU7eRIwCAMLA9Vj-7dqI,4096
|
8
|
+
docs/source/quickstart.md,sha256=kKau0nQHc0RByrVq0pgaDKWTUX_l4290ruqY08mXTCg,6301
|
8
9
|
docs/source/requirements.txt,sha256=7YYc-tO0BQcBVUa4GvM1r1G5Ma9gkwGZpNbAKlJL97s,117
|
9
10
|
docs/source/_static/images/anlz_beat.svg,sha256=cVooi17HFw3mOT39cFNB05tr-cZwbK_Hjmho6eBJNX8,2924
|
10
11
|
docs/source/_static/images/anlz_file.svg,sha256=E74hjyTFJRy6tCxyTPfsYoM0GmOKoY1To_eHatpPEjs,12320
|
@@ -28,6 +29,7 @@ docs/source/_static/images/anlz_pwv6.svg,sha256=J2KvE_bI-NTFSpFp7QsKSsgbWGCyuUAu
|
|
28
29
|
docs/source/_static/images/anlz_pwv7.svg,sha256=n5NsTErvfsCw-otWdVXn12lM0tHyh-zQDZsZtQOJf0U,8173
|
29
30
|
docs/source/_static/images/anlz_pwvc.svg,sha256=wO_tsxRDVnAbptbSZYK1z7YOH-0vNUqXDB9Udj4ungA,7128
|
30
31
|
docs/source/_static/images/anlz_tag.svg,sha256=owPTtrTRDYCkaSg32_UJ-MTZp3K6WlkRQdJHTzdtxqs,6188
|
32
|
+
docs/source/_static/images/x64dbg_rb_key.png,sha256=gtwUA6lbuFRbLQQACnBQ-aO8p5Ex-7E41dS0cW6XyAU,280011
|
31
33
|
docs/source/_static/logos/dark/logo_primary.svg,sha256=pH4Q28u9JaCA4dVrKB-NDy00PNw2EhDwz7fIYUzezvk,3079
|
32
34
|
docs/source/_static/logos/light/logo_primary.svg,sha256=MUbYjowOcWdtoHVnK7pyV9xcTRdm7gS4whw94pVMGSI,3080
|
33
35
|
docs/source/_static/logos/mid/logo_primary.svg,sha256=utCWWbXXW5auRRposMMaMO9t_AflsN13rZGo3_Pg2WE,3078
|
@@ -48,21 +50,22 @@ docs/source/tutorial/db6.md,sha256=wzfHAxSQ5rmYSDs6S0WheDwjkdFYsY3JxM0jGmXJcVU,6
|
|
48
50
|
docs/source/tutorial/index.md,sha256=zjx5uXESYzHIyeqtL4XjhZUDPOpNiutZ3gkUOeG8R9w,318
|
49
51
|
docs/source/tutorial/mysetting.md,sha256=su-WMvEd3DrFF32RDfQBm3TlAUgK5PRPT1n_77BYnvY,3659
|
50
52
|
docs/source/tutorial/xml.md,sha256=x_rFvsVzZtUV0upEkPWkgrmr3B-FYjZKWvBuJBLFAu0,6414
|
51
|
-
pyrekordbox/__init__.py,sha256=
|
52
|
-
pyrekordbox/__main__.py,sha256=
|
53
|
-
pyrekordbox/_version.py,sha256=
|
54
|
-
pyrekordbox/config.py,sha256=
|
53
|
+
pyrekordbox/__init__.py,sha256=ODYrBuSF14PNKNAxsbi5_VR-ja2P3ySK0WwM8l7MFCk,647
|
54
|
+
pyrekordbox/__main__.py,sha256=R1lus_-hBG4Uf6SRuzXXFwaE-dT9Uma_lzMOGgsdDLs,5975
|
55
|
+
pyrekordbox/_version.py,sha256=Jk2iAU7m-7Vx9XV1TtdD9ZoJraIncDq_4_Wd-qtUotg,411
|
56
|
+
pyrekordbox/config.py,sha256=4FBzpdGtKFChzP0bmuuhukFGzi88cCRN_vGgJe60KUk,21865
|
55
57
|
pyrekordbox/logger.py,sha256=qCY_3L_3WIMAvNmVKvh7oshGlWrd0T5aIW1bNCIu3Lo,521
|
58
|
+
pyrekordbox/rbxml.py,sha256=0qsKc8SQa54URwWGt6oHTOHBiAQU2S8MbSxDbzKUB7A,38369
|
56
59
|
pyrekordbox/utils.py,sha256=sT1xt-rM94Dir-S0OSSqKbquf9kdFbzZvBu3-7q0QDM,4361
|
57
|
-
pyrekordbox/xml.py,sha256=
|
60
|
+
pyrekordbox/xml.py,sha256=7wFkMyWL4AQLINvxVxkQxlruG9c7R-gkxdP7xXFOkWU,241
|
58
61
|
pyrekordbox/anlz/__init__.py,sha256=OSpyl3pmmnt3mG905J9qvNnYchsgrIfathw0QXoOhjo,3156
|
59
|
-
pyrekordbox/anlz/file.py,sha256=
|
62
|
+
pyrekordbox/anlz/file.py,sha256=r2FppO6efPzKfCfz6foX9G2aBu8gkKXMrjIm9fua3_M,6949
|
60
63
|
pyrekordbox/anlz/structs.py,sha256=Lt4fkb3SAE8w146eWeWGnpgRoP6jhLMWrSMoMwPjG04,7925
|
61
64
|
pyrekordbox/anlz/tags.py,sha256=uqneBP9CstYy7a4IpeEC9A5tfI59DQm0ik7yFXk_dNo,14094
|
62
65
|
pyrekordbox/db6/__init__.py,sha256=5XbfEIZuribNXIHMn9M4qw91cKHouH82PPJbmODhdgo,849
|
63
66
|
pyrekordbox/db6/aux_files.py,sha256=t0SfMCXBHjlCSfgRfpw1RTj0cmV0QY07xSLepjQqMnY,7591
|
64
|
-
pyrekordbox/db6/database.py,sha256=
|
65
|
-
pyrekordbox/db6/registry.py,sha256=
|
67
|
+
pyrekordbox/db6/database.py,sha256=COscVnKJZN47kDdwNz35M93fb9v_T58rpbTwr6YWtpI,75416
|
68
|
+
pyrekordbox/db6/registry.py,sha256=L4X49HqKtvyD_c4Ad3HR7aM5bj468MgD3Yj6WUE0ri8,9724
|
66
69
|
pyrekordbox/db6/tables.py,sha256=5ijJyO0OERbj1Usc__2QLRc7lPZ6FYluOXbajaEqzqk,65949
|
67
70
|
pyrekordbox/mysettings/__init__.py,sha256=rMS6Kknf1-X3PXF_TUxm8xui0H1Ap3R7G_9mqlnQUAM,705
|
68
71
|
pyrekordbox/mysettings/file.py,sha256=dQEsdBivpverXCssyVNUeQyUXIooNrOGIIiPLwi_6T4,12669
|
@@ -72,9 +75,9 @@ tests/test_anlz.py,sha256=hZAW5GFEJpU8UmmHYLuU5OZlApGrWZyPAR79KtaR0cw,5782
|
|
72
75
|
tests/test_config.py,sha256=wYp4wHRhIk2grhGXhk4z9umrhOWhVvTOm2mHydzLEs8,6157
|
73
76
|
tests/test_db6.py,sha256=6GUH_B1UAYfnJtjTK20cdCjP6hz_kDRR4KklvsnuAXg,37488
|
74
77
|
tests/test_mysetting.py,sha256=te6B_BErGc6ThgBpAl45n0Nd0hWJcm-X9WTw14bR6MA,5781
|
75
|
-
tests/test_xml.py,sha256=
|
76
|
-
pyrekordbox-0.
|
77
|
-
pyrekordbox-0.
|
78
|
-
pyrekordbox-0.
|
79
|
-
pyrekordbox-0.
|
80
|
-
pyrekordbox-0.
|
78
|
+
tests/test_xml.py,sha256=SMRML85D24AMpgqBASK1rd-5UdacTlyUVWZGpOoRp40,16854
|
79
|
+
pyrekordbox-0.3.0.dist-info/LICENSE,sha256=Au8sngdQ79q5JsZXZJVU13j46VDxFbPwC4x6sSz8Jes,1074
|
80
|
+
pyrekordbox-0.3.0.dist-info/METADATA,sha256=emVZMIftUCg7I2-3xbgaNRrNMAbsXkKTltSASbypYGg,16987
|
81
|
+
pyrekordbox-0.3.0.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92
|
82
|
+
pyrekordbox-0.3.0.dist-info/top_level.txt,sha256=Cv8QDfcJ7y8fYUm0Q8D5GoiGxaqb7qt8Z5ntVbj1cLk,23
|
83
|
+
pyrekordbox-0.3.0.dist-info/RECORD,,
|
tests/test_xml.py
CHANGED
@@ -5,7 +5,7 @@
|
|
5
5
|
import os
|
6
6
|
import pytest
|
7
7
|
from pyrekordbox import RekordboxXml
|
8
|
-
from pyrekordbox.
|
8
|
+
from pyrekordbox.rbxml import Tempo, PositionMark, XmlDuplicateError
|
9
9
|
|
10
10
|
TEST_ROOT = os.path.join(os.path.dirname(os.path.dirname(__file__)), ".testdata")
|
11
11
|
XML5 = os.path.join(TEST_ROOT, "rekordbox 5", "database.xml")
|
File without changes
|
File without changes
|