Skip to content

Commit db2ba80

Browse files
author
Johannes Hentschel
authored
Metadata (#5)
No issues with this! README to follow
2 parents 8426693 + 4869fca commit db2ba80

File tree

113 files changed

+21765
-13733
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

113 files changed

+21765
-13733
lines changed

.github/workflows/helper.py

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
import argparse
2+
import re
3+
import os
4+
from datetime import datetime
5+
6+
def create_new_tag(tag, update_major):
7+
if not (re.match(r'^v\d+\.\d+$', tag)):
8+
raise Exception(f'tag: {tag} is not giving in the correct format e.i v0.0')
9+
10+
# Notice that this could make a tag version of three digits become two digits
11+
# e.i 3.2.1 -> 3.3
12+
digits_tags = (re.match(r'^v\d+\.\d+', tag)).group()[1::].split('.')
13+
if len(digits_tags) != 2:
14+
raise Exception(f'tag: {tag} must contain two version digits')
15+
16+
major_num = int(digits_tags[0])
17+
minor_num = int(digits_tags[1])
18+
if update_major:
19+
print(f"Label detected to update major version")
20+
major_num += 1
21+
minor_num = 0
22+
else:
23+
minor_num += 1
24+
return f"v{major_num}.{minor_num}"
25+
26+
def store_tag(tag):
27+
with open(os.environ['GITHUB_OUTPUT'], 'a') as fh:
28+
print(f'new_tag={tag}', file=fh)
29+
30+
def update_file_with_tag(f_name, old_tag, new_tag, replace_dates=True):
31+
if os.path.isfile(f_name):
32+
try:
33+
with open(f_name, "r",encoding="utf-8") as f:
34+
data = f.read()
35+
data = data.replace(old_tag, new_tag)
36+
if replace_dates:
37+
date_re = r"\d{4}-\d{2}-\d{2}"
38+
today = datetime.today().strftime('%Y-%m-%d')
39+
data = re.sub(date_re, today, data)
40+
with open(f_name, "w",encoding="utf-8") as f:
41+
f.write(data)
42+
except Exception as e:
43+
print(e)
44+
else:
45+
print(f"Warning: {f_name} doest exist at the current path {os.getcwd()}")
46+
47+
def main(args):
48+
tag = args.tag
49+
new_tag = "v2.0"
50+
if not tag:
51+
print(f"Warning: a latest release with a tag does not exist in current repository, starting from {new_tag}")
52+
else:
53+
new_tag = create_new_tag(tag,args.update_major_ver)
54+
print(f"Repository with tag: {tag}, creating a new tag with: {new_tag}")
55+
update_file_with_tag(".zenodo.json", tag, new_tag)
56+
update_file_with_tag("CITATION.cff", tag, new_tag)
57+
update_file_with_tag("README.md", tag, new_tag, replace_dates=False)
58+
store_tag(new_tag)
59+
60+
def run():
61+
args = parser.parse_args()
62+
main(args)
63+
64+
65+
def str_to_bool(value):
66+
if value.lower() == "true":
67+
return True
68+
elif value.lower() == "false":
69+
return False
70+
else:
71+
raise Exception(
72+
f"Error: value {value} as argument is not accepted\n"
73+
f"retry with true or false"
74+
)
75+
76+
if __name__ == "__main__":
77+
parser = argparse.ArgumentParser()
78+
parser.add_argument(
79+
"--tag", type=str,
80+
help="Require: latest tag",
81+
required=True
82+
)
83+
parser.add_argument(
84+
"--update_major_ver", type=str_to_bool,
85+
help="Require: boolean to update the major tag number",
86+
required=True
87+
)
88+
run()
Lines changed: 77 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,77 @@
1+
on:
2+
pull_request:
3+
types:
4+
- closed
5+
6+
jobs:
7+
if_merged:
8+
if: github.event.pull_request.merged == true
9+
runs-on: ubuntu-latest
10+
steps:
11+
12+
- name: Checkout corpus repository
13+
uses: actions/checkout@v3
14+
with:
15+
fetch-depth: 0
16+
token: ${{ secrets.MS3_BOT_TOKEN }}
17+
ref: "${{ github.event.pull_request.base.ref }}"
18+
submodules: recursive
19+
20+
- name: "Get latest tag version"
21+
id: tag
22+
continue-on-error: true
23+
run: |
24+
res=$(git tag -l --sort=-v:refname | grep --invert-match '\^' | head -n 1)
25+
echo "tag_version=${res}" >> $GITHUB_OUTPUT
26+
env:
27+
GITHUB_TOKEN: ${{ secrets.MS3_BOT_TOKEN }}
28+
29+
- name: "Generate a new tag version"
30+
id: generate_tag
31+
run: |
32+
major_in_PR="${{ contains(github.event.pull_request.labels.*.name, 'major_version')}}"
33+
python .github/workflows/helper.py --tag "${{ steps.tag.outputs.tag_version }}" --update_major_ver "$major_in_PR"
34+
35+
- name: Setup Github credentials & push zenodo, citation and README changes
36+
continue-on-error: true
37+
run: |
38+
git config --global user.name "ms3-bot"
39+
git config --global user.email dcml.annotators@epfl.ch
40+
if [[ -f .zenodo.json ]]; then
41+
git add .zenodo.json
42+
fi
43+
if [[ -f CITATION.cff ]]; then
44+
git add CITATION.cff
45+
fi
46+
if [[ -f README.md ]]; then
47+
git add README.md
48+
fi
49+
git commit -m 'chore: files updated with tag: ${{ steps.generate_tag.outputs.new_tag }}'
50+
git push
51+
52+
- name: "Create tag"
53+
run: |
54+
git tag -a "${{ steps.generate_tag.outputs.new_tag }}" -m "chore: files updated with tag: ${{ steps.generate_tag.outputs.new_tag }}"
55+
git push origin "${{ steps.generate_tag.outputs.new_tag }}"
56+
57+
- name: "Get ms3 package & apply transform"
58+
continue-on-error: true
59+
run: |
60+
pip install --upgrade pip
61+
pip install ms3
62+
ms3 transform -M -N -X -F -C -D
63+
64+
- name: "Store REPO name in lowercase to match the name of the datapackage"
65+
run: |
66+
echo "REPO=${NAME@L}" >> ${GITHUB_ENV}
67+
env:
68+
NAME: '${{ github.event.repository.name }}'
69+
- uses: ncipollo/release-action@v1
70+
with:
71+
artifacts: "${{ env.REPO }}.zip,\
72+
${{ env.REPO }}.datapackage.json,\
73+
${{ env.REPO }}.datapackage.errors"
74+
body: "${{ github.event.pull_request.body }}"
75+
name: "${{ github.event.pull_request.title }}"
76+
tag: "${{ steps.generate_tag.outputs.new_tag }}"
77+
makeLatest: "latest"

.pre-commit-config.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
repos:
2+
- repo: https://github.com/johentsch/ms3
3+
rev: v2.5.2
4+
hooks:
5+
- id: review
6+
args: [-M, -N, -C, -X, -F, -D, -c LATEST_VERSION, --fail]

MS3/op39n01.mscx

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -224,26 +224,33 @@
224224
<showUnprintable>0</showUnprintable>
225225
<showFrames>0</showFrames>
226226
<showMargins>0</showMargins>
227+
<metaTag name="P86 (composer)">Q7351</metaTag>
227228
<metaTag name="annotators">Uli Kneisel</metaTag>
228229
<metaTag name="arranger"></metaTag>
229230
<metaTag name="composed_end">1840</metaTag>
231+
<metaTag name="composed_source">https://en.wikipedia.org/wiki/Liederkreis,_Op._39_(Schumann)</metaTag>
230232
<metaTag name="composed_start">1840</metaTag>
231233
<metaTag name="composer">Robert Schumann</metaTag>
232234
<metaTag name="copyright">OpenScore (CC0)</metaTag>
233235
<metaTag name="creationDate">2018-05-03</metaTag>
234236
<metaTag name="harmony_version">2.1.0</metaTag>
237+
<metaTag name="imslp">https://imslp.org/wiki/Liederkreis%2C_Op.39_%28Schumann%2C_Robert%29</metaTag>
235238
<metaTag name="lyricist">Joseph von Eichendorff</metaTag>
236239
<metaTag name="movementNumber">1</metaTag>
237240
<metaTag name="movementTitle">In der Fremde</metaTag>
238241
<metaTag name="mscVersion">3.02</metaTag>
242+
<metaTag name="musicbrainz">https://musicbrainz.org/work/b4d6805c-f700-3637-9c91-0d49b403d7d2</metaTag>
239243
<metaTag name="originalFormat">musicxml</metaTag>
244+
<metaTag name="pdf">https://imslp.org/wiki/Special:ReverseLookup/51730</metaTag>
240245
<metaTag name="platform">Microsoft Windows</metaTag>
241246
<metaTag name="poet"></metaTag>
242247
<metaTag name="reviewers">Adrian Nagel</metaTag>
243248
<metaTag name="source">http://musescore.com/openscore-lieder-corpus/schumann-robert---liederkreis-op39-no1---in-der-fremde-i</metaTag>
244249
<metaTag name="translator"></metaTag>
245-
<metaTag name="workNumber">39</metaTag>
246-
<metaTag name="workTitle">Liederkreis, Op.39</metaTag>
250+
<metaTag name="viaf">https://viaf.org/viaf/181424943/</metaTag>
251+
<metaTag name="wikidata">https://www.wikidata.org/wiki/Q108874761</metaTag>
252+
<metaTag name="workNumber">Op. 39</metaTag>
253+
<metaTag name="workTitle">Liederkreis</metaTag>
247254
<Part>
248255
<Staff id="1">
249256
<StaffType group="pitched">
@@ -286,6 +293,7 @@
286293
<gateTime>100</gateTime>
287294
</Articulation>
288295
<Channel>
296+
<controller ctrl="0" value="0"/>
289297
<controller ctrl="32" value="17"/>
290298
<program value="68"/>
291299
<synti>Fluid</synti>
@@ -361,12 +369,13 @@
361369
<bottomGap>0</bottomGap>
362370
<boxAutoSize>0</boxAutoSize>
363371
<Text>
364-
<style>User-1</style>
365-
<text>Liederkreis, Op.39</text>
372+
<style>Title</style>
373+
<offset x="0" y="0.17047"/>
374+
<text>1. In der Fremde</text>
366375
</Text>
367376
<Text>
368-
<style>User-2</style>
369-
<text>1. In der Fremde (I)</text>
377+
<style>Subtitle</style>
378+
<text>from: Liederkreis, Op. 39</text>
370379
</Text>
371380
<Text>
372381
<style>Composer</style>

MS3/op39n02.mscx

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -237,26 +237,33 @@
237237
<showUnprintable>0</showUnprintable>
238238
<showFrames>0</showFrames>
239239
<showMargins>0</showMargins>
240+
<metaTag name="P86 (composer)">Q7351</metaTag>
240241
<metaTag name="annotators">Uli Kneisel</metaTag>
241242
<metaTag name="arranger"></metaTag>
242243
<metaTag name="composed_end">1840</metaTag>
244+
<metaTag name="composed_source">https://en.wikipedia.org/wiki/Liederkreis,_Op._39_(Schumann)</metaTag>
243245
<metaTag name="composed_start">1840</metaTag>
244246
<metaTag name="composer">Robert Schumann</metaTag>
245247
<metaTag name="copyright">OpenScore (CC0)</metaTag>
246248
<metaTag name="creationDate">2018-02-22</metaTag>
247249
<metaTag name="harmony_version">2.1.0</metaTag>
250+
<metaTag name="imslp">https://imslp.org/wiki/Liederkreis%2C_Op.39_%28Schumann%2C_Robert%29</metaTag>
248251
<metaTag name="lyricist">Joseph von Eichendorff</metaTag>
249252
<metaTag name="movementNumber">2</metaTag>
250253
<metaTag name="movementTitle">Intermezzo</metaTag>
251254
<metaTag name="mscVersion">3.02</metaTag>
255+
<metaTag name="musicbrainz">https://musicbrainz.org/work/754505ae-0fe1-3a25-87dd-a410e281b036</metaTag>
252256
<metaTag name="originalFormat">xml</metaTag>
257+
<metaTag name="pdf">https://imslp.org/wiki/Special:ReverseLookup/51730</metaTag>
253258
<metaTag name="platform">Microsoft Windows</metaTag>
254259
<metaTag name="poet"></metaTag>
255260
<metaTag name="reviewers">Adrian Nagel</metaTag>
256261
<metaTag name="source">http://musescore.com/openscore-lieder-corpus/schumann-robert---liederkreis-op39-no2---intermezzo</metaTag>
257262
<metaTag name="translator"></metaTag>
258-
<metaTag name="workNumber">39</metaTag>
259-
<metaTag name="workTitle">Liederkreis, Op.39</metaTag>
263+
<metaTag name="viaf">https://viaf.org/viaf/181424943/</metaTag>
264+
<metaTag name="wikidata">https://www.wikidata.org/wiki/Q1469612</metaTag>
265+
<metaTag name="workNumber">Op. 39</metaTag>
266+
<metaTag name="workTitle">Liederkreis</metaTag>
260267
<Part>
261268
<Staff id="1">
262269
<StaffType group="pitched">
@@ -376,20 +383,21 @@
376383
</Part>
377384
<Staff id="1">
378385
<VBox>
379-
<height>14.2931</height>
386+
<height>19.4703</height>
380387
<bottomGap>0</bottomGap>
381388
<boxAutoSize>0</boxAutoSize>
382389
<Text>
383-
<style>User-2</style>
390+
<style>Title</style>
391+
<offset x="0" y="2.02393"/>
384392
<text>2. Intermezzo</text>
385393
</Text>
386394
<Text>
387-
<style>Composer</style>
388-
<text>Robert Schumann</text>
395+
<style>Subtitle</style>
396+
<text>from: Liederkreis, Op. 39</text>
389397
</Text>
390398
<Text>
391-
<style>User-1</style>
392-
<text>Liederkreis, Op.39</text>
399+
<style>Composer</style>
400+
<text>Robert Schumann</text>
393401
</Text>
394402
<Text>
395403
<style>Lyricist</style>

MS3/op39n03.mscx

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -234,27 +234,34 @@
234234
<showUnprintable>0</showUnprintable>
235235
<showFrames>0</showFrames>
236236
<showMargins>0</showMargins>
237+
<metaTag name="P86 (composer)">Q7351</metaTag>
237238
<metaTag name="annotators">Uli Kneisel</metaTag>
238239
<metaTag name="arranger"></metaTag>
239240
<metaTag name="composed_end">1840</metaTag>
241+
<metaTag name="composed_source">https://en.wikipedia.org/wiki/Liederkreis,_Op._39_(Schumann)</metaTag>
240242
<metaTag name="composed_start">1840</metaTag>
241243
<metaTag name="composer">Robert Schumann</metaTag>
242244
<metaTag name="copyright">OpenScore (CC0)
243245
</metaTag>
244246
<metaTag name="creationDate">2018-02-22</metaTag>
245247
<metaTag name="harmony_version">2.1.0</metaTag>
248+
<metaTag name="imslp">https://imslp.org/wiki/Liederkreis%2C_Op.39_%28Schumann%2C_Robert%29</metaTag>
246249
<metaTag name="lyricist">Joseph von Eichendorff</metaTag>
247250
<metaTag name="movementNumber">3</metaTag>
248251
<metaTag name="movementTitle">Waldesgespräch</metaTag>
249252
<metaTag name="mscVersion">3.02</metaTag>
253+
<metaTag name="musicbrainz">https://musicbrainz.org/work/d81c8bf6-f122-3d08-af95-11e77057f34e</metaTag>
250254
<metaTag name="originalFormat">xml</metaTag>
255+
<metaTag name="pdf">https://imslp.org/wiki/Special:ReverseLookup/51730</metaTag>
251256
<metaTag name="platform">Microsoft Windows</metaTag>
252257
<metaTag name="poet"></metaTag>
253258
<metaTag name="reviewers">Adrian Nagel</metaTag>
254259
<metaTag name="source">http://musescore.com/openscore-lieder-corpus/scores/4987626</metaTag>
255260
<metaTag name="translator"></metaTag>
256-
<metaTag name="workNumber">39</metaTag>
257-
<metaTag name="workTitle">Liederkreis, Op.39</metaTag>
261+
<metaTag name="viaf">https://viaf.org/viaf/181424943/</metaTag>
262+
<metaTag name="wikidata">https://www.wikidata.org/wiki/Q1469612</metaTag>
263+
<metaTag name="workNumber">Op. 39</metaTag>
264+
<metaTag name="workTitle">Liederkreis</metaTag>
258265
<Part>
259266
<Staff id="1">
260267
<StaffType group="pitched">
@@ -297,6 +304,7 @@
297304
<gateTime>100</gateTime>
298305
</Articulation>
299306
<Channel>
307+
<controller ctrl="0" value="0"/>
300308
<controller ctrl="32" value="17"/>
301309
<program value="68"/>
302310
<controller ctrl="93" value="64"/>
@@ -372,20 +380,21 @@
372380
</Part>
373381
<Staff id="1">
374382
<VBox>
375-
<height>17.4786</height>
383+
<height>20.3829</height>
376384
<bottomGap>10.3704</bottomGap>
377385
<boxAutoSize>0</boxAutoSize>
378386
<Text>
379-
<style>User-2</style>
387+
<style>Title</style>
388+
<offset x="0" y="0.589228"/>
380389
<text>3. Waldesgespräch</text>
381390
</Text>
382391
<Text>
383-
<style>Composer</style>
384-
<text>Robert Schumann</text>
392+
<style>Subtitle</style>
393+
<text>from: Liederkreis, Op. 39</text>
385394
</Text>
386395
<Text>
387-
<style>User-1</style>
388-
<text>Liederkreis, Op.39</text>
396+
<style>Composer</style>
397+
<text>Robert Schumann</text>
389398
</Text>
390399
<Text>
391400
<style>Lyricist</style>

0 commit comments

Comments
 (0)