musicbrainz-api 0.5.2 → 0.7.2
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.
- package/.idea/$CACHE_FILE$ +6 -0
- package/.idea/$PRODUCT_WORKSPACE_FILE$ +19 -0
- package/.idea/checkstyle-idea.xml +16 -0
- package/.idea/codeStyles/Project.xml +38 -0
- package/.idea/codeStyles/codeStyleConfig.xml +5 -0
- package/.idea/inspectionProfiles/Project_Default.xml +6 -0
- package/.idea/misc.xml +6 -0
- package/.idea/modules.xml +8 -0
- package/.idea/shelf/Uncommitted_changes_before_Update_at_6-1-2022_11_38_[Default_Changelist]/shelved.patch +58 -0
- package/.idea/shelf/Uncommitted_changes_before_Update_at_6-1-2022_11_38__Default_Changelist_.xml +4 -0
- package/.idea/shelf/Uncommitted_changes_before_rebase_[Default_Changelist]/shelved.patch +738 -0
- package/.idea/shelf/Uncommitted_changes_before_rebase_[Default_Changelist]1/shelved.patch +0 -0
- package/.idea/shelf/Uncommitted_changes_before_rebase__Default_Changelist_.xml +4 -0
- package/.idea/vcs.xml +6 -0
- package/.idea/workspace.xml +722 -0
- package/README.md +290 -287
- package/etc/config.js +32 -0
- package/lib/digest-auth.d.ts +21 -21
- package/lib/digest-auth.js +87 -86
- package/lib/musicbrainz-api.d.ts +156 -140
- package/lib/musicbrainz-api.js +390 -372
- package/lib/musicbrainz.types.d.ts +379 -252
- package/lib/musicbrainz.types.js +16 -15
- package/lib/rate-limiter.d.ts +8 -8
- package/lib/rate-limiter.js +31 -30
- package/lib/xml/xml-isrc-list.d.ts +17 -17
- package/lib/xml/xml-isrc-list.js +22 -21
- package/lib/xml/xml-isrc.d.ts +10 -10
- package/lib/xml/xml-isrc.js +17 -16
- package/lib/xml/xml-metadata.d.ts +6 -6
- package/lib/xml/xml-metadata.js +29 -28
- package/lib/xml/xml-recording.d.ts +24 -24
- package/lib/xml/xml-recording.js +20 -19
- package/package.json +98 -99
- package/yarn-error.log +3608 -0
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="masterDetails">
|
|
4
|
+
<states>
|
|
5
|
+
<state key="ProjectJDKs.UI">
|
|
6
|
+
<settings>
|
|
7
|
+
<last-edited>Python 3.6.4 (C:\Users\Maarten\AppData\Local\Programs\Python\Python36\python.exe)</last-edited>
|
|
8
|
+
<splitter-proportions>
|
|
9
|
+
<option name="proportions">
|
|
10
|
+
<list>
|
|
11
|
+
<option value="0.2" />
|
|
12
|
+
</list>
|
|
13
|
+
</option>
|
|
14
|
+
</splitter-proportions>
|
|
15
|
+
</settings>
|
|
16
|
+
</state>
|
|
17
|
+
</states>
|
|
18
|
+
</component>
|
|
19
|
+
</project>
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="CheckStyle-IDEA">
|
|
4
|
+
<option name="configuration">
|
|
5
|
+
<map>
|
|
6
|
+
<entry key="checkstyle-version" value="9.2" />
|
|
7
|
+
<entry key="copy-libs" value="true" />
|
|
8
|
+
<entry key="location-0" value="BUNDLED:(bundled):Sun Checks" />
|
|
9
|
+
<entry key="location-1" value="BUNDLED:(bundled):Google Checks" />
|
|
10
|
+
<entry key="scan-before-checkin" value="false" />
|
|
11
|
+
<entry key="scanscope" value="JavaOnly" />
|
|
12
|
+
<entry key="suppress-errors" value="false" />
|
|
13
|
+
</map>
|
|
14
|
+
</option>
|
|
15
|
+
</component>
|
|
16
|
+
</project>
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
<component name="ProjectCodeStyleConfiguration">
|
|
2
|
+
<code_scheme name="Project" version="173">
|
|
3
|
+
<JSCodeStyleSettings version="0">
|
|
4
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
5
|
+
</JSCodeStyleSettings>
|
|
6
|
+
<TypeScriptCodeStyleSettings version="0">
|
|
7
|
+
<option name="FORCE_SEMICOLON_STYLE" value="true" />
|
|
8
|
+
<option name="SPACE_BEFORE_FUNCTION_LEFT_PARENTH" value="false" />
|
|
9
|
+
<option name="USE_DOUBLE_QUOTES" value="false" />
|
|
10
|
+
<option name="FORCE_QUOTE_STYlE" value="true" />
|
|
11
|
+
<option name="SPACES_WITHIN_IMPORTS" value="true" />
|
|
12
|
+
<option name="SPACE_WITHIN_TYPE_ASSERTION" value="true" />
|
|
13
|
+
</TypeScriptCodeStyleSettings>
|
|
14
|
+
<codeStyleSettings language="JAVA">
|
|
15
|
+
<indentOptions>
|
|
16
|
+
<option name="INDENT_SIZE" value="2" />
|
|
17
|
+
<option name="CONTINUATION_INDENT_SIZE" value="4" />
|
|
18
|
+
<option name="TAB_SIZE" value="2" />
|
|
19
|
+
</indentOptions>
|
|
20
|
+
</codeStyleSettings>
|
|
21
|
+
<codeStyleSettings language="JavaScript">
|
|
22
|
+
<indentOptions>
|
|
23
|
+
<option name="INDENT_SIZE" value="2" />
|
|
24
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
25
|
+
<option name="TAB_SIZE" value="2" />
|
|
26
|
+
</indentOptions>
|
|
27
|
+
</codeStyleSettings>
|
|
28
|
+
<codeStyleSettings language="TypeScript">
|
|
29
|
+
<option name="RIGHT_MARGIN" value="200" />
|
|
30
|
+
<option name="KEEP_BLANK_LINES_IN_CODE" value="1" />
|
|
31
|
+
<indentOptions>
|
|
32
|
+
<option name="INDENT_SIZE" value="2" />
|
|
33
|
+
<option name="CONTINUATION_INDENT_SIZE" value="2" />
|
|
34
|
+
<option name="TAB_SIZE" value="2" />
|
|
35
|
+
</indentOptions>
|
|
36
|
+
</codeStyleSettings>
|
|
37
|
+
</code_scheme>
|
|
38
|
+
</component>
|
package/.idea/misc.xml
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
<?xml version="1.0" encoding="UTF-8"?>
|
|
2
|
+
<project version="4">
|
|
3
|
+
<component name="ProjectModuleManager">
|
|
4
|
+
<modules>
|
|
5
|
+
<module fileurl="file://$PROJECT_DIR$/.idea/musicbrainz-api.iml" filepath="$PROJECT_DIR$/.idea/musicbrainz-api.iml" />
|
|
6
|
+
</modules>
|
|
7
|
+
</component>
|
|
8
|
+
</project>
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
Index: test/test-musicbrainz-api.ts
|
|
2
|
+
IDEA additional info:
|
|
3
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.BaseRevisionTextPatchEP
|
|
4
|
+
<+>import { IMusicBrainzConfig, LinkType, MusicBrainzApi } from '../src/musicbrainz-api';\r\nimport { assert } from 'chai';\r\nimport { XmlMetadata } from '../src/xml/xml-metadata';\r\nimport * as mb from '../src/musicbrainz.types';\r\nimport * as fs from 'fs';\r\nimport * as path from 'path';\r\n\r\nconst packageInfo = require('../package.json');\r\n\r\nconst appUrl = 'https://github.com/Borewit/musicbrainz-api';\r\n\r\nconst testBotAccount = {\r\n username: process.env.MBUSER,\r\n password: process.env.MBPWD\r\n};\r\n\r\nconst testApiConfig: IMusicBrainzConfig = {\r\n botAccount: testBotAccount,\r\n baseUrl: 'https://test.musicbrainz.org',\r\n\r\n /**\r\n * Enable proxy, like Fiddler\r\n */\r\n proxy: process.env.MBPROXY,\r\n\r\n appName: packageInfo.name,\r\n appVersion: packageInfo.version,\r\n appContactInfo: appUrl\r\n};\r\n\r\nconst searchApiConfig: IMusicBrainzConfig = {\r\n\r\n baseUrl: 'https://musicbrainz.org',\r\n\r\n /**\r\n * Enable proxy, like Fiddler\r\n */\r\n proxy: process.env.MBPROXY,\r\n\r\n appName: packageInfo.name,\r\n appVersion: packageInfo.version,\r\n appContactInfo: appUrl\r\n};\r\n\r\nconst mbTestApi = new MusicBrainzApi(testApiConfig);\r\nconst mbApi = new MusicBrainzApi(searchApiConfig);\r\n\r\n// Hack shared rate-limiter\r\n(mbApi as any).rateLimiter = (mbTestApi as any).rateLimiter;\r\n\r\ndescribe('MusicBrainz-api', function() {\r\n\r\n this.timeout(20000); // MusicBrainz has a rate limiter\r\n\r\n const mbid = {\r\n artist: {\r\n Stromae: 'ab2528d9-719f-4261-8098-21849222a0f2'\r\n },\r\n recording: {\r\n Formidable: '16afa384-174e-435e-bfa3-5591accda31c',\r\n Montilla: '2faab3ff-1b3a-4378-bfa2-0513446644ed'\r\n },\r\n release: {\r\n Formidable: '976e0677-a480-4a5e-a177-6a86c1900bbf',\r\n Anomalie: '478aaba4-9425-4a67-8951-a77739462df4',\r\n RacineCarree: [\r\n '348662a8-54ce-4d14-adf5-3ce2cefd57bb',\r\n 'c22bdb3a-69c0-449a-9ef5-99796bb0f2d7',\r\n 'de57c1d9-5e65-420f-a896-1332e87d4c09'\r\n ]\r\n },\r\n releaseGroup: {\r\n Formidable: '19099ea5-3600-4154-b482-2ec68815883e',\r\n RacineCarree: 'd079dc50-fa9b-4a88-90f4-5e8723accd75'\r\n },\r\n work: {\r\n Formidable: 'b2aa02f4-6c95-43be-a426-aedb9f9a3805'\r\n },\r\n area: {\r\n Belgium: '5b8a5ee5-0bb3-34cf-9a75-c27c44e341fc',\r\n IleDeFrance: 'd79e4501-8cba-431b-96e7-bb9976f0ae76'\r\n },\r\n label: {\r\n Mosaert: '0550200c-22c1-4c62-b761-ef0b3665262b'\r\n }\r\n };\r\n\r\n const spotify = {\r\n album: {\r\n RacineCarree: {\r\n id: '6uyslsVGFsHKzdGUosFwBM'\r\n }\r\n },\r\n track: {\r\n Formidable: {\r\n id: '2AMysGXOe0zzZJMtH3Nizb'\r\n }\r\n }\r\n };\r\n\r\n it('Required environment variable', () => {\r\n assert.isDefined(process.env.MBUSER, 'process.env.MBUSER');\r\n assert.isDefined(process.env.MBPWD, 'process.env.MBPWD');\r\n });\r\n\r\n it('Extract CSRF', () => {\r\n const html = fs.readFileSync(path.join(__dirname, 'csrf.html'), 'utf8');\r\n const csrf = MusicBrainzApi.fetchCsrf(html);\r\n assert.deepStrictEqual(csrf, {\r\n sessionKey: 'csrf_token:x0VIlHob5nPcWKqJIwNPwE5Y3kE+nGQ9fccgTSYbuMU=',\r\n token: '6G9f/xJ6Y4fLVvfYGHrzBUM34j6hy4CJrBi3VkVwO9I='\r\n }, 'CSRF data');\r\n });\r\n\r\n describe('Read metadata', () => {\r\n\r\n describe('Lookup', () => {\r\n\r\n it('get area', async () => {\r\n const area = await mbApi.getArea(mbid.area.Belgium);\r\n assert.strictEqual(area.id, mbid.area.Belgium);\r\n assert.strictEqual(area.name, 'Belgium');\r\n });\r\n\r\n it('get artist', async () => {\r\n const artist = await mbApi.getArtist(mbid.artist.Stromae);\r\n assert.strictEqual(artist.id, mbid.artist.Stromae);\r\n assert.strictEqual(artist.name, 'Stromae');\r\n });\r\n\r\n describe('Release', () => {\r\n\r\n it('get release Formidable', async () => {\r\n const release = await mbApi.getRelease(mbid.release.Formidable);\r\n assert.strictEqual(release.id, mbid.release.Formidable);\r\n assert.strictEqual(release.title, 'Formidable');\r\n });\r\n\r\n it('check release Anomalie', async () => {\r\n const release = await mbApi.getRelease(mbid.release.Anomalie);\r\n assert.strictEqual(release.id, mbid.release.Anomalie);\r\n assert.strictEqual(release.title, 'Anomalie');\r\n });\r\n\r\n [\r\n {inc: 'artist-credits', key: 'artist-credit'},\r\n {inc: 'artists', key: 'artist-credit'},\r\n {inc: 'collections', key: 'collections'},\r\n {inc: 'labels', key: 'release-events'},\r\n {inc: 'media', key: 'media'},\r\n // {inc: 'recordings', key: 'recordings'},\r\n {inc: 'release-groups', key: 'release-group'}\r\n ].forEach(inc => {\r\n\r\n it(`get release, include: '${inc.inc}'`, async () => {\r\n const release = await mbApi.getRelease(mbid.release.Formidable, [inc.inc as any]);\r\n assert.strictEqual(release.id, mbid.release.Formidable);\r\n assert.strictEqual(release.title, 'Formidable');\r\n assert.isDefined(release[inc.key], `Should include '${inc.key}'`);\r\n });\r\n });\r\n\r\n });\r\n\r\n describe('Release-group', () => {\r\n\r\n it('get release-group', async () => {\r\n const releaseGroup = await mbApi.getReleaseGroup(mbid.releaseGroup.Formidable);\r\n assert.strictEqual(releaseGroup.id, mbid.releaseGroup.Formidable);\r\n assert.strictEqual(releaseGroup.title, 'Formidable');\r\n });\r\n\r\n [\r\n {inc: 'artist-credits', key: 'artist-credit'}\r\n ].forEach(inc => {\r\n\r\n it(`get release-group, include: '${inc.inc}'`, async () => {\r\n const group = await mbApi.getReleaseGroup(mbid.releaseGroup.Formidable, [inc.inc as any]);\r\n assert.strictEqual(group.id, mbid.releaseGroup.Formidable);\r\n assert.strictEqual(group.title, 'Formidable');\r\n assert.isDefined(group[inc.key], `Should include '${inc.key}'`);\r\n });\r\n });\r\n\r\n });\r\n\r\n it('get work', async () => {\r\n const work = await mbApi.getWork(mbid.work.Formidable);\r\n assert.strictEqual(work.id, mbid.work.Formidable);\r\n assert.strictEqual(work.title, 'Formidable');\r\n });\r\n\r\n it('get label', async () => {\r\n const label = await mbApi.getLabel(mbid.label.Mosaert);\r\n assert.strictEqual(label.id, mbid.label.Mosaert);\r\n assert.strictEqual(label.name, 'Mosaert');\r\n });\r\n\r\n describe('Recording', () => {\r\n\r\n it('get recording', async () => {\r\n const recording = await mbApi.getRecording(mbid.recording.Formidable);\r\n assert.strictEqual(recording.id, mbid.recording.Formidable);\r\n assert.strictEqual(recording.title, 'Formidable');\r\n assert.isUndefined(recording.isrcs);\r\n assert.isUndefined(recording['artist-credit']);\r\n assert.isUndefined(recording.releases);\r\n });\r\n\r\n [\r\n {inc: 'isrcs', key: 'isrcs'},\r\n {inc: 'artist-credits', key: 'artist-credit'},\r\n {inc: 'artists', key: 'artist-credit'},\r\n {inc: 'releases', key: 'releases'}\r\n ].forEach(inc => {\r\n\r\n it(`get recording, include: '${inc.inc}'`, async () => {\r\n const recording = await mbApi.getRecording(mbid.recording.Formidable, [inc.inc as any]);\r\n assert.strictEqual(recording.id, mbid.recording.Formidable);\r\n assert.strictEqual(recording.title, 'Formidable');\r\n assert.isDefined(recording[inc.key], `Should include '${inc.key}'`);\r\n });\r\n });\r\n\r\n it('get extended recording', async () => {\r\n const recording = await mbApi.getRecording(mbid.recording.Formidable, ['isrcs', 'artists', 'releases', 'url-rels']);\r\n assert.strictEqual(recording.id, mbid.recording.Formidable);\r\n assert.strictEqual(recording.title, 'Formidable');\r\n assert.isDefined(recording.isrcs);\r\n assert.isDefined(recording['artist-credit']);\r\n // assert.isDefined(recording.releases);\r\n });\r\n });\r\n\r\n });\r\n\r\n describe('Query', () => {\r\n\r\n it('query: Queen - We Will Rock You', async () => {\r\n const query = 'query=\"We Will Rock You\" AND arid:0383dadf-2a4e-4d10-a46a-e9e041da8eb3';\r\n const result = await mbApi.search<mb.IReleaseGroupList>('release-group', {query});\r\n assert.isAtLeast(result.count, 1);\r\n });\r\n\r\n });\r\n\r\n describe('Search', () => {\r\n\r\n describe('generic search', () => {\r\n\r\n it('find artist: Stromae', async () => {\r\n const result = await mbApi.search('artist', 'Stromae');\r\n assert.isAtLeast(result.count, 1);\r\n });\r\n\r\n });\r\n\r\n describe('searchArtist', () => {\r\n\r\n it('find artist: Stromae', async () => {\r\n const result = await mbApi.searchArtist('Stromae');\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result.artists.length, 1);\r\n assert.strictEqual(result.artists[0].id, mbid.artist.Stromae);\r\n });\r\n\r\n });\r\n\r\n describe('searchReleaseGroup', () => {\r\n\r\n it('find release-group: Racine carrée', async () => {\r\n const result = await mbApi.searchReleaseGroup('Racine carrée');\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result['release-groups'].length, 1);\r\n assert.strictEqual(result['release-groups'][0].id, mbid.releaseGroup.RacineCarree);\r\n });\r\n\r\n it('find release-group: Racine carrée, by artist and group name', async () => {\r\n const result = await mbApi.searchReleaseGroup({release: 'Racine carrée', artist: 'Stromae'});\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result['release-groups'].length, 1);\r\n assert.strictEqual(result['release-groups'][0].id, mbid.releaseGroup.RacineCarree);\r\n });\r\n });\r\n\r\n describe('searchRelease', () => {\r\n\r\n it('find release-group: Racine carrée', async () => {\r\n const result = await mbApi.searchRelease({release: 'Racine carrée'});\r\n assert.isAtLeast(result.count, 2);\r\n assert.isAtLeast(result.releases.length, 2);\r\n assert.includeMembers(result.releases.map(release => release.id), mbid.release.RacineCarree);\r\n });\r\n\r\n it('find release by barcode', async () => {\r\n const result = await mbApi.searchRelease({barcode: 602537479870});\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result.releases.length, 1);\r\n assert.equal(result.releases[0].id, mbid.release.RacineCarree[2]);\r\n });\r\n\r\n });\r\n\r\n describe('searchArea', () => {\r\n\r\n it('find area by name', async () => {\r\n const result = await mbApi.searchArea('Île-de-France');\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result.areas.length, 1);\r\n assert.strictEqual(result.areas[0].id, mbid.area.IleDeFrance);\r\n });\r\n });\r\n\r\n describe('searchUrl', () => {\r\n\r\n const spotifyUrl = 'https://open.spotify.com/album/' + spotify.album.RacineCarree.id;\r\n\r\n it('find url by url', async () => {\r\n const result = await mbApi.searchUrl({url: spotifyUrl});\r\n assert.isAtLeast(result.count, 1);\r\n assert.isAtLeast(result.urls.length, 1);\r\n assert.strictEqual(result.urls[0].resource, spotifyUrl);\r\n });\r\n });\r\n });\r\n\r\n });\r\n\r\n describe('Submit API', () => {\r\n\r\n it('Post ISRC Formidable', async () => {\r\n const isrc_Formidable = 'BET671300161';\r\n const xmlMetadata = new XmlMetadata();\r\n const xmlRecording = xmlMetadata.pushRecording(mbid.recording.Formidable);\r\n xmlRecording.isrcList.pushIsrc(isrc_Formidable);\r\n\r\n await mbTestApi.post('recording', xmlMetadata);\r\n });\r\n\r\n });\r\n\r\n /**\r\n * https://wiki.musicbrainz.org/Development/Release_Editor_Seeding\r\n */\r\n describe.skip('User (bot) post form-data API', () => {\r\n\r\n it('login & logout', async () => {\r\n for (let n = 1; n <= 2; ++n) {\r\n assert.isTrue(await mbTestApi.login(), `Login ${n}`);\r\n assert.isTrue(await mbTestApi.logout(), `Logout ${n}`);\r\n }\r\n });\r\n\r\n describe('Recording', () => {\r\n\r\n it('add link', async () => {\r\n const recording = await mbTestApi.getRecording(mbid.recording.Formidable);\r\n assert.strictEqual(recording.id, mbid.recording.Formidable);\r\n assert.strictEqual(recording.title, 'Formidable');\r\n\r\n await mbTestApi.addUrlToRecording(recording, {\r\n linkTypeId: LinkType.stream_for_free,\r\n text: 'https://open.spotify.com/track/' + spotify.track.Formidable.id\r\n });\r\n });\r\n\r\n it('add Spotify-ID', async () => {\r\n const recording = await mbTestApi.getRecording(mbid.recording.Formidable);\r\n\r\n const editNote = `Unit-test musicbrainz-api (${appUrl}), test augment recording with Spotify URL & ISRC`;\r\n await mbTestApi.addSpotifyIdToRecording(recording, spotify.track.Formidable.id, editNote);\r\n });\r\n\r\n it('add Spotify-ID to recording with ISRC', async () => {\r\n // https://test.musicbrainz.org/recording/a75b85bf-63dd-4fe1-8008-d15541b93bac\r\n const recording_id = 'a75b85bf-63dd-4fe1-8008-d15541b93bac';\r\n\r\n const recording = await mbTestApi.getRecording(recording_id);\r\n const editNote = `Unit-test musicbrainz-api (${appUrl}), test augment recording with Spotify URL & ISRC`;\r\n await mbTestApi.addSpotifyIdToRecording(recording, '3ZDO5YINwfoifRQ3ElshPM', editNote);\r\n });\r\n\r\n });\r\n\r\n describe('ISRC', () => {\r\n\r\n it('add ISRC', async () => {\r\n const recording = await mbTestApi.getRecording(mbid.recording.Formidable, ['isrcs']);\r\n assert.strictEqual(recording.id, mbid.recording.Formidable);\r\n assert.strictEqual(recording.title, 'Formidable');\r\n\r\n await mbTestApi.addIsrc(recording, 'BET671300161');\r\n });\r\n\r\n });\r\n\r\n /**\r\n * https://musicbrainz.org/doc/Development/XML_Web_Service/Version_2#ISRC_submission\r\n */\r\n describe('ISRC submission', () => {\r\n\r\n it('add ISRC', async () => {\r\n const xmlMedata = new XmlMetadata();\r\n const xmlRec = xmlMedata.pushRecording('94fb868b-9233-4f9e-966b-e8036bf7461e');\r\n xmlRec.isrcList.pushIsrc('GB5EM1801762');\r\n await mbTestApi.post('recording', xmlMedata);\r\n });\r\n\r\n });\r\n\r\n });\r\n\r\n});\r\n
|
|
5
|
+
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
|
|
6
|
+
<+>UTF-8
|
|
7
|
+
===================================================================
|
|
8
|
+
diff --git a/test/test-musicbrainz-api.ts b/test/test-musicbrainz-api.ts
|
|
9
|
+
--- a/test/test-musicbrainz-api.ts (revision 34904480bc8291aefe77a94593cf8a0ef1c85a91)
|
|
10
|
+
+++ b/test/test-musicbrainz-api.ts (date 1641463729365)
|
|
11
|
+
@@ -4,6 +4,7 @@
|
|
12
|
+
import * as mb from '../src/musicbrainz.types';
|
|
13
|
+
import * as fs from 'fs';
|
|
14
|
+
import * as path from 'path';
|
|
15
|
+
+import { IArtist } from '../lib/musicbrainz.types';
|
|
16
|
+
|
|
17
|
+
const packageInfo = require('../package.json');
|
|
18
|
+
|
|
19
|
+
@@ -298,6 +299,20 @@
|
|
20
|
+
assert.isAtLeast(result.releases.length, 1);
|
|
21
|
+
assert.equal(result.releases[0].id, mbid.release.RacineCarree[2]);
|
|
22
|
+
});
|
|
23
|
+
+
|
|
24
|
+
+ it('find release by barcode', async () => {
|
|
25
|
+
+ const result = await mbApi.searchRelease({barcode: 602537479870});
|
|
26
|
+
+ assert.isAtLeast(result.count, 1);
|
|
27
|
+
+ assert.isAtLeast(result.releases.length, 1);
|
|
28
|
+
+ assert.equal(result.releases[0].id, mbid.release.RacineCarree[2]);
|
|
29
|
+
+ });
|
|
30
|
+
+
|
|
31
|
+
+ it('find releases by artist', async () => {
|
|
32
|
+
+ const result = await mbApi.searchRelease({artist: 'eeb41a1e-4326-4d04-8c47-0f564ceecd68'});
|
|
33
|
+
+ assert.isAtLeast(result.count, 1);
|
|
34
|
+
+ assert.isAtLeast(result.releases.length, 1);
|
|
35
|
+
+ assert.equal(result.releases[0].id, mbid.release.RacineCarree[2]);
|
|
36
|
+
+ });
|
|
37
|
+
|
|
38
|
+
});
|
|
39
|
+
|
|
40
|
+
@@ -410,4 +425,18 @@
|
|
41
|
+
|
|
42
|
+
});
|
|
43
|
+
|
|
44
|
+
+ it('try something', async () => {
|
|
45
|
+
+ const artist_mbid = 'eeb41a1e-4326-4d04-8c47-0f564ceecd68';
|
|
46
|
+
+ const searchResult: IArtist = await mbApi.getArtist(artist_mbid, [
|
|
47
|
+
+ 'artist-rels',
|
|
48
|
+
+ 'releases',
|
|
49
|
+
+ 'recordings',
|
|
50
|
+
+ 'url-rels'
|
|
51
|
+
+ ]);
|
|
52
|
+
+
|
|
53
|
+
+ const result = await mbApi.searchRelease({artist: 'eeb41a1e-4326-4d04-8c47-0f564ceecd68'}, 25);
|
|
54
|
+
+
|
|
55
|
+
+ assert.isNotNull(result);
|
|
56
|
+
+ });
|
|
57
|
+
+
|
|
58
|
+
});
|
package/.idea/shelf/Uncommitted_changes_before_Update_at_6-1-2022_11_38__Default_Changelist_.xml
ADDED
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
<changelist name="Uncommitted_changes_before_Update_at_6-1-2022_11_38_[Default_Changelist]" date="1641465535745" recycled="true" deleted="true">
|
|
2
|
+
<option name="PATH" value="$PROJECT_DIR$/.idea/shelf/Uncommitted_changes_before_Update_at_6-1-2022_11_38_[Default_Changelist]/shelved.patch" />
|
|
3
|
+
<option name="DESCRIPTION" value="Uncommitted changes before Update at 6-1-2022 11:38 [Default Changelist]" />
|
|
4
|
+
</changelist>
|