pyrekordbox 0.3.2__py3-none-any.whl → 0.4.1__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.
- pyrekordbox/__init__.py +8 -8
- pyrekordbox/__main__.py +3 -2
- pyrekordbox/_version.py +9 -4
- pyrekordbox/anlz/__init__.py +3 -2
- pyrekordbox/anlz/file.py +4 -2
- pyrekordbox/anlz/tags.py +8 -16
- pyrekordbox/config.py +116 -47
- pyrekordbox/db6/__init__.py +2 -2
- pyrekordbox/db6/aux_files.py +3 -2
- pyrekordbox/db6/database.py +130 -177
- pyrekordbox/db6/registry.py +1 -0
- pyrekordbox/db6/smartlist.py +9 -11
- pyrekordbox/db6/tables.py +112 -132
- pyrekordbox/logger.py +0 -1
- pyrekordbox/mysettings/__init__.py +5 -4
- pyrekordbox/mysettings/file.py +3 -1
- pyrekordbox/rbxml.py +8 -12
- pyrekordbox/utils.py +4 -3
- {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.1.dist-info}/METADATA +35 -48
- pyrekordbox-0.4.1.dist-info/RECORD +25 -0
- {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.1.dist-info}/WHEEL +1 -1
- {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.1.dist-info}/top_level.txt +0 -2
- docs/Makefile +0 -20
- docs/make.bat +0 -35
- docs/source/_static/images/anlz_beat.svg +0 -53
- docs/source/_static/images/anlz_file.svg +0 -204
- docs/source/_static/images/anlz_pco2.svg +0 -138
- docs/source/_static/images/anlz_pcob.svg +0 -148
- docs/source/_static/images/anlz_pcp2.svg +0 -398
- docs/source/_static/images/anlz_pcpt.svg +0 -263
- docs/source/_static/images/anlz_ppth.svg +0 -123
- docs/source/_static/images/anlz_pqt2.svg +0 -324
- docs/source/_static/images/anlz_pqt2_2.svg +0 -253
- docs/source/_static/images/anlz_pqtz.svg +0 -140
- docs/source/_static/images/anlz_pssi.svg +0 -192
- docs/source/_static/images/anlz_pssi_entry.svg +0 -191
- docs/source/_static/images/anlz_pvbr.svg +0 -125
- docs/source/_static/images/anlz_pwav.svg +0 -130
- docs/source/_static/images/anlz_pwv3.svg +0 -139
- docs/source/_static/images/anlz_pwv4.svg +0 -139
- docs/source/_static/images/anlz_pwv5.svg +0 -139
- docs/source/_static/images/anlz_pwv5_entry.svg +0 -100
- docs/source/_static/images/anlz_pwv6.svg +0 -130
- docs/source/_static/images/anlz_pwv7.svg +0 -139
- docs/source/_static/images/anlz_pwvc.svg +0 -125
- docs/source/_static/images/anlz_tag.svg +0 -110
- docs/source/_static/images/x64dbg_rb_key.png +0 -0
- docs/source/_static/logos/dark/logo_primary.svg +0 -75
- docs/source/_static/logos/light/logo_primary.svg +0 -75
- docs/source/_static/logos/mid/logo_primary.svg +0 -75
- docs/source/_templates/apidoc/module.rst_t +0 -8
- docs/source/_templates/apidoc/package.rst_t +0 -57
- docs/source/_templates/apidoc/toc.rst_t +0 -7
- docs/source/_templates/autosummary/class.rst +0 -32
- docs/source/_templates/autosummary/module.rst +0 -55
- docs/source/api.md +0 -18
- docs/source/conf.py +0 -178
- docs/source/development/changes.md +0 -3
- docs/source/development/contributing.md +0 -3
- docs/source/formats/anlz.md +0 -634
- docs/source/formats/db6.md +0 -1233
- docs/source/formats/mysetting.md +0 -392
- docs/source/formats/xml.md +0 -376
- docs/source/index.md +0 -103
- docs/source/installation.md +0 -271
- docs/source/key.md +0 -103
- docs/source/quickstart.md +0 -189
- docs/source/requirements.txt +0 -7
- docs/source/tutorial/anlz.md +0 -7
- docs/source/tutorial/configuration.md +0 -66
- docs/source/tutorial/db6.md +0 -178
- docs/source/tutorial/index.md +0 -20
- docs/source/tutorial/mysetting.md +0 -124
- docs/source/tutorial/xml.md +0 -140
- pyrekordbox/xml.py +0 -8
- pyrekordbox-0.3.2.dist-info/RECORD +0 -84
- tests/__init__.py +0 -3
- tests/test_anlz.py +0 -206
- tests/test_config.py +0 -175
- tests/test_db6.py +0 -1193
- tests/test_mysetting.py +0 -203
- tests/test_xml.py +0 -629
- {pyrekordbox-0.3.2.dist-info → pyrekordbox-0.4.1.dist-info/licenses}/LICENSE +0 -0
@@ -1,6 +1,6 @@
|
|
1
|
-
Metadata-Version: 2.
|
1
|
+
Metadata-Version: 2.4
|
2
2
|
Name: pyrekordbox
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.4.1
|
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
|
@@ -47,19 +47,21 @@ Classifier: Topic :: Multimedia :: Sound/Audio
|
|
47
47
|
Requires-Python: >=3.8
|
48
48
|
Description-Content-Type: text/markdown
|
49
49
|
License-File: LICENSE
|
50
|
-
Requires-Dist: bidict
|
51
|
-
Requires-Dist: blowfish
|
52
|
-
Requires-Dist: construct
|
53
|
-
Requires-Dist: numpy
|
50
|
+
Requires-Dist: bidict>=0.21.0
|
51
|
+
Requires-Dist: blowfish>=0.6.0
|
52
|
+
Requires-Dist: construct>=2.10.0
|
53
|
+
Requires-Dist: numpy>=1.19.0
|
54
54
|
Requires-Dist: packaging
|
55
|
-
Requires-Dist: psutil
|
56
|
-
Requires-Dist: sqlalchemy
|
55
|
+
Requires-Dist: psutil>=5.9.0
|
56
|
+
Requires-Dist: sqlalchemy>=2.0.0
|
57
|
+
Requires-Dist: sqlcipher3-wheels
|
57
58
|
Requires-Dist: frida-tools
|
58
59
|
Requires-Dist: python-dateutil
|
59
60
|
Provides-Extra: test
|
60
|
-
Requires-Dist: hypothesis
|
61
|
-
Requires-Dist: pytest
|
62
|
-
Requires-Dist: pytest-cov
|
61
|
+
Requires-Dist: hypothesis>=6.0.0; extra == "test"
|
62
|
+
Requires-Dist: pytest>=6.2.0; extra == "test"
|
63
|
+
Requires-Dist: pytest-cov; extra == "test"
|
64
|
+
Dynamic: license-file
|
63
65
|
|
64
66
|
|
65
67
|
<p align="center">
|
@@ -85,11 +87,11 @@ Pioneers Rekordbox DJ Software. It currently supports
|
|
85
87
|
- Analysis files (ANLZ)
|
86
88
|
- My-Setting files
|
87
89
|
|
88
|
-
Tested Rekordbox versions: ``5.8.6 | 6.
|
90
|
+
Tested Rekordbox versions: ``5.8.6 | 6.7.7 | 7.0.9``
|
89
91
|
|
90
|
-
|
91
|
-
|
92
|
-
|
92
|
+
> [!WARNING]
|
93
|
+
> This project is still under development and might contain bugs or have breaking API changes in the future.
|
94
|
+
> Check the [changelog][CHANGELOG] for recent changes!
|
93
95
|
|
94
96
|
|
95
97
|
## 🔧 Installation
|
@@ -107,40 +109,20 @@ where `VERSION` is a release, tag or branch name.
|
|
107
109
|
|
108
110
|
### Dependencies
|
109
111
|
|
110
|
-
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
111
|
-
Pyrekordbox makes no attempt to download/install SQLCipher, as it is a
|
112
|
-
pure Python package - whereas the SQLCipher/sqlcipher3 installation is
|
113
|
-
platform-dependent and can not be installed via ``pip``.
|
114
|
-
|
115
|
-
#### Windows
|
116
|
-
|
117
|
-
SQLCipher can be used by building the libary against an amalgamation with [sqlcipher3].
|
118
|
-
For a detailed instruction, see the [installation guide][installation].
|
119
|
-
|
120
|
-
#### MacOS
|
121
112
|
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
2) Install SQLCipher with `brew install SQLCipher`.
|
126
|
-
3) With the python environment you are using to run pyrekordbox active execute the following:
|
127
|
-
```shell
|
128
|
-
git clone https://github.com/coleifer/sqlcipher3
|
129
|
-
cd sqlcipher3
|
130
|
-
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
|
131
|
-
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
|
132
|
-
```
|
133
|
-
Make sure the `C_INCLUDE` and `LIBRARY_PATH` point to the installed SQLCipher path. It may differ on your machine.
|
134
|
-
If you are having issues installing [sqlcipher3] on M1 Macs please refer to the
|
135
|
-
[installation guide][installation].
|
113
|
+
Unlocking the new Rekordbox 6 `master.db` database file requires [SQLCipher][sqlcipher].
|
114
|
+
Pyrekordbox tries to install pre-built wheels with included sqlcipher binaries via the [sqlcipher3-wheels] package.
|
115
|
+
If this fails, it can be installed manually following the [installation guide][installation].
|
136
116
|
|
137
117
|
|
138
118
|
## 🚀 Quick-Start
|
139
119
|
|
140
120
|
[Read the full documentation on ReadTheDocs!][documentation]
|
141
121
|
|
142
|
-
|
143
|
-
|
122
|
+
> [!CAUTION]
|
123
|
+
> Please make sure to back up your Rekordbox collection before making changes with pyrekordbox
|
124
|
+
> or developing/testing new features.
|
125
|
+
> The backup dialog can be found under "File" > "Library" > "Backup Library"
|
144
126
|
|
145
127
|
|
146
128
|
### Configuration
|
@@ -166,10 +148,10 @@ Alternatively the two paths can be specified in a configuration file under the s
|
|
166
148
|
pyrekordbox.cfg and pyrekordbox.yaml.
|
167
149
|
|
168
150
|
|
169
|
-
### Rekordbox 6 database
|
151
|
+
### Rekordbox 6/7 database
|
170
152
|
|
171
|
-
Rekordbox 6
|
172
|
-
Unfortunatly, the
|
153
|
+
Rekordbox 6 and 7 use a SQLite database for storing the collection content.
|
154
|
+
Unfortunatly, the `master.db` SQLite database is encrypted using
|
173
155
|
[SQLCipher][sqlcipher], which means it can't be used without the encryption key.
|
174
156
|
However, since your data is stored and used locally, the key must be present on the
|
175
157
|
machine running Rekordbox.
|
@@ -195,10 +177,15 @@ can be changed via the corresponding property of the object:
|
|
195
177
|
````python
|
196
178
|
content = db.get_content()[0]
|
197
179
|
content.Title = "New Title"
|
180
|
+
db.commit()
|
198
181
|
````
|
199
|
-
|
200
|
-
|
182
|
+
|
183
|
+
> [!NOTE]
|
184
|
+
> Some fields are stored as references to other tables, for example the artist of a track.
|
185
|
+
> Check the [documentation][db6-doc] of the corresponding object for more information.
|
186
|
+
|
201
187
|
So far only a few tables support adding or deleting entries:
|
188
|
+
- ``DjmdContent``: Tracks
|
202
189
|
- ``DjmdPlaylist``: Playlists/Playlist Folders
|
203
190
|
- ``DjmdSongPlaylist``: Songs in a playlist
|
204
191
|
- ``DjmdAlbum``: Albums
|
@@ -388,7 +375,7 @@ the CI setup since it requires a working Rekordbox installation.
|
|
388
375
|
|
389
376
|
[repo]: https://github.com/dylanljones/pyrekordbox
|
390
377
|
[sqlcipher]: https://www.zetetic.net/sqlcipher/open-source/
|
391
|
-
[sqlcipher3]: https://github.com/
|
378
|
+
[sqlcipher3-wheels]: https://github.com/laggykiller/sqlcipher3
|
392
379
|
[rekordcrate]: https://github.com/Holzhaus/rekordcrate
|
393
380
|
[crate-digger]: https://github.com/Deep-Symmetry/crate-digger
|
394
381
|
[supbox]: https://github.com/gabek/supbox
|
@@ -0,0 +1,25 @@
|
|
1
|
+
pyrekordbox/__init__.py,sha256=hvg2dB7qhgGB6SmcRg8AION6mTGdlsThdHhsDZ9WYfs,622
|
2
|
+
pyrekordbox/__main__.py,sha256=BtyDwVSGyoURY9Cy004vRL5Tgkwt4F7eXX_GD_vVYNQ,5976
|
3
|
+
pyrekordbox/_version.py,sha256=yF2DwGUoQKNnLhAbpZX8kCQKjw77EZzhRk7_OTftets,511
|
4
|
+
pyrekordbox/config.py,sha256=TTrL2bOo9DDKSW2yys8axaLB2GHhhD8VL7vq4dJxi1A,28309
|
5
|
+
pyrekordbox/logger.py,sha256=dq1BtXBGavuAjuc45mvjF6mOWaeZqZFzo2aBOJdJ0Ik,483
|
6
|
+
pyrekordbox/rbxml.py,sha256=UqATygpuOVGlSYj0nzcHSmDjTeQ9EL5AVLhAxS523F4,38340
|
7
|
+
pyrekordbox/utils.py,sha256=hkYIgG5U4rzl2tjN9ESzLnf8OysEFybRQgmr6J7xq-k,4363
|
8
|
+
pyrekordbox/anlz/__init__.py,sha256=SEVY0oPX9ohCVViUbsoOLTrBrFewTh-61qJxwXgAJKg,3155
|
9
|
+
pyrekordbox/anlz/file.py,sha256=F6axHmprnp0j3pZkqmmp5iiJBUpqtWiAhSzlAJp2H6Y,6951
|
10
|
+
pyrekordbox/anlz/structs.py,sha256=Lt4fkb3SAE8w146eWeWGnpgRoP6jhLMWrSMoMwPjG04,7925
|
11
|
+
pyrekordbox/anlz/tags.py,sha256=nlPBKyRB8Z9J69bX2K8ZPQk_g1tMazKeVf2ViAqMX-c,13947
|
12
|
+
pyrekordbox/db6/__init__.py,sha256=TZX_BPGZIkc4zSTULIc8yd_bf91MAezGtZevKNh3kZ0,856
|
13
|
+
pyrekordbox/db6/aux_files.py,sha256=MehdQSc4iryiHvH8RfE9_9xMnD5qjRRDhTo0o0KRLw0,7592
|
14
|
+
pyrekordbox/db6/database.py,sha256=2FTwVZOx8pSLLRr9ZV_95TUUtCfPo3CSLKYyudBN8-o,80678
|
15
|
+
pyrekordbox/db6/registry.py,sha256=zYq_B7INM97de7vUTxqmA4N_P53loDkBkYdzdoeSnvY,9725
|
16
|
+
pyrekordbox/db6/smartlist.py,sha256=GG6jE0BHMtx0RHgiVRpWYuL-Ex5edTNSLSDQNiCGzK0,12170
|
17
|
+
pyrekordbox/db6/tables.py,sha256=EST6wvsJjlwmVB8JWBLMKbW3Mskk5qAo-xBqB09Q-Hg,68479
|
18
|
+
pyrekordbox/mysettings/__init__.py,sha256=6iLTQ1KIjuoq8Zt3thmkjqJSxrRVIi7BrQpxNcsQK04,706
|
19
|
+
pyrekordbox/mysettings/file.py,sha256=JBfVe3jsmah_mGJjyC20_EqJZyJ7ftcOcCkRDKcWgv0,12671
|
20
|
+
pyrekordbox/mysettings/structs.py,sha256=5Y1F3qTmsP1fRB39_BEHpQVxKx2DO9BytEuJUG_RNcY,8472
|
21
|
+
pyrekordbox-0.4.1.dist-info/licenses/LICENSE,sha256=VwG9ZgC2UZnI0gTezGz1qkcAZ7sknBUQ1M62Z2nht54,1074
|
22
|
+
pyrekordbox-0.4.1.dist-info/METADATA,sha256=q8KLPyfFte6I8cpdZai6LN8Kck8LI1E4rNZs947nnSY,15480
|
23
|
+
pyrekordbox-0.4.1.dist-info/WHEEL,sha256=pxyMxgL8-pra_rKaQ4drOZAegBVuX-G_4nRHjjgWbmo,91
|
24
|
+
pyrekordbox-0.4.1.dist-info/top_level.txt,sha256=bUHkyxIHZDgSB6zhYnF1o4Yf1EQlTGGIkVRq9uEtsa4,12
|
25
|
+
pyrekordbox-0.4.1.dist-info/RECORD,,
|
docs/Makefile
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
# Minimal makefile for Sphinx documentation
|
2
|
-
#
|
3
|
-
|
4
|
-
# You can set these variables from the command line, and also
|
5
|
-
# from the environment for the first two.
|
6
|
-
SPHINXOPTS ?=
|
7
|
-
SPHINXBUILD ?= sphinx-build
|
8
|
-
SOURCEDIR = source
|
9
|
-
BUILDDIR = build
|
10
|
-
|
11
|
-
# Put it first so that "make" without argument is like "make help".
|
12
|
-
help:
|
13
|
-
@$(SPHINXBUILD) -M help "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
14
|
-
|
15
|
-
.PHONY: help Makefile
|
16
|
-
|
17
|
-
# Catch-all target: route all unknown targets to Sphinx using the new
|
18
|
-
# "make mode" option. $(O) is meant as a shortcut for $(SPHINXOPTS).
|
19
|
-
%: Makefile
|
20
|
-
@$(SPHINXBUILD) -M $@ "$(SOURCEDIR)" "$(BUILDDIR)" $(SPHINXOPTS) $(O)
|
docs/make.bat
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
@ECHO OFF
|
2
|
-
|
3
|
-
pushd %~dp0
|
4
|
-
|
5
|
-
REM Command file for Sphinx documentation
|
6
|
-
|
7
|
-
if "%SPHINXBUILD%" == "" (
|
8
|
-
set SPHINXBUILD=sphinx-build
|
9
|
-
)
|
10
|
-
set SOURCEDIR=source
|
11
|
-
set BUILDDIR=build
|
12
|
-
|
13
|
-
if "%1" == "" goto help
|
14
|
-
|
15
|
-
%SPHINXBUILD% >NUL 2>NUL
|
16
|
-
if errorlevel 9009 (
|
17
|
-
echo.
|
18
|
-
echo.The 'sphinx-build' command was not found. Make sure you have Sphinx
|
19
|
-
echo.installed, then set the SPHINXBUILD environment variable to point
|
20
|
-
echo.to the full path of the 'sphinx-build' executable. Alternatively you
|
21
|
-
echo.may add the Sphinx directory to PATH.
|
22
|
-
echo.
|
23
|
-
echo.If you don't have Sphinx installed, grab it from
|
24
|
-
echo.https://www.sphinx-doc.org/
|
25
|
-
exit /b 1
|
26
|
-
)
|
27
|
-
|
28
|
-
%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
29
|
-
goto end
|
30
|
-
|
31
|
-
:help
|
32
|
-
%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS% %O%
|
33
|
-
|
34
|
-
:end
|
35
|
-
popd
|
@@ -1,53 +0,0 @@
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg"
|
2
|
-
version="1.0" width="322" height="46"
|
3
|
-
viewBox="0 0 322 46">
|
4
|
-
<text x="21" y="8" font-family="Courier New, monospace" font-size="11"
|
5
|
-
dominant-baseline="middle" text-anchor="middle">0
|
6
|
-
</text>
|
7
|
-
<text x="61" y="8" font-family="Courier New, monospace" font-size="11"
|
8
|
-
dominant-baseline="middle" text-anchor="middle">1
|
9
|
-
</text>
|
10
|
-
<text x="101" y="8" font-family="Courier New, monospace" font-size="11"
|
11
|
-
dominant-baseline="middle" text-anchor="middle">2
|
12
|
-
</text>
|
13
|
-
<text x="141" y="8" font-family="Courier New, monospace" font-size="11"
|
14
|
-
dominant-baseline="middle" text-anchor="middle">3
|
15
|
-
</text>
|
16
|
-
<text x="181" y="8" font-family="Courier New, monospace" font-size="11"
|
17
|
-
dominant-baseline="middle" text-anchor="middle">4
|
18
|
-
</text>
|
19
|
-
<text x="221" y="8" font-family="Courier New, monospace" font-size="11"
|
20
|
-
dominant-baseline="middle" text-anchor="middle">5
|
21
|
-
</text>
|
22
|
-
<text x="261" y="8" font-family="Courier New, monospace" font-size="11"
|
23
|
-
dominant-baseline="middle" text-anchor="middle">6
|
24
|
-
</text>
|
25
|
-
<text x="301" y="8" font-family="Courier New, monospace" font-size="11"
|
26
|
-
dominant-baseline="middle" text-anchor="middle">7
|
27
|
-
</text>
|
28
|
-
<line x1="1" y1="15" x2="81" y2="15" stroke="#000000" stroke-width="1"/>
|
29
|
-
<line x1="1" y1="45" x2="81" y2="45" stroke="#000000" stroke-width="1"/>
|
30
|
-
<line x1="81" y1="15" x2="81" y2="45" stroke="#000000" stroke-width="1"/>
|
31
|
-
<line x1="1" y1="15" x2="1" y2="45" stroke="#000000" stroke-width="1"/>
|
32
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif"
|
33
|
-
font-style="italic" x="41" y="31" text-anchor="middle"
|
34
|
-
dominant-baseline="middle">b
|
35
|
-
<tspan font-size="70%" dy="0.5ex" dominant-baseline="middle">num</tspan>
|
36
|
-
</text>
|
37
|
-
<line x1="81" y1="15" x2="161" y2="15" stroke="#000000" stroke-width="1"/>
|
38
|
-
<line x1="81" y1="45" x2="161" y2="45" stroke="#000000" stroke-width="1"/>
|
39
|
-
<line x1="161" y1="15" x2="161" y2="45" stroke="#000000" stroke-width="1"/>
|
40
|
-
<line x1="81" y1="15" x2="81" y2="45" stroke="#000000" stroke-width="1"/>
|
41
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif"
|
42
|
-
font-style="italic" x="121" y="31" text-anchor="middle"
|
43
|
-
dominant-baseline="middle">tempo
|
44
|
-
</text>
|
45
|
-
<line x1="161" y1="15" x2="321" y2="15" stroke="#000000" stroke-width="1"/>
|
46
|
-
<line x1="161" y1="45" x2="321" y2="45" stroke="#000000" stroke-width="1"/>
|
47
|
-
<line x1="321" y1="15" x2="321" y2="45" stroke="#000000" stroke-width="1"/>
|
48
|
-
<line x1="161" y1="15" x2="161" y2="45" stroke="#000000" stroke-width="1"/>
|
49
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif"
|
50
|
-
font-style="italic" x="241" y="31" text-anchor="middle"
|
51
|
-
dominant-baseline="middle">time
|
52
|
-
</text>
|
53
|
-
</svg>
|
@@ -1,204 +0,0 @@
|
|
1
|
-
<svg xmlns="http://www.w3.org/2000/svg" version="1.0" width="681" height="176"
|
2
|
-
viewBox="0 0 681 176">
|
3
|
-
<text x="60" y="8" font-family="Courier New, monospace" font-size="11"
|
4
|
-
dominant-baseline="middle" text-anchor="middle">0
|
5
|
-
</text>
|
6
|
-
<text x="100" y="8" font-family="Courier New, monospace" font-size="11"
|
7
|
-
dominant-baseline="middle" text-anchor="middle">1
|
8
|
-
</text>
|
9
|
-
<text x="140" y="8" font-family="Courier New, monospace" font-size="11"
|
10
|
-
dominant-baseline="middle" text-anchor="middle">2
|
11
|
-
</text>
|
12
|
-
<text x="180" y="8" font-family="Courier New, monospace" font-size="11"
|
13
|
-
dominant-baseline="middle" text-anchor="middle">3
|
14
|
-
</text>
|
15
|
-
<text x="220" y="8" font-family="Courier New, monospace" font-size="11"
|
16
|
-
dominant-baseline="middle" text-anchor="middle">4
|
17
|
-
</text>
|
18
|
-
<text x="260" y="8" font-family="Courier New, monospace" font-size="11"
|
19
|
-
dominant-baseline="middle" text-anchor="middle">5
|
20
|
-
</text>
|
21
|
-
<text x="300" y="8" font-family="Courier New, monospace" font-size="11"
|
22
|
-
dominant-baseline="middle" text-anchor="middle">6
|
23
|
-
</text>
|
24
|
-
<text x="340" y="8" font-family="Courier New, monospace" font-size="11"
|
25
|
-
dominant-baseline="middle" text-anchor="middle">7
|
26
|
-
</text>
|
27
|
-
<text x="380" y="8" font-family="Courier New, monospace" font-size="11"
|
28
|
-
dominant-baseline="middle" text-anchor="middle">8
|
29
|
-
</text>
|
30
|
-
<text x="420" y="8" font-family="Courier New, monospace" font-size="11"
|
31
|
-
dominant-baseline="middle" text-anchor="middle">9
|
32
|
-
</text>
|
33
|
-
<text x="460" y="8" font-family="Courier New, monospace" font-size="11"
|
34
|
-
dominant-baseline="middle" text-anchor="middle">a
|
35
|
-
</text>
|
36
|
-
<text x="500" y="8" font-family="Courier New, monospace" font-size="11"
|
37
|
-
dominant-baseline="middle" text-anchor="middle">b
|
38
|
-
</text>
|
39
|
-
<text x="540" y="8" font-family="Courier New, monospace" font-size="11"
|
40
|
-
dominant-baseline="middle" text-anchor="middle">c
|
41
|
-
</text>
|
42
|
-
<text x="580" y="8" font-family="Courier New, monospace" font-size="11"
|
43
|
-
dominant-baseline="middle" text-anchor="middle">d
|
44
|
-
</text>
|
45
|
-
<text x="620" y="8" font-family="Courier New, monospace" font-size="11"
|
46
|
-
dominant-baseline="middle" text-anchor="middle">e
|
47
|
-
</text>
|
48
|
-
<text x="660" y="8" font-family="Courier New, monospace" font-size="11"
|
49
|
-
dominant-baseline="middle" text-anchor="middle">f
|
50
|
-
</text>
|
51
|
-
<line x1="40" y1="15" x2="200" y2="15" stroke="#000000" stroke-width="1"/>
|
52
|
-
<line x1="40" y1="45" x2="200" y2="45" stroke="#000000" stroke-width="1"/>
|
53
|
-
<line x1="200" y1="15" x2="200" y2="45" stroke="#000000" stroke-width="1"/>
|
54
|
-
<line x1="40" y1="15" x2="40" y2="45" stroke="#000000" stroke-width="1"/>
|
55
|
-
<text font-size="18" font-family="Courier New, monospace" x="120" y="31"
|
56
|
-
text-anchor="middle" dominant-baseline="middle">PMAI
|
57
|
-
</text>
|
58
|
-
<line x1="200" y1="15" x2="360" y2="15" stroke="#000000" stroke-width="1"/>
|
59
|
-
<line x1="200" y1="45" x2="360" y2="45" stroke="#000000" stroke-width="1"/>
|
60
|
-
<line x1="360" y1="15" x2="360" y2="45" stroke="#000000" stroke-width="1"/>
|
61
|
-
<line x1="200" y1="15" x2="200" y2="45" stroke="#000000" stroke-width="1"/>
|
62
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif"
|
63
|
-
font-style="italic" x="280" y="31" text-anchor="middle"
|
64
|
-
dominant-baseline="middle">len_header
|
65
|
-
</text>
|
66
|
-
<line x1="360" y1="15" x2="520" y2="15" stroke="#000000" stroke-width="1"/>
|
67
|
-
<line x1="360" y1="45" x2="520" y2="45" stroke="#000000" stroke-width="1"/>
|
68
|
-
<line x1="520" y1="15" x2="520" y2="45" stroke="#000000" stroke-width="1"/>
|
69
|
-
<line x1="360" y1="15" x2="360" y2="45" stroke="#000000" stroke-width="1"/>
|
70
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif"
|
71
|
-
font-style="italic" x="440" y="31" text-anchor="middle"
|
72
|
-
dominant-baseline="middle">len_file
|
73
|
-
</text>
|
74
|
-
<line x1="520" y1="15" x2="560" y2="15" stroke="#000000" stroke-width="1"/>
|
75
|
-
<line x1="520" y1="45" x2="560" y2="45" stroke="#000000" stroke-width="1"/>
|
76
|
-
<line stroke-dasharray="1,3" x1="560" y1="15" x2="560" y2="45" stroke="#000000"
|
77
|
-
stroke-width="1"/>
|
78
|
-
<line x1="520" y1="15" x2="520" y2="45" stroke="#000000" stroke-width="1"/>
|
79
|
-
<line x1="560" y1="15" x2="600" y2="15" stroke="#000000" stroke-width="1"/>
|
80
|
-
<line x1="560" y1="45" x2="600" y2="45" stroke="#000000" stroke-width="1"/>
|
81
|
-
<line stroke-dasharray="1,3" x1="600" y1="15" x2="600" y2="45" stroke="#000000"
|
82
|
-
stroke-width="1"/>
|
83
|
-
<line stroke-dasharray="1,3" x1="560" y1="15" x2="560" y2="45" stroke="#000000"
|
84
|
-
stroke-width="1"/>
|
85
|
-
<line x1="600" y1="15" x2="640" y2="15" stroke="#000000" stroke-width="1"/>
|
86
|
-
<line x1="600" y1="45" x2="640" y2="45" stroke="#000000" stroke-width="1"/>
|
87
|
-
<line stroke-dasharray="1,3" x1="640" y1="15" x2="640" y2="45" stroke="#000000"
|
88
|
-
stroke-width="1"/>
|
89
|
-
<line stroke-dasharray="1,3" x1="600" y1="15" x2="600" y2="45" stroke="#000000"
|
90
|
-
stroke-width="1"/>
|
91
|
-
<line x1="640" y1="15" x2="680" y2="15" stroke="#000000" stroke-width="1"/>
|
92
|
-
<line x1="640" y1="45" x2="680" y2="45" stroke="#000000" stroke-width="1"/>
|
93
|
-
<line x1="680" y1="15" x2="680" y2="45" stroke="#000000" stroke-width="1"/>
|
94
|
-
<line stroke-dasharray="1,3" x1="640" y1="15" x2="640" y2="45" stroke="#000000"
|
95
|
-
stroke-width="1"/>
|
96
|
-
<text font-size="11" font-family="Courier New, monospace"
|
97
|
-
dominant-baseline="middle" x="35" y="30" text-anchor="end">00
|
98
|
-
</text>
|
99
|
-
<text font-size="11" font-family="Courier New, monospace"
|
100
|
-
dominant-baseline="middle" x="35" y="60" text-anchor="end">10
|
101
|
-
</text>
|
102
|
-
<line x1="40" y1="45" x2="80" y2="45" stroke="#000000" stroke-width="1"/>
|
103
|
-
<line x1="40" y1="75" x2="80" y2="75" stroke="#000000" stroke-width="1"/>
|
104
|
-
<line stroke-dasharray="1,3" x1="80" y1="45" x2="80" y2="75" stroke="#000000"
|
105
|
-
stroke-width="1"/>
|
106
|
-
<line x1="40" y1="45" x2="40" y2="75" stroke="#000000" stroke-width="1"/>
|
107
|
-
<line x1="80" y1="45" x2="120" y2="45" stroke="#000000" stroke-width="1"/>
|
108
|
-
<line x1="80" y1="75" x2="120" y2="75" stroke="#000000" stroke-width="1"/>
|
109
|
-
<line stroke-dasharray="1,3" x1="120" y1="45" x2="120" y2="75" stroke="#000000"
|
110
|
-
stroke-width="1"/>
|
111
|
-
<line stroke-dasharray="1,3" x1="80" y1="45" x2="80" y2="75" stroke="#000000"
|
112
|
-
stroke-width="1"/>
|
113
|
-
<line x1="120" y1="45" x2="160" y2="45" stroke="#000000" stroke-width="1"/>
|
114
|
-
<line x1="120" y1="75" x2="160" y2="75" stroke="#000000" stroke-width="1"/>
|
115
|
-
<line stroke-dasharray="1,3" x1="160" y1="45" x2="160" y2="75" stroke="#000000"
|
116
|
-
stroke-width="1"/>
|
117
|
-
<line stroke-dasharray="1,3" x1="120" y1="45" x2="120" y2="75" stroke="#000000"
|
118
|
-
stroke-width="1"/>
|
119
|
-
<line x1="160" y1="45" x2="200" y2="45" stroke="#000000" stroke-width="1"/>
|
120
|
-
<line x1="160" y1="75" x2="200" y2="75" stroke="#000000" stroke-width="1"/>
|
121
|
-
<line stroke-dasharray="1,3" x1="200" y1="45" x2="200" y2="75" stroke="#000000"
|
122
|
-
stroke-width="1"/>
|
123
|
-
<line stroke-dasharray="1,3" x1="160" y1="45" x2="160" y2="75" stroke="#000000"
|
124
|
-
stroke-width="1"/>
|
125
|
-
<line x1="200" y1="45" x2="240" y2="45" stroke="#000000" stroke-width="1"/>
|
126
|
-
<line x1="200" y1="75" x2="240" y2="75" stroke="#000000" stroke-width="1"/>
|
127
|
-
<line stroke-dasharray="1,3" x1="240" y1="45" x2="240" y2="75" stroke="#000000"
|
128
|
-
stroke-width="1"/>
|
129
|
-
<line stroke-dasharray="1,3" x1="200" y1="45" x2="200" y2="75" stroke="#000000"
|
130
|
-
stroke-width="1"/>
|
131
|
-
<line x1="240" y1="45" x2="280" y2="45" stroke="#000000" stroke-width="1"/>
|
132
|
-
<line x1="240" y1="75" x2="280" y2="75" stroke="#000000" stroke-width="1"/>
|
133
|
-
<line stroke-dasharray="1,3" x1="280" y1="45" x2="280" y2="75" stroke="#000000"
|
134
|
-
stroke-width="1"/>
|
135
|
-
<line stroke-dasharray="1,3" x1="240" y1="45" x2="240" y2="75" stroke="#000000"
|
136
|
-
stroke-width="1"/>
|
137
|
-
<line x1="280" y1="45" x2="320" y2="45" stroke="#000000" stroke-width="1"/>
|
138
|
-
<line x1="280" y1="75" x2="320" y2="75" stroke="#000000" stroke-width="1"/>
|
139
|
-
<line stroke-dasharray="1,3" x1="320" y1="45" x2="320" y2="75" stroke="#000000"
|
140
|
-
stroke-width="1"/>
|
141
|
-
<line stroke-dasharray="1,3" x1="280" y1="45" x2="280" y2="75" stroke="#000000"
|
142
|
-
stroke-width="1"/>
|
143
|
-
<line x1="320" y1="45" x2="360" y2="45" stroke="#000000" stroke-width="1"/>
|
144
|
-
<line x1="320" y1="75" x2="360" y2="75" stroke="#000000" stroke-width="1"/>
|
145
|
-
<line stroke-dasharray="1,3" x1="360" y1="45" x2="360" y2="75" stroke="#000000"
|
146
|
-
stroke-width="1"/>
|
147
|
-
<line stroke-dasharray="1,3" x1="320" y1="45" x2="320" y2="75" stroke="#000000"
|
148
|
-
stroke-width="1"/>
|
149
|
-
<line x1="360" y1="45" x2="400" y2="45" stroke="#000000" stroke-width="1"/>
|
150
|
-
<line x1="360" y1="75" x2="400" y2="75" stroke="#000000" stroke-width="1"/>
|
151
|
-
<line stroke-dasharray="1,3" x1="400" y1="45" x2="400" y2="75" stroke="#000000"
|
152
|
-
stroke-width="1"/>
|
153
|
-
<line stroke-dasharray="1,3" x1="360" y1="45" x2="360" y2="75" stroke="#000000"
|
154
|
-
stroke-width="1"/>
|
155
|
-
<line x1="400" y1="45" x2="440" y2="45" stroke="#000000" stroke-width="1"/>
|
156
|
-
<line x1="400" y1="75" x2="440" y2="75" stroke="#000000" stroke-width="1"/>
|
157
|
-
<line stroke-dasharray="1,3" x1="440" y1="45" x2="440" y2="75" stroke="#000000"
|
158
|
-
stroke-width="1"/>
|
159
|
-
<line stroke-dasharray="1,3" x1="400" y1="45" x2="400" y2="75" stroke="#000000"
|
160
|
-
stroke-width="1"/>
|
161
|
-
<line x1="440" y1="45" x2="480" y2="45" stroke="#000000" stroke-width="1"/>
|
162
|
-
<line x1="440" y1="75" x2="480" y2="75" stroke="#000000" stroke-width="1"/>
|
163
|
-
<line stroke-dasharray="1,3" x1="480" y1="45" x2="480" y2="75" stroke="#000000"
|
164
|
-
stroke-width="1"/>
|
165
|
-
<line stroke-dasharray="1,3" x1="440" y1="45" x2="440" y2="75" stroke="#000000"
|
166
|
-
stroke-width="1"/>
|
167
|
-
<line x1="480" y1="45" x2="520" y2="45" stroke="#000000" stroke-width="1"/>
|
168
|
-
<line x1="480" y1="75" x2="520" y2="75" stroke="#000000" stroke-width="1"/>
|
169
|
-
<line x1="520" y1="45" x2="520" y2="75" stroke="#000000" stroke-width="1"/>
|
170
|
-
<line stroke-dasharray="1,3" x1="480" y1="45" x2="480" y2="75" stroke="#000000"
|
171
|
-
stroke-width="1"/>
|
172
|
-
<line x1="520" y1="45" x2="680" y2="45" stroke="#000000" stroke-width="1"/>
|
173
|
-
<line x1="680" y1="45" x2="680" y2="75" stroke="#000000" stroke-width="1"/>
|
174
|
-
<line x1="520" y1="45" x2="520" y2="75" stroke="#000000" stroke-width="1"/>
|
175
|
-
<text font-size="11" font-family="Courier New, monospace"
|
176
|
-
dominant-baseline="middle" x="35" y="90" text-anchor="end">20
|
177
|
-
</text>
|
178
|
-
<line x1="680" y1="75" x2="680" y2="105" stroke="#000000" stroke-width="1"/>
|
179
|
-
<line x1="40" y1="75" x2="40" y2="105" stroke="#000000" stroke-width="1"/>
|
180
|
-
<text font-size="18" font-family="Palatino, Georgia, Times New Roman, serif" x="360"
|
181
|
-
y="91" text-anchor="middle" dominant-baseline="middle">Tagged sections
|
182
|
-
</text>
|
183
|
-
<text font-size="11" font-family="Courier New, monospace"
|
184
|
-
dominant-baseline="middle" x="35" y="120" text-anchor="end">30
|
185
|
-
</text>
|
186
|
-
<line x1="40" y1="105" x2="40" y2="120" stroke="#000000" stroke-width="1"/>
|
187
|
-
<line x1="680" y1="105" x2="680" y2="120" stroke="#000000" stroke-width="1"/>
|
188
|
-
<line stroke-dasharray="1,1" x1="40" y1="120" x2="680" y2="150" stroke="#000000"
|
189
|
-
stroke-width="1"/>
|
190
|
-
<line x1="680" y1="105" x2="680" y2="150" stroke="#000000" stroke-width="1"/>
|
191
|
-
<line stroke-dasharray="1,1" x1="40" y1="130" x2="680" y2="160" stroke="#000000"
|
192
|
-
stroke-width="1"/>
|
193
|
-
<line x1="40" y1="130" x2="40" y2="160" stroke="#000000" stroke-width="1"/>
|
194
|
-
<line x1="40" y1="160" x2="40" y2="175" stroke="#000000" stroke-width="1"/>
|
195
|
-
<line x1="680" y1="160" x2="680" y2="175" stroke="#000000" stroke-width="1"/>
|
196
|
-
<text font-size="11" font-family="Palatino, Georgia, Times New Roman, serif"
|
197
|
-
font-style="italic" dominant-baseline="middle" x="35" y="190"
|
198
|
-
text-anchor="end">i+
|
199
|
-
<tspan font-size="11" font-family="Courier New, monospace"
|
200
|
-
dominant-baseline="middle">00
|
201
|
-
</tspan>
|
202
|
-
</text>
|
203
|
-
<line x1="40" y1="175" x2="680" y2="175" stroke="#000000" stroke-width="1"/>
|
204
|
-
</svg>
|