Skip to main content

Notice

Please note that most of the software linked on this forum is likely to be safe to use. If you are unsure, feel free to ask in the relevant topics, or send a private message to an administrator or moderator. To help curb the problems of false positives, or in the event that you do find actual malware, you can contribute through the article linked here.
Topic: foo_discogs (Read 1372238 times) previous topic - next topic
0 Members and 2 Guests are viewing this topic.

 

foo_discogs

Reply #1751
Quote
Authorization Failed (401) [Is OAuth working?] - (url: http://api.discogs.com/database/search)


damn it I hate this bug..I also forgot how I once fixed it myself.. 1.55v

Quote
(skipped) Error: Authorization Failed (401) [Is OAuth working?] - (url: http://api.discogs.com/oauth/request_token)

[ESCAPE to close]


Maybe the issue is that the time is set wrongly on your computer? For some reason that seems to make OAuth setup fail....

foo_discogs

Reply #1752
First thanks for continuing the development of this plugin zoomorph 
I found some bugs, I hope you serve to improve it.
DISCOGS_ARTIST_ID, DISCOGS_ARTIST_NAME_VARIATIONS fields aren't written to the file.
Others fields like DISCOGS_ARTISTS_URLS, DISCOGS_ARTISTS_ALL_NAME_VARIATIONS, DISCOGS_ARTISTS_MEMBERS always leaves the fist song tag empty.
Two release i try "Amparanoia - La Vida Te Da" release_id 2485489 and "Amparanoia - Rebeldia Con Alegria" release_id 1240804 always crash foobar2000 when trying to write tags with this crash report
Code: [Select]
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 016C441Eh
Access violation, operation: read, address: 00000030h

Call path:
entry=>app_mainloop

Code bytes (016C441Eh):
016C43DEh:  73 01 89 46 04 89 46 08 FF 75 08 89 45 FC 89 46
016C43EEh:  0C E8 66 01 00 00 8B C6 E8 7B 1D 04 00 C2 04 00
016C43FEh:  55 8B EC 8B 45 08 56 8B F1 83 78 0C 00 76 05 8B
016C440Eh:  48 04 EB 05 B9 37 03 73 01 8B 06 6A FF 51 8B CE
016C441Eh:  FF 50 08 8B C6 5E 5D C2 04 00 6A 04 B8 6C D9 71
016C442Eh:  01 E8 74 1D 04 00 8B F1 89 75 F0 33 C9 C7 06 0C
016C443Eh:  03 73 01 89 4E 04 89 4E 08 8B 45 08 89 4D FC 89
016C444Eh:  4E 0C 39 48 0C 76 05 8B 40 04 EB 05 B8 37 03 73

Stack (0033F29Ch):
0033F27Ch:  016C6A88 00000002 188375E8 00000001
0033F28Ch:  0033F2A8 016C6AB5 00000002 1A292F40
0033F29Ch:  01730337 FFFFFFFF 00000010 0033F2D4
0033F2ACh:  016EE660 0EE16018 2015A77B 0ED75FA8
0033F2BCh:  01730337 0ED7602C 00000010 0033F38C
0033F2CCh:  0172342E 00000000 0033F398 016E7258
0033F2DCh:  0173030C 001F4510 00000026 00000015
0033F2ECh:  2015A75F 0ED75FA8 00000000 00000111
0033F2FCh:  7E97F000 1885F658 294F00AB 0033F338
0033F30Ch:  7E8EEA7A 001D1308 294F00AB 0173030C
0033F31Ch:  1A317F98 00000026 00000015 7EA74B7D
0033F32Ch:  7EAC1000 0ED75FA8 50010001 0033F358
0033F33Ch:  7EA7502F 00000004 00000001 0033F370
0033F34Ch:  7EAC1000 7EA71229 7EAC1000 0033F628
0033F35Ch:  7EA2C1DE 294F00AB 00010087 0033F3B8
0033F36Ch:  7E9FF348 0002007C 7BC3C6B6 0033F3A0
0033F37Ch:  7EAC1000 00000063 001000E6 0033F3B8
0033F38Ch:  0033F3CC 01721B7D 00000000 0033F3D8
0033F39Ch:  016E611E 7EB008A0 7E97F000 7E8E630D
0033F3ACh:  016E5F7A 2015A677 0ED75FA8 00000000

Registers:
EAX: 00000028, EBX: 0ED76000, ECX: 0EE16028, EDX: 00000000
ESI: 0EE16028, EDI: 188375E8, EBP: 0033F2A8, ESP: 0033F29C

Crash location:
Module: foo_discogs
Offset: 441Eh

Loaded modules:
explorerframe                    loaded at F6CB0000h - F6CC4000h
winepulse                        loaded at F71A0000h - F71C1000h
mmdevapi                         loaded at F71D0000h - F71E4000h
foo_unpack                       loaded at 03ED0000h - 03F1C000h
foo_dsp_dolbyhp                  loaded at 03D90000h - 03DB4000h
foo_jesus                        loaded at 03C60000h - 03C7A000h
foo_uie_lyrics3                  loaded at 03990000h - 03A45000h
foo_playcount                    loaded at 03840000h - 0387E000h
foo_uie_typefind                 loaded at 03700000h - 03730000h
foo_albumlist                    loaded at 03590000h - 035EB000h
foo_uie_albumlist                loaded at 03430000h - 03473000h
foo_dsp_fakegapless              loaded at 03400000h - 03421000h
foo_dsp_std                      loaded at 032B0000h - 032E7000h
foo_freedb2                      loaded at 03150000h - 031A0000h
foo_audioscrobbler               loaded at 03000000h - 03033000h
foo_cdda                         loaded at 02A50000h - 02AA1000h
foo_ui_std                       loaded at 02830000h - 0293E000h
foo_random_pools                 loaded at 027F0000h - 02828000h
foo_rgscan                       loaded at 02680000h - 026DF000h
foo_uie_console                  loaded at 02550000h - 0256A000h
foo_textdisplay                  loaded at 023F0000h - 0243B000h
foo_dsp_eq                       loaded at 022A0000h - 022D7000h
foo_simplaylist                  loaded at 02040000h - 0218C000h
usp10                            loaded at F71F0000h - F7227000h
mpr                              loaded at F7230000h - F724E000h
wininet                          loaded at F7260000h - F72C6000h
urlmon                           loaded at F72D0000h - F7362000h
foo_ui_columns                   loaded at 01EA0000h - 02033000h
foo_musicbrainz                  loaded at 01D30000h - 01D8B000h
msimg32                          loaded at F7370000h - F7376000h
foo_simplaylist_manager          loaded at 01B40000h - 01C18000h
foo_run                          loaded at 019D0000h - 01A2F000h
avutil-fb2k-54                   loaded at 6B540000h - 6B5CA000h
avcodec-fb2k-56                  loaded at 669C0000h - 66B9E000h
foo_input_std                    loaded at 01760000h - 018BC000h
foo_discogs                      loaded at 016C0000h - 01756000h
foo_infospect                    loaded at 01350000h - 01387000h
foo_stop_after_queue             loaded at 003D0000h - 003E8000h
foo_fileops                      loaded at 010E0000h - 0112E000h
foo_runcmd                       loaded at 00F90000h - 00FC3000h
foo_dsp_effect                   loaded at 00F40000h - 00F85000h
foo_converter                    loaded at 00340000h - 003C8000h
winex11                          loaded at 7DA10000h - 7DA95000h
imm32                            loaded at 7DAA0000h - 7DAB9000h
oleaut32                         loaded at 7DCC0000h - 7DDE2000h
jsproxy                          loaded at 7E110000h - 7E124000h
winhttp                          loaded at 7DDF0000h - 7DE1F000h
gdiplus                          loaded at 4EC50000h - 4EDFB000h
ws2_32                           loaded at 7DE30000h - 7DE58000h
iphlpapi                         loaded at 7DE60000h - 7DE7F000h
netapi32                         loaded at 7DE90000h - 7DEAE000h
secur32                          loaded at 7DEB0000h - 7DEDF000h
crypt32                          loaded at 7DEF0000h - 7DFAB000h
winspool                         loaded at 7DFB0000h - 7DFE9000h
comdlg32                         loaded at 7DFF0000h - 7E0CF000h
psapi                            loaded at 7E0D0000h - 7E0E3000h
dbghelp                          loaded at 7E130000h - 7E189000h
imagehlp                         loaded at 7E190000h - 7E1A3000h
shared                           loaded at 10000000h - 1002D000h
msvcrt                           loaded at 7E1C0000h - 7E25A000h
zlib1                            loaded at 62E80000h - 62E9F000h
shell32                          loaded at 7E290000h - 7E4BF000h
uxtheme                          loaded at 7E4D0000h - 7E4F6000h
shlwapi                          loaded at 7E500000h - 7E56D000h
dsound                           loaded at 7E570000h - 7E5B8000h
msacm32                          loaded at 7E5C0000h - 7E5E3000h
rpcrt4                           loaded at 7E5F0000h - 7E661000h
ole32                            loaded at 7E680000h - 7E793000h
winmm                            loaded at 7E7A0000h - 7E849000h
version                          loaded at 7EFF0000h - 7F000000h
advapi32                         loaded at 7E860000h - 7E8BF000h
gdi32                            loaded at 7E8D0000h - 7E9DA000h
user32                           loaded at 7E9F0000h - 7EB29000h
comctl32                         loaded at 7EB30000h - 7EC26000h
kernel32                         loaded at 7B810000h - 7BA5F000h
ntdll                            loaded at 7BC10000h - 7BCE6000h
foobar2000                       loaded at 00400000h - 005CD000h

Stack dump analysis:
Address: 01730337h (foo_discogs+70337h)
Address: 016EE660h (foo_discogs+2E660h)
Address: 01730337h (foo_discogs+70337h)
Address: 0172342Eh (foo_discogs+6342Eh)
Address: 016E7258h (foo_discogs+27258h)
Address: 0173030Ch (foo_discogs+7030Ch)
Address: 7E97F000h (gdi32+AF000h)
Address: 7E8EEA7Ah (gdi32+1EA7Ah)
Address: 0173030Ch (foo_discogs+7030Ch)
Address: 7EA74B7Dh (user32+84B7Dh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA7502Fh (user32+8502Fh), symbol: "GetWindowLongW" (+1Fh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA71229h (user32+81229h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA2C1DEh (user32+3C1DEh), symbol: "HOOKPROC_wrapper" (+A7Eh)
Address: 7E9FF348h (user32+F348h)
Address: 7BC3C6B6h (ntdll+2C6B6h), symbol: "RtlEnterCriticalSection" (+16h)
Address: 7EAC1000h (user32+D1000h)
Address: 01721B7Dh (foo_discogs+61B7Dh)
Address: 016E611Eh (foo_discogs+2611Eh)
Address: 7EB008A0h (user32+1108A0h)
Address: 7E97F000h (gdi32+AF000h)
Address: 7E8E630Dh (gdi32+1630Dh)
Address: 016E5F7Ah (foo_discogs+25F7Ah)
Address: F75D12FFh (libpthread.so.0+C2FFh), symbol: "pthread_sigmask" (+3Fh)
Address: 017219F2h (foo_discogs+619F2h)
Address: 016C658Eh (foo_discogs+658Eh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA820BAh (user32+920BAh), symbol: "WINPROC_wrapper" (+1Ah)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA8284Bh (user32+9284Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA82819h (user32+92819h)
Address: 7E9FD579h (user32+D579h)
Address: 7EA711DEh (user32+811DEh)
Address: 7EB008A0h (user32+1108A0h)
Address: 7EA8280Bh (user32+9280Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA850C3h (user32+950C3h)
Address: 7EA7120Eh (user32+8120Eh)
Address: 7E9FD801h (user32+D801h)
Address: 7EB008A0h (user32+1108A0h)
Address: 7EA8507Bh (user32+9507Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA16904h (user32+26904h), symbol: "DefDlgProcW" (+74h)
Address: 7EA168EBh (user32+268EBh), symbol: "DefDlgProcW" (+5Bh)
Address: 7EA168A6h (user32+268A6h), symbol: "DefDlgProcW" (+16h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA820BAh (user32+920BAh), symbol: "WINPROC_wrapper" (+1Ah)
Address: 7EA820BAh (user32+920BAh), symbol: "WINPROC_wrapper" (+1Ah)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA8272Ah (user32+9272Ah)
Address: 7EA16890h (user32+26890h), symbol: "DefDlgProcW" (+0h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA826FCh (user32+926FCh)
Address: 7EA7262Dh (user32+8262Dh)
Address: 7BC3C7A6h (ntdll+2C7A6h), symbol: "RtlLeaveCriticalSection" (+16h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA826EBh (user32+926EBh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA84C69h (user32+94C69h)
Address: 7EA16890h (user32+26890h), symbol: "DefDlgProcW" (+0h)
Address: 7EA84C25h (user32+94C25h)
Address: 7EB00A58h (user32+110A58h)
Address: 7EA711C9h (user32+811C9h)
Address: 7BC3C6B6h (ntdll+2C6B6h), symbol: "RtlEnterCriticalSection" (+16h)
Address: 7EA84B8Bh (user32+94B8Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA47FC0h (user32+57FC0h)
Address: 7BC3C7A6h (ntdll+2C7A6h), symbol: "RtlLeaveCriticalSection" (+16h)
Address: 7EA711C9h (user32+811C9h)
Address: 7EA7262Dh (user32+8262Dh)
Address: 7EA748A6h (user32+848A6h), symbol: "GetWindowThreadProcessId" (+16h)
Address: 7EA628FBh (user32+728FBh)
Address: 7EA4F37Ch (user32+5F37Ch)
Address: 7EA75143h (user32+85143h), symbol: "GetParent" (+63h)
Address: 7EA2E062h (user32+3E062h), symbol: "mouse_event" (+62h)
Address: 7EA2E062h (user32+3E062h), symbol: "mouse_event" (+62h)
Address: 7EA4F1BFh (user32+5F1BFh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA4F60Dh (user32+5F60Dh), symbol: "SendMessageW" (+5Dh)
Address: 7EA2E015h (user32+3E015h), symbol: "mouse_event" (+15h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA750F6h (user32+850F6h), symbol: "GetParent" (+16h)
Address: 7E9FEFCCh (user32+EFCCh)
Address: 7E9FEFCCh (user32+EFCCh)
Address: 7BCC9000h (ntdll+B9000h)
Address: 7BC50522h (ntdll+40522h), symbol: "RtlAllocateHeap" (+7B2h)
Address: 7BC50522h (ntdll+40522h), symbol: "RtlAllocateHeap" (+7B2h)
Address: 7BC4FDB7h (ntdll+3FDB7h), symbol: "RtlAllocateHeap" (+47h)
Address: 7BCC9000h (ntdll+B9000h)
Address: 7E9FEDDBh (user32+EDDBh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA82140h (user32+92140h), symbol: "WINPROC_wrapper" (+A0h)
Address: 7EA82124h (user32+92124h), symbol: "WINPROC_wrapper" (+84h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA820BAh (user32+920BAh), symbol: "WINPROC_wrapper" (+1Ah)
Address: 7EA820BAh (user32+920BAh), symbol: "WINPROC_wrapper" (+1Ah)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA8272Ah (user32+9272Ah)
Address: 7EA82110h (user32+92110h), symbol: "WINPROC_wrapper" (+70h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA826FCh (user32+926FCh)
Address: 7EA7262Dh (user32+8262Dh)
Address: 7BC3C7A6h (ntdll+2C7A6h), symbol: "RtlLeaveCriticalSection" (+16h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA826EBh (user32+926EBh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA84C69h (user32+94C69h)
Address: 7EA82110h (user32+92110h), symbol: "WINPROC_wrapper" (+70h)
Address: 7EA84C25h (user32+94C25h)
Address: 7EB008A0h (user32+1108A0h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EB00A40h (user32+110A40h)
Address: 7EA711C9h (user32+811C9h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA84B8Bh (user32+94B8Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA4A237h (user32+5A237h), symbol: "DispatchMessageW" (+97h)
Address: 7EA7120Eh (user32+8120Eh)
Address: 7EB008A0h (user32+1108A0h)
Address: 7EA711F9h (user32+811F9h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA74C87h (user32+84C87h)
Address: 7BC4E60Dh (ntdll+3E60Dh)
Address: 7BC4F506h (ntdll+3F506h), symbol: "RtlFreeHeap" (+D6h)
Address: 7BC4F446h (ntdll+3F446h), symbol: "RtlFreeHeap" (+16h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA75551h (user32+85551h), symbol: "IsChild" (+B1h)
Address: 7E9FD7ADh (user32+D7ADh)
Address: 7EA74B7Dh (user32+84B7Dh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA51446h (user32+61446h), symbol: "TranslateMessage" (+16h)
Address: 7EA4A1BBh (user32+5A1BBh), symbol: "DispatchMessageW" (+1Bh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA1CC35h (user32+2CC35h), symbol: "IsDialogMessageW" (+145h)
Address: 7EA1CC35h (user32+2CC35h), symbol: "IsDialogMessageW" (+145h)
Address: 7E9FD801h (user32+D801h)
Address: 7EB00920h (user32+110920h)
Address: 7EA711C9h (user32+811C9h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA829BBh (user32+929BBh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA480EBh (user32+580EBh)
Address: 7E9FD801h (user32+D801h)
Address: 7EA48054h (user32+58054h)
Address: 7EB008A0h (user32+1108A0h)
Address: 7EA711F9h (user32+811F9h)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA74C87h (user32+84C87h)
Address: F74D331Ch (libc.so.6+CF31Ch), symbol: "sched_yield" (+Ch)
Address: 7BC847AFh (ntdll+747AFh), symbol: "NtYieldExecution" (+1Fh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA82A30h (user32+92A30h)
Address: 7E9FD98Dh (user32+D98Dh)
Address: 7EA82A30h (user32+92A30h)
Address: 7EB00920h (user32+110920h)
Address: 7EA829BBh (user32+929BBh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA4B06Dh (user32+5B06Dh)
Address: 7EAC1000h (user32+D1000h)
Address: 7EA4E9D2h (user32+5E9D2h), symbol: "GetMessageW" (+142h)
Address: 7EA1CB06h (user32+2CB06h), symbol: "IsDialogMessageW" (+16h)
Address: 7EA1CB06h (user32+2CB06h), symbol: "IsDialogMessageW" (+16h)
Address: 0045F693h (foobar2000+5F693h)
Address: 0045F693h (foobar2000+5F693h)
Address: 7EA76F20h (user32+86F20h), symbol: "DestroyWindow" (+0h)
Address: 00524659h (foobar2000+124659h)
Address: 0045F70Ah (foobar2000+5F70Ah)
Address: 0046018Ah (foobar2000+6018Ah)
Address: 005134B8h (foobar2000+1134B8h)
Address: 7B8B6000h (kernel32+A6000h)
Address: 00548AB0h (foobar2000+148AB0h)
Address: 0054C738h (foobar2000+14C738h)
Address: 0054C738h (foobar2000+14C738h)
Address: 00557204h (foobar2000+157204h)
Address: 7BC3C7A6h (ntdll+2C7A6h), symbol: "RtlLeaveCriticalSection" (+16h)
Address: 7BCC9000h (ntdll+B9000h)
Address: 0051899Bh (foobar2000+11899Bh)
Address: 00515D10h (foobar2000+115D10h)
Address: 0051899Bh (foobar2000+11899Bh)
Address: 00516505h (foobar2000+116505h)
Address: 005134B8h (foobar2000+1134B8h)
Address: 10002846h (shared+2846h)
Address: 0054CA88h (foobar2000+14CA88h)
Address: 005134B8h (foobar2000+1134B8h)
Address: 00531D5Dh (foobar2000+131D5Dh)
Address: 004603AEh (foobar2000+603AEh)
Address: 00400000h (foobar2000+0h)
Address: 005134B8h (foobar2000+1134B8h)
Address: 7B8B6000h (kernel32+A6000h)
Address: 005156B6h (foobar2000+1156B6h)
Address: 005116A6h (foobar2000+1116A6h)
Address: 005116A0h (foobar2000+1116A0h)
Address: 0053BB54h (foobar2000+13BB54h)
Address: 0053BB58h (foobar2000+13BB58h)
Address: 7B8B6000h (kernel32+A6000h)
Address: 005389C3h (foobar2000+1389C3h)
Address: 00515D10h (foobar2000+115D10h)
Address: 005116A0h (foobar2000+1116A0h)
Address: 00532057h (foobar2000+132057h)
Address: 00513465h (foobar2000+113465h)
Address: 00400000h (foobar2000+0h)
Address: 005134B8h (foobar2000+1134B8h)
Address: 7B8B6000h (kernel32+A6000h)
Address: 00515D10h (foobar2000+115D10h)
Address: 7B85CEDCh (kernel32+4CEDCh), symbol: "call_process_entry" (+Ch)
Address: 7B8B6000h (kernel32+A6000h)
Address: 005134B8h (foobar2000+1134B8h)
Address: 7B85DF2Ah (kernel32+4DF2Ah)
Address: 005134B8h (foobar2000+1134B8h)
Address: 7B85DEE6h (kernel32+4DEE6h)
Address: 7BCC9000h (ntdll+B9000h)
Address: 7BC7CEE0h (ntdll+6CEE0h), symbol: "call_thread_func_wrapper" (+Ch)
Address: 7BC7CEE0h (ntdll+6CEE0h), symbol: "call_thread_func_wrapper" (+Ch)
Address: 7BCC9000h (ntdll+B9000h)
Address: 7BC7FE1Fh (ntdll+6FE1Fh)
Address: 7B85DED0h (kernel32+4DED0h), symbol: "ExitProcess" (+FF0h)
Address: 7B85DED0h (kernel32+4DED0h), symbol: "ExitProcess" (+FF0h)
Address: 7BC95E80h (ntdll+85E80h)
Address: 7BC95E80h (ntdll+85E80h)
Address: 7B83AFA0h (kernel32+2AFA0h), symbol: "UnhandledExceptionFilter" (+0h)
Address: 7BCC9000h (ntdll+B9000h)
Address: 7BC7FD59h (ntdll+6FD59h), symbol: "call_thread_func" (+9h)
Address: F77AB000h (libwine.so.1+1A3000h)
Address: 7BC7CEBEh (ntdll+6CEBEh), symbol: "RtlRaiseException" (+22h)
Address: 7B85DED0h (kernel32+4DED0h), symbol: "ExitProcess" (+FF0h)
Address: F77AB000h (libwine.so.1+1A3000h)
Address: 7BC53577h (ntdll+43577h), symbol: "call_dll_entry_point" (+3D7h)
Address: 7B85DED0h (kernel32+4DED0h), symbol: "ExitProcess" (+FF0h)
Address: F761133Dh (libwine.so.1+933Dh), symbol: "wine_call_on_stack" (+1Dh)
Address: 7B85DED0h (kernel32+4DED0h), symbol: "ExitProcess" (+FF0h)
Address: 10000000h (shared+0h)

Environment:
App: foobar2000 v1.3.8
UI: Default User Interface 0.9.5

Components:
Core (2015-03-26 07:45:52 UTC)
    foobar2000 core 1.3.8
foo_albumlist.dll (2015-03-26 07:42:40 UTC)
    Album List 4.5
foo_audioscrobbler.dll (2014-08-27 05:56:30 UTC)
    Audioscrobbler 1.4.7
foo_cdda.dll (2015-03-26 07:42:18 UTC)
    CD Audio Decoder 3.0
foo_converter.dll (2015-03-26 07:42:24 UTC)
    Converter 1.5
foo_discogs.dll (2015-05-13 20:59:29 UTC)
    Discogs Tagger 1.52
foo_dsp_dolbyhp.dll (2014-08-31 14:34:22 UTC)
    Dolby Headphone Wrapper 1.4.1
foo_dsp_effect.dll (2015-04-09 13:44:37 UTC)
    Effect DSP 0.16
foo_dsp_eq.dll (2015-03-07 10:19:44 UTC)
    Equalizer 1.0
foo_dsp_fakegapless.dll (2015-02-15 03:06:34 UTC)
    Fake Gapless DSP 0.3
foo_dsp_std.dll (2015-03-26 07:42:26 UTC)
    Standard DSP Array 1.3.1
foo_fileops.dll (2015-03-07 10:19:10 UTC)
    File Operations 2.2.1
foo_freedb2.dll (2015-03-07 10:19:36 UTC)
    Online Tagger 0.7
foo_infospect.dll (2014-08-27 05:56:42 UTC)
    Infospect 1.0.3
foo_input_std.dll (2015-03-26 07:45:52 UTC)
    Standard Input Array 1.0
foo_jesus.dll (2014-08-31 14:34:50 UTC)
    Autosave & Autobackup 10
foo_musicbrainz.dll (2014-07-30 13:53:04 UTC)
    MusicBrainz Tagger 0.3
foo_playcount.dll (2014-08-27 05:56:52 UTC)
    Playback Statistics 3.0.2
foo_random_pools.dll (2015-04-09 13:44:37 UTC)
    Random Pools 0.1.5
foo_rgscan.dll (2015-03-26 07:43:12 UTC)
    ReplayGain Scanner 2.2.1
foo_run.dll (2014-09-07 23:08:33 UTC)
    Run services 0.3.7
foo_runcmd.dll (2014-09-07 23:08:39 UTC)
    Run Command 1.1
foo_simplaylist.dll (2014-08-31 13:34:44 UTC)
    SimPlaylist 1.0
foo_simplaylist_manager.dll (2014-08-31 13:34:34 UTC)
    SimPlaylist Manager 1.0
foo_stop_after_queue.dll (2014-08-31 14:35:24 UTC)
    Stop After Queue 0.1
foo_textdisplay.dll (2014-08-27 05:57:06 UTC)
    Text Display UI Element 1.1 beta 1
foo_ui_columns.dll (2015-04-25 11:07:44 UTC)
    Columns UI 0.3.8.9
foo_ui_std.dll (2015-03-26 07:45:52 UTC)
    Default User Interface 0.9.5
foo_uie_albumlist.dll (2009-06-13 22:49:19 UTC)
    Album list panel 0.3.5
foo_uie_console.dll (2009-08-29 16:06:24 UTC)
    Console panel 0.4
foo_uie_lyrics3.dll (2015-02-22 04:12:21 UTC)
    Lyric Show Panel 3 0.4.5
foo_uie_typefind.dll (2007-10-22 21:30:44 UTC)
    Typefind 0.2 beta 2
foo_unpack.dll (2015-03-26 07:42:42 UTC)
    ZIP/GZIP/RAR Reader 1.7.1

Recent events:
Loading DLL: C:\users\xxxx\Application Data\foobar2000\user-components\foo_jesus\foo_jesus.dll
Loading DLL: C:\users\xxxx\Application Data\foobar2000\user-components\foo_dsp_dolbyhp\foo_dsp_dolbyhp.dll
Loading DLL: C:\Program Files\foobar2000\components\foo_unpack.dll
Components loaded in: 0:00.145177
Pre config read
Configuration read in: 0:00.023867
Starting playlist loading
Watching: C:\users\xxxx\Mi música
RegisterShellHookWindow failure
Album List refreshed in: 0:01.683754
User Interface initialized in: 0:02.369086
Processing commandline
initquit::init entry
Conf3 already initialized.
initquit::init exit
Startup time : 0:06.478670
Properties dialog refresh: 0:00.003547
Properties dialog display refresh: 0:00.025342
Autobackup: Backed up 35 items to autobackup.20150517-035536.zip
Properties dialog refresh: 0:00.007766
Properties dialog display refresh: 0:00.017723
Properties dialog refresh: 0:00.001915
Properties dialog display refresh: 0:00.013885
Properties dialog refresh: 0:00.002939
Properties dialog display refresh: 0:00.017823
foo_discogs: http://api.discogs.com/database/search?oauth_consumer_key=kQFLKuHXrEsVfZTDvOdz&oauth_nonce=14318278903e78&oauth_signature=v0Q4g1nIgcNYqJ72zdd2G8kwiY0%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1431827890&oauth_token=xUpfpdlCrULArpknjAjrSXTiCjRxHyYfjCxKUZKX&oauth_version=1.0&per_page=100&q=Amparanoia&type=artist
foo_discogs: http://api.discogs.com/artists/588026?oauth_consumer_key=kQFLKuHXrEsVfZTDvOdz&oauth_nonce=143182789029&oauth_signature=d4blITKfowtPxEygfTwH%2FfeEHn4%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1431827890&oauth_token=xUpfpdlCrULArpknjAjrSXTiCjRxHyYfjCxKUZKX&oauth_version=1.0
foo_discogs: http://api.discogs.com/artists/588026/releases?oauth_consumer_key=kQFLKuHXrEsVfZTDvOdz&oauth_nonce=14318278914823&oauth_signature=cWPK9UWAZAjrv6jEZWilGC5O58c%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1431827891&oauth_token=xUpfpdlCrULArpknjAjrSXTiCjRxHyYfjCxKUZKX&oauth_version=1.0&per_page=100
foo_discogs: http://api.discogs.com/releases/1240804?oauth_consumer_key=kQFLKuHXrEsVfZTDvOdz&oauth_nonce=143182799829&oauth_signature=fXzAqM42T7gyx3ris3sY7m7QbBY%3D&oauth_signature_method=HMAC-SHA1&oauth_timestamp=1431827998&oauth_token=xUpfpdlCrULArpknjAjrSXTiCjRxHyYfjCxKUZKX&oauth_version=1.0
foo_discogs: http://api-img.discogs.com/oh2mv62kB25dIAxquD4Tt-ra9JY=/fit-in/150x150/filters:strip_icc():format(jpeg):mode_rgb()/discogs-images/R-1240804-1203090787.jpeg.jpg


Machine specifications:
OS: wine-1.7.43, on: Linux / 3.19.0-17-generic
CPU: AMD Athlon(tm) 64 X2 Dual Core Processor 4000+, features: 3DNow!ex MMX SSE SSE2 SSE3
CPU threads: 2
Audio: Pulseaudio

And last one I can see, In tag mapping DISCOGS_RELEASE_CREDITS field "$zip($join(%<<RELEASE_CREDITS_ROLES>>%),' - ',$join(%<<RELEASEK_CREDITS_ARTISTS_NAME>>%))" must be RELEASE_CREDITS_ARTISTS_NAME, right?

foo_discogs

Reply #1753
Quote
Authorization Failed (401) [Is OAuth working?] - (url: http://api.discogs.com/database/search)


damn it I hate this bug..I also forgot how I once fixed it myself.. 1.55v

Quote
(skipped) Error: Authorization Failed (401) [Is OAuth working?] - (url: http://api.discogs.com/oauth/request_token)

[ESCAPE to close]


Maybe the issue is that the time is set wrongly on your computer? For some reason that seems to make OAuth setup fail....


Oh yes, I noticed the time was off then I setup it correctly and it worked. Wonder why it causes that if the time is "wrong"

foo_discogs

Reply #1754
I suppose if the letters are in capitals they could be treated as normal tracks, maybe?
That should work in this case.
Parsing the track positions isn't an exact science....
I believe horror is more accurate then science to describe track parsing ;-).

Maybe for hidden tracks it would make sense to have the option to not have the tags 'merged' with [+n hidden], for those who have cut the tracks into multiple files.


Seconded. That would be VERY nice

foo_discogs

Reply #1755
First thanks for continuing the development of this plugin zoomorph 
I found some bugs, I hope you serve to improve it.
DISCOGS_ARTIST_ID, DISCOGS_ARTIST_NAME_VARIATIONS fields aren't written to the file.
Others fields like DISCOGS_ARTISTS_URLS, DISCOGS_ARTISTS_ALL_NAME_VARIATIONS, DISCOGS_ARTISTS_MEMBERS always leaves the fist song tag empty.
Two release i try "Amparanoia - La Vida Te Da" release_id 2485489 and "Amparanoia - Rebeldia Con Alegria" release_id 1240804 always crash foobar2000 when trying to write tags with this crash report
And last one I can see, In tag mapping DISCOGS_RELEASE_CREDITS field "$zip($join(%<<RELEASE_CREDITS_ROLES>>%),' - ',$join(%<<RELEASEK_CREDITS_ARTISTS_NAME>>%))" must be RELEASE_CREDITS_ARTISTS_NAME, right?

Thank you for the reports! All of those bugs should be fixed in this build:

https://www.sendspace.com/file/9dm2vv

foo_discogs

Reply #1756
Quote
Thank you for the reports! All of those bugs should be fixed in this build:

It does!!! 
Great job, fast and efficient 

foo_discogs

Reply #1757
Another build with some additional fixes:
https://www.sendspace.com/file/uju462

Here are some examples using the tag formatting strings....

Start track numbers from 1 for each disc (default):
$num(%TRACK_DISC_TRACK_NUMBER%,2)

Do not start track numbers from 1 for each disc:
$num(%TRACK_NUMBER%,2)

Use master release date instead of release date, if applicable:
$if2(%MASTER_RELEASE_YEAR%,%RELEASE_YEAR%)

Replace "Various" with "VA" in album artist:
$join($multi_replace(%<RELEASE_ARTISTS_NAME>%,'Various','VA'),$multi_pad(%<RELEASE_ARTISTS_JOIN>%,' '))

Calculate percentage of track names from master release that exactly match track names from release:
$puts(a,$multi_count($put(x,$contains(%<RELEASE_TRACKS_TITLE>%,%<MASTER_RELEASE_TRACKS_TITLE>%))))$puts(b,$multi_length($get(x)))$div($add($mul($get(a),100),$div($get(b),2)),$get(b))'%'

If there's anything that can't be done that you want (requires different functions or fields to be defined), feel free to request it.

foo_discogs

Reply #1758
It would be cool if I could extract info for LYRICIST (Lyrics By), COMPOSER (Written-By, Written By, Composed By, Music By), CONDUCTOR (Conductor, Arranged By), PRODUCER (Producer, Co-producer) and PERFORMER (Performer, Recorded By) from DISCOGS_TRACK_CREDITS to independent tags.Like DISCOGS_CREDIT_FEATURING and DISCOGS_CREDIT_VOCALS tags.
Also include Mixed By in REMIXED_BY

foo_discogs

Reply #1759
It would be cool if I could extract info for LYRICIST (Lyrics By), COMPOSER (Written-By, Written By, Composed By, Music By), CONDUCTOR (Conductor, Arranged By), PRODUCER (Producer, Co-producer) and PERFORMER (Performer, Recorded By) from DISCOGS_TRACK_CREDITS to independent tags.Like DISCOGS_CREDIT_FEATURING and DISCOGS_CREDIT_VOCALS tags.
Also include Mixed By in REMIXED_BY

Thanks for the challenge.

Update: https://www.sendspace.com/file/i0fzos
- Fixed how those credit tags were defined. (Note: they still don't use the "join" field for multiple names, which they probably should.)
- Support more than 2 arguments to $multi_or().
- Allow deeper array params in $multi_if() and $multi_or().

Here is how the DISCOGS_CREDIT_FEATURING tag is (now) defined:
$multi_if($multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Featuring'),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

You can replace "Featuring" with any other role that you want, to make a similar tag of your own.

If you want to check multiple roles, you can use $multi_or() like so:
$multi_if($multi_or($multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Written-By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Written By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Composed By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Music By')),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

Or you can use this, which is shorter:
$multi_if($multi_any($contains(%<<TRACK_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

foo_discogs

Reply #1760
It would be cool if I could extract info for LYRICIST (Lyrics By), COMPOSER (Written-By, Written By, Composed By, Music By), CONDUCTOR (Conductor, Arranged By), PRODUCER (Producer, Co-producer) and PERFORMER (Performer, Recorded By) from DISCOGS_TRACK_CREDITS to independent tags.Like DISCOGS_CREDIT_FEATURING and DISCOGS_CREDIT_VOCALS tags.
Also include Mixed By in REMIXED_BY

Thanks for the challenge.

Update: https://www.sendspace.com/file/i0fzos
- Fixed how those credit tags were defined. (Note: they still don't use the "join" field for multiple names, which they probably should.)
- Support more than 2 arguments to $multi_or().
- Allow deeper array params in $multi_if() and $multi_or().

Here is how the DISCOGS_CREDIT_FEATURING tag is (now) defined:
$multi_if($multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Featuring'),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

You can replace "Featuring" with any other role that you want, to make a similar tag of your own.

If you want to check multiple roles, you can use $multi_or() like so:
$multi_if($multi_or($multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Written-By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Written By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Composed By'),$multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Music By')),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

Or you can use this, which is shorter:
$multi_if($multi_any($contains(%<<TRACK_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%),)

I get this strange result using code like this: $if(%CONDUCTOR%,'Conducted by '%CONDUCTOR%,), $if(%DISCOGS_CREDIT_FEATURING%,'Featuring '%DISCOGS_CREDIT_FEATURING%,),etc... for columns display.<DISCOGS_RELEASE_ID> : 6550679

It seems to write the tag even when it should be empty.
Similar behavior occurs with DISCOGS_FORMAT when release is only CD

foo_discogs

Reply #1761
Hi paregistrase,

Interesting. I don't have that problem when using the m-TAGS component (it must filter out empty tags), so I missed it.

New build: https://www.sendspace.com/file/limoil

Updates:
- Do not write empty tag values. (Remove them, instead.) -- fixes your problem
- Parse release credits that are for specific tracks (multiple or a range of tracks) as track credits instead of release credits.
- Update the default vocal/featuring/remix credits tags to support the "join" field if it's ever defined (couldn't find any examples to test where it was used).
- Update the default vocal/featuring/remix credits tags to also include credits defined at the release level.

Sadly, the formatting strings for pulling out these credits are getting quite long and ugly. Perhaps I can define better functions to shorten them....

This gathers all "Written-By" for the track, from both track or release level credits:

$extend($flatten($multi_if($multi_any($multi_strcmp(%<<TRACK_CREDITS_ROLES>>%,'Written-By')),$multi_if(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,' ')),%<<TRACK_CREDITS_ARTISTS_NAME>>%),)),$flatten($multi_if($multi_any($multi_strcmp(%<<RELEASE_CREDITS_ROLES>>%,'Written-By')),$multi_if(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,$join(%<<RELEASE_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,' ')),%<<RELEASE_CREDITS_ARTISTS_NAME>>%),)))

Here's a string analogous to above that should gather "Written-By", "Written By", "Composed By", and "Music By":

$extend($flatten($multi_if($multi_any($contains(%<<TRACK_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,' ')),%<<TRACK_CREDITS_ARTISTS_NAME>>%)),$flatten($multi_if($multi_any($contains(%<<RELEASE_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,$join(%<<RELEASE_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,' ')),%<<RELEASE_CREDITS_ARTISTS_NAME>>%)))


Edit: Added $sextend() function (shallow version of extend) and shortened the above to this:

$flatten($multi_if($multi_any($multi_strcmp($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),'Written-By')),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

$flatten($multi_if($multi_any($contains($sextend(%<<RELEASE_CREDITS_ROLES>>%,%<<TRACK_CREDITS_ROLES>>%),$append('Written-By','Written By','Composed By','Music By'))),$multi_if($put(aj,$sextend(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,%<<TRACK_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<RELEASE_CREDITS_ARTISTS_NAME>>%,%<<TRACK_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

foo_discogs

Reply #1762
Here's a string analogous to above that should gather "Written-By", "Written By", "Composed By", and "Music By":

$extend($flatten($multi_if($multi_any($contains(%<<TRACK_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,' ')),%<<TRACK_CREDITS_ARTISTS_NAME>>%)),$flatten($multi_if($multi_any($contains(%<<RELEASE_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,$join(%<<RELEASE_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,' ')),%<<RELEASE_CREDITS_ARTISTS_NAME>>%)))


Edit: Added $sextend() function (shallow version of extend) and shortened the above to this:

$flatten($multi_if($multi_any($multi_strcmp($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),'Written-By')),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))


Hi zoomorph,

I am also very interested in this new/extended plugin, so I am testing a lot with it now.
Your above mentioned multi-selection for Written-By, Written By, ... actually doesn't work here in my implementation. Did you try this one out?

How would it look like with the new sextend you mentioned later, I tried it this way :
$flatten($multi_if($multi_any($contains($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),$append('Producer','Arranged By','Recorded By')),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

But this also doesn't work, also like the long version, it seems maybe something wrong with contains or append?!??

This one works, but there we have only one string to compare which is not ideal :

$flatten($multi_if($multi_any($multi_strcmp($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),'Producer')),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

Would appreciate some feedback

Thanks!

foo_discogs

Reply #1763
Hi Hydroc,

You're right... my above string only worked by accident on the release I was testing, sorry. Please try this fix:
https://www.sendspace.com/file/qr0yjw

As you can see, I'm still working out some details of the implementation of the arrays feature. It gets quite tricky when dealing arrays nested to arbitrary levels. The various operations performed between arrays only make sense in a limited number of conditions.

foo_discogs

Reply #1764
I tried this

$extend($flatten($multi_if($multi_any($contains(%<<TRACK_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,' ')),%<<TRACK_CREDITS_ARTISTS_NAME>>%)),$flatten($multi_if($multi_any($contains(%<<RELEASE_CREDITS_ROLES>>%,$append('Written-By','Written By','Composed By','Music By'))),$multi_if(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,$join(%<<RELEASE_CREDITS_ARTISTS_NAME>>%,$multi_pad(%<<RELEASE_CREDITS_ARTISTS_JOIN>>%,' ')),%<<RELEASE_CREDITS_ARTISTS_NAME>>%)))

and this

$flatten($multi_if($multi_any($contains($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter')),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

Both are not working...

foo_discogs

Reply #1765
Hydroc,

In the second one, you're missing a single closing parenthesis after "'Songwriter'))".

Try this instead...
$flatten($multi_if($multi_any($contains($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter'))),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

foo_discogs

Reply #1766
Now this leads to a nice error

It seems I can't upload pictures here?!?!?

So I copy it :

(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\01 - Afriki.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\02 - Jah Houphouet.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\03 - Apartheid Is Nazism.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\04 - Idjidja.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\05 - Sahel.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\06 - Sebe Allah Y'e.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\07 - Kiti.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\08 - Come Back Jesus.flac
(skipped) Error: Error writing tag TEST_COMPOSER [Corrupted array string: missing start byte] for file  E:\FLAC Rips\Alpha Blondy - Apartheid Is Nazism\09 - Djinamory.flac

[ESCAPE to close]

I also counted the parenthesis, they were right before, one more is one too much

foo_discogs

Reply #1767
Here is the string I'm using without errors...

$flatten($multi_if($multi_any($contains($sextend(%<<TRACK_CREDITS_ROLES>>%,%<<RELEASE_CREDITS_ROLES>>%),$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter'))),$multi_if($put(aj,$sextend(%<<TRACK_CREDITS_ARTISTS_JOIN>>%,%<<RELEASE_CREDITS_ARTISTS_JOIN>>%)),$join($put(an,$sextend(%<<TRACK_CREDITS_ARTISTS_NAME>>%,%<<RELEASE_CREDITS_ARTISTS_NAME>>%)),$multi_pad($get(aj),' ')),$get(an)),))

Same string as in my above post. Please compare with yours to figure out how it differs (I thought it was missing 1 parenthesis).

If this doesn't work... please give me a release id. Also, are you using the latest version?

foo_discogs

Reply #1768
Yes, this seems to work now, maybe there was something wrong with my copy/paste before.

Using your last version you just posted today. So my work can go on now  Because I have a lot tags like these were I have to check for more key-words for extracting from Release credits

Thanks!

foo_discogs

Reply #1769
So I am cutting out a lot of values from the release credits in the given way. Is there a practical way to exclude these values from the DISCOGS_RELEASE_CREDITS ?? I don't want to have them in single Tags and also in the Release credits...
That would be great...

foo_discogs

Reply #1770
Proposed solution: Add a new function, $filter(A,x), which is like $contains(A,x) but returns the first param with x replaced with empty strings (instead of returning a boolean array of shape x, as $contains does). If x is an array, any values in the array will be filtered. If x is a string, the result is the same as $multi_replace(A,x,).

You can then use the following string to get the remaining track credits:

$zip($join($filter(%<<TRACK_CREDITS_ROLES>>%,$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter'))),' - ',$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%))

Note: This works because $join() returns empty string if first parameter is an empty string, regardless of other parameters.

Alternate ideas are welcome. Please keep posing these questions as it helps flesh out the functions that should be defined. :-)

https://www.sendspace.com/file/lquxhj

I understand this stuff is probably confusing... I will work on a better documentation including examples and description of each function.

P.S. - One other thing that may simplify writing formatting strings is writing partial strings to tags, then overwriting the tags with tags of the same name defined further down. Trivial example:

foo_discogs

Reply #1771
Hi paregistrase,

Interesting. I don't have that problem when using the m-TAGS component (it must filter out empty tags), so I missed it.

New build: https://www.sendspace.com/file/limoil

Updates:
- Do not write empty tag values. (Remove them, instead.) -- fixes your problem
- Parse release credits that are for specific tracks (multiple or a range of tracks) as track credits instead of release credits.
- Update the default vocal/featuring/remix credits tags to support the "join" field if it's ever defined (couldn't find any examples to test where it was used).
- Update the default vocal/featuring/remix credits tags to also include credits defined at the release level.


Works perfect.
Thank you


foo_discogs

Reply #1772
Proposed solution: Add a new function, $filter(A,x), which is like $contains(A,x) but returns the first param with x replaced with empty strings (instead of returning a boolean array of shape x, as $contains does). If x is an array, any values in the array will be filtered. If x is a string, the result is the same as $multi_replace(A,x,).

You can then use the following string to get the remaining track credits:

$zip($join($filter(%<<TRACK_CREDITS_ROLES>>%,$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter'))),' - ',$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%))

Note: This works because $join() returns empty string if first parameter is an empty string, regardless of other parameters.

Alternate ideas are welcome. Please keep posing these questions as it helps flesh out the functions that should be defined. :-)

https://www.sendspace.com/file/lquxhj

I understand this stuff is probably confusing... I will work on a better documentation including examples and description of each function.

P.S. - One other thing that may simplify writing formatting strings is writing partial strings to tags, then overwriting the tags with tags of the same name defined further down. Trivial example:


I like this idea, just try the new version out now to see if it works as expected. It's really great that you are extending this plugin, and it seems you are really open to also somewhat complex tasks, thanks!!

foo_discogs

Reply #1773
@zoomorph :

So, there seems to be some problems with this function, lets try to explain :

Starting point we have is
DISCOGS_TRACK_CREDITS : Remix - DJ La Monde; Written-By, Producer - Bolz Bolz

Now you do the following :
REMAINING_TRACK_CREDITS : $zip($join($filter(%<<TRACK_CREDITS_ROLES>>%,$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter'))),' - ',$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%))

The result is :
Remix - DJ La Monde; Producer - Bolz Bolz  --> THIS IS EXPECTED

------------------------------------------------------------------------------------------
If you do the following :
REMAINING_TRACK_CREDITS : $zip($join($filter(%<<TRACK_CREDITS_ROLES>>%,$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter','Remix'))),' - ',$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%))

The result is :
Producer - Bolz Bolz  --> THIS IS EXPECTED

-----------------------------------------------------------------------------------
BUT ; If you just want to cut out the producer additionally like :
REMAINING_TRACK_CREDITS : $zip($join($filter(%<<TRACK_CREDITS_ROLES>>%,$append('Composed By','Score','Written-By','Written By','Music By','Programmed By','Songwriter','Producer'))),' - ',$join(%<<TRACK_CREDITS_ARTISTS_NAME>>%))

The result is :
Remix  ->> THIS IS NOT EXPECTED, it cutted out the " - DJ La Monde"



Please let me know if you find this bug in the code...

foo_discogs

Reply #1774
Another thing :

We have :
REMAINING_TRACK_CREDITS : Remix - DJ La Monde; Producer - Bolz Bolz
DISCOGS_RELEASE_CREDITS : DJ Mix, Compiled By - Christian Weber

Now we want to have these 2 together in :
INVOLVED_PEOPLE_TEST : $zip(%DISCOGS_RELEASE_CREDITS%,'; ',%REMAINING_TRACK_CREDITS%)

But this brings out the following :
DJ Mix, Compiled By - Christian Weber; Remix - DJ La Monde, Producer - Bolz Bolz 
I would expect
DJ Mix, Compiled By - Christian Weber; Remix - DJ La Monde; Producer - Bolz Bolz

Also, can we achieve that we separate the roles in the credits :
eg not
DJ Mix, Compiled By - Christian Weber;
but
DJ Mix - Christian Weber; Compiled By - Christian Weber;

Would be great. I am a hardcore tagger and this customizable plugin seems to be a dream come true because in all the other discogs taggers you are somehow nailed down to what the developer thinks...

Cheers