{"action":"created","comment":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/comments/39924024","id":39924024,"diff_hunk":"@@ -176,6 +176,28 @@ std::string CAlbum::GetGenreString() const\n   return StringUtils::Join(genre, g_advancedSettings.m_musicItemSeparator);\n }\n \n+const std::vector<std::string> CAlbum::GetAlbumArtist() const\n+{\n+  //Get artist names as vector from artist credits\n+  std::vector<std::string> albumartists;\n+  for (VECARTISTCREDITS::const_iterator artistCredit = artistCredits.begin(); artistCredit != artistCredits.end(); ++artistCredit)","path":"xbmc/music/Album.cpp","position":8,"original_position":8,"commit_id":"a4ba1c5d8aca883c37bb6b9d12c09a5887ae94ca","original_commit_id":"a4ba1c5d8aca883c37bb6b9d12c09a5887ae94ca","user":{"login":"DaveTBlake","id":13371422,"avatar_url":"https://avatars.githubusercontent.com/u/13371422?v=3","gravatar_id":"","url":"https://api.github.com/users/DaveTBlake","html_url":"https://github.com/DaveTBlake","followers_url":"https://api.github.com/users/DaveTBlake/followers","following_url":"https://api.github.com/users/DaveTBlake/following{/other_user}","gists_url":"https://api.github.com/users/DaveTBlake/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveTBlake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveTBlake/subscriptions","organizations_url":"https://api.github.com/users/DaveTBlake/orgs","repos_url":"https://api.github.com/users/DaveTBlake/repos","events_url":"https://api.github.com/users/DaveTBlake/events{/privacy}","received_events_url":"https://api.github.com/users/DaveTBlake/received_events","type":"User","site_admin":false},"body":"I have no idea. This form  of loop is how VECARTISTCREDITS is accessed on all other ocassions, I think it best to be consistent with the rest of the music code don't you?","created_at":"2015-09-19T21:49:05Z","updated_at":"2015-09-19T21:49:05Z","html_url":"https://github.com/xbmc/xbmc/pull/8079#discussion_r39924024","pull_request_url":"https://api.github.com/repos/xbmc/xbmc/pulls/8079","_links":{"self":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/comments/39924024"},"html":{"href":"https://github.com/xbmc/xbmc/pull/8079#discussion_r39924024"},"pull_request":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/8079"}}},"pull_request":{"url":"https://api.github.com/repos/xbmc/xbmc/pulls/8079","id":45420499,"html_url":"https://github.com/xbmc/xbmc/pull/8079","diff_url":"https://github.com/xbmc/xbmc/pull/8079.diff","patch_url":"https://github.com/xbmc/xbmc/pull/8079.patch","issue_url":"https://api.github.com/repos/xbmc/xbmc/issues/8079","number":8079,"state":"open","locked":false,"title":"CMusicInfoTag: Add missing MBID values when set from artist, album and song.…","user":{"login":"DaveTBlake","id":13371422,"avatar_url":"https://avatars.githubusercontent.com/u/13371422?v=3","gravatar_id":"","url":"https://api.github.com/users/DaveTBlake","html_url":"https://github.com/DaveTBlake","followers_url":"https://api.github.com/users/DaveTBlake/followers","following_url":"https://api.github.com/users/DaveTBlake/following{/other_user}","gists_url":"https://api.github.com/users/DaveTBlake/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveTBlake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveTBlake/subscriptions","organizations_url":"https://api.github.com/users/DaveTBlake/orgs","repos_url":"https://api.github.com/users/DaveTBlake/repos","events_url":"https://api.github.com/users/DaveTBlake/events{/privacy}","received_events_url":"https://api.github.com/users/DaveTBlake/received_events","type":"User","site_admin":false},"body":"After #8012 and #8071 I noticed that CMUSICInfoTag::SetArtist, SetAlbum and SetSong did not fully allow for artist credits. So while artist was being set as a string vector, the description and related MBIDs were not all being set. It also seems more robust to get artist names as well as musicbrainz IDs from the artist credits rather than names from the vector.\r\n\r\nFor historic reasons artist information (for song and album)  is stored as a decriptive string (how the user wants the concatonated names to be displayed), vector of strings (original design) and a vector of artist credits (inc MBID). This duplication is vulnerable to inconsistencies. I beleive it would be better to replace the string vector with a method that extracts artist names from the artist credits. I have created those methods here (for song and album), but not removed the public artist vector because it would mean call changes in more places. But I would suggest I do this in another PR if I have support from the experienced devs.\r\n\r\n@Montellese this is an addition to the previous fixes, so have a look please.\r\n@evilhamster you may have a view on this after the ARTISTS tag changes you did.\r\n\r\nBut I feel that what I have done here could just be merged, it is the greater method change that I propose we do sepeartely that could need some discussion.","created_at":"2015-09-18T15:38:20Z","updated_at":"2015-09-19T21:49:05Z","closed_at":null,"merged_at":null,"merge_commit_sha":"2e2a9aa7771c3b014612264a6cdbf76839281a3f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/xbmc/xbmc/pulls/8079/commits","review_comments_url":"https://api.github.com/repos/xbmc/xbmc/pulls/8079/comments","review_comment_url":"https://api.github.com/repos/xbmc/xbmc/pulls/comments{/number}","comments_url":"https://api.github.com/repos/xbmc/xbmc/issues/8079/comments","statuses_url":"https://api.github.com/repos/xbmc/xbmc/statuses/a4ba1c5d8aca883c37bb6b9d12c09a5887ae94ca","head":{"label":"DaveTBlake:MusicInfoTagFix","ref":"MusicInfoTagFix","sha":"a4ba1c5d8aca883c37bb6b9d12c09a5887ae94ca","user":{"login":"DaveTBlake","id":13371422,"avatar_url":"https://avatars.githubusercontent.com/u/13371422?v=3","gravatar_id":"","url":"https://api.github.com/users/DaveTBlake","html_url":"https://github.com/DaveTBlake","followers_url":"https://api.github.com/users/DaveTBlake/followers","following_url":"https://api.github.com/users/DaveTBlake/following{/other_user}","gists_url":"https://api.github.com/users/DaveTBlake/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveTBlake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveTBlake/subscriptions","organizations_url":"https://api.github.com/users/DaveTBlake/orgs","repos_url":"https://api.github.com/users/DaveTBlake/repos","events_url":"https://api.github.com/users/DaveTBlake/events{/privacy}","received_events_url":"https://api.github.com/users/DaveTBlake/received_events","type":"User","site_admin":false},"repo":{"id":41623007,"name":"xbmc","full_name":"DaveTBlake/xbmc","owner":{"login":"DaveTBlake","id":13371422,"avatar_url":"https://avatars.githubusercontent.com/u/13371422?v=3","gravatar_id":"","url":"https://api.github.com/users/DaveTBlake","html_url":"https://github.com/DaveTBlake","followers_url":"https://api.github.com/users/DaveTBlake/followers","following_url":"https://api.github.com/users/DaveTBlake/following{/other_user}","gists_url":"https://api.github.com/users/DaveTBlake/gists{/gist_id}","starred_url":"https://api.github.com/users/DaveTBlake/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DaveTBlake/subscriptions","organizations_url":"https://api.github.com/users/DaveTBlake/orgs","repos_url":"https://api.github.com/users/DaveTBlake/repos","events_url":"https://api.github.com/users/DaveTBlake/events{/privacy}","received_events_url":"https://api.github.com/users/DaveTBlake/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/DaveTBlake/xbmc","description":"Kodi Main Repository - By using this code you agree with our policy and will follow the GPLv2 license as included","fork":true,"url":"https://api.github.com/repos/DaveTBlake/xbmc","forks_url":"https://api.github.com/repos/DaveTBlake/xbmc/forks","keys_url":"https://api.github.com/repos/DaveTBlake/xbmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/DaveTBlake/xbmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/DaveTBlake/xbmc/teams","hooks_url":"https://api.github.com/repos/DaveTBlake/xbmc/hooks","issue_events_url":"https://api.github.com/repos/DaveTBlake/xbmc/issues/events{/number}","events_url":"https://api.github.com/repos/DaveTBlake/xbmc/events","assignees_url":"https://api.github.com/repos/DaveTBlake/xbmc/assignees{/user}","branches_url":"https://api.github.com/repos/DaveTBlake/xbmc/branches{/branch}","tags_url":"https://api.github.com/repos/DaveTBlake/xbmc/tags","blobs_url":"https://api.github.com/repos/DaveTBlake/xbmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/DaveTBlake/xbmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/DaveTBlake/xbmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/DaveTBlake/xbmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/DaveTBlake/xbmc/statuses/{sha}","languages_url":"https://api.github.com/repos/DaveTBlake/xbmc/languages","stargazers_url":"https://api.github.com/repos/DaveTBlake/xbmc/stargazers","contributors_url":"https://api.github.com/repos/DaveTBlake/xbmc/contributors","subscribers_url":"https://api.github.com/repos/DaveTBlake/xbmc/subscribers","subscription_url":"https://api.github.com/repos/DaveTBlake/xbmc/subscription","commits_url":"https://api.github.com/repos/DaveTBlake/xbmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/DaveTBlake/xbmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/DaveTBlake/xbmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/DaveTBlake/xbmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/DaveTBlake/xbmc/contents/{+path}","compare_url":"https://api.github.com/repos/DaveTBlake/xbmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/DaveTBlake/xbmc/merges","archive_url":"https://api.github.com/repos/DaveTBlake/xbmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/DaveTBlake/xbmc/downloads","issues_url":"https://api.github.com/repos/DaveTBlake/xbmc/issues{/number}","pulls_url":"https://api.github.com/repos/DaveTBlake/xbmc/pulls{/number}","milestones_url":"https://api.github.com/repos/DaveTBlake/xbmc/milestones{/number}","notifications_url":"https://api.github.com/repos/DaveTBlake/xbmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/DaveTBlake/xbmc/labels{/name}","releases_url":"https://api.github.com/repos/DaveTBlake/xbmc/releases{/id}","created_at":"2015-08-30T09:25:19Z","updated_at":"2015-08-30T09:25:50Z","pushed_at":"2015-09-19T13:47:46Z","git_url":"git://github.com/DaveTBlake/xbmc.git","ssh_url":"git@github.com:DaveTBlake/xbmc.git","clone_url":"https://github.com/DaveTBlake/xbmc.git","svn_url":"https://github.com/DaveTBlake/xbmc","homepage":"http://kodi.wiki/view/Official:Trademark_Policy","size":545467,"stargazers_count":0,"watchers_count":0,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"xbmc:master","ref":"master","sha":"2c3f5f0005099a2a236922d9cb5e16e520c586bd","user":{"login":"xbmc","id":199122,"avatar_url":"https://avatars.githubusercontent.com/u/199122?v=3","gravatar_id":"","url":"https://api.github.com/users/xbmc","html_url":"https://github.com/xbmc","followers_url":"https://api.github.com/users/xbmc/followers","following_url":"https://api.github.com/users/xbmc/following{/other_user}","gists_url":"https://api.github.com/users/xbmc/gists{/gist_id}","starred_url":"https://api.github.com/users/xbmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xbmc/subscriptions","organizations_url":"https://api.github.com/users/xbmc/orgs","repos_url":"https://api.github.com/users/xbmc/repos","events_url":"https://api.github.com/users/xbmc/events{/privacy}","received_events_url":"https://api.github.com/users/xbmc/received_events","type":"Organization","site_admin":false},"repo":{"id":1217614,"name":"xbmc","full_name":"xbmc/xbmc","owner":{"login":"xbmc","id":199122,"avatar_url":"https://avatars.githubusercontent.com/u/199122?v=3","gravatar_id":"","url":"https://api.github.com/users/xbmc","html_url":"https://github.com/xbmc","followers_url":"https://api.github.com/users/xbmc/followers","following_url":"https://api.github.com/users/xbmc/following{/other_user}","gists_url":"https://api.github.com/users/xbmc/gists{/gist_id}","starred_url":"https://api.github.com/users/xbmc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xbmc/subscriptions","organizations_url":"https://api.github.com/users/xbmc/orgs","repos_url":"https://api.github.com/users/xbmc/repos","events_url":"https://api.github.com/users/xbmc/events{/privacy}","received_events_url":"https://api.github.com/users/xbmc/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/xbmc/xbmc","description":"Kodi Main Repository - By using this code you agree with our policy and will follow the GPLv2 license as included","fork":false,"url":"https://api.github.com/repos/xbmc/xbmc","forks_url":"https://api.github.com/repos/xbmc/xbmc/forks","keys_url":"https://api.github.com/repos/xbmc/xbmc/keys{/key_id}","collaborators_url":"https://api.github.com/repos/xbmc/xbmc/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/xbmc/xbmc/teams","hooks_url":"https://api.github.com/repos/xbmc/xbmc/hooks","issue_events_url":"https://api.github.com/repos/xbmc/xbmc/issues/events{/number}","events_url":"https://api.github.com/repos/xbmc/xbmc/events","assignees_url":"https://api.github.com/repos/xbmc/xbmc/assignees{/user}","branches_url":"https://api.github.com/repos/xbmc/xbmc/branches{/branch}","tags_url":"https://api.github.com/repos/xbmc/xbmc/tags","blobs_url":"https://api.github.com/repos/xbmc/xbmc/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/xbmc/xbmc/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/xbmc/xbmc/git/refs{/sha}","trees_url":"https://api.github.com/repos/xbmc/xbmc/git/trees{/sha}","statuses_url":"https://api.github.com/repos/xbmc/xbmc/statuses/{sha}","languages_url":"https://api.github.com/repos/xbmc/xbmc/languages","stargazers_url":"https://api.github.com/repos/xbmc/xbmc/stargazers","contributors_url":"https://api.github.com/repos/xbmc/xbmc/contributors","subscribers_url":"https://api.github.com/repos/xbmc/xbmc/subscribers","subscription_url":"https://api.github.com/repos/xbmc/xbmc/subscription","commits_url":"https://api.github.com/repos/xbmc/xbmc/commits{/sha}","git_commits_url":"https://api.github.com/repos/xbmc/xbmc/git/commits{/sha}","comments_url":"https://api.github.com/repos/xbmc/xbmc/comments{/number}","issue_comment_url":"https://api.github.com/repos/xbmc/xbmc/issues/comments{/number}","contents_url":"https://api.github.com/repos/xbmc/xbmc/contents/{+path}","compare_url":"https://api.github.com/repos/xbmc/xbmc/compare/{base}...{head}","merges_url":"https://api.github.com/repos/xbmc/xbmc/merges","archive_url":"https://api.github.com/repos/xbmc/xbmc/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/xbmc/xbmc/downloads","issues_url":"https://api.github.com/repos/xbmc/xbmc/issues{/number}","pulls_url":"https://api.github.com/repos/xbmc/xbmc/pulls{/number}","milestones_url":"https://api.github.com/repos/xbmc/xbmc/milestones{/number}","notifications_url":"https://api.github.com/repos/xbmc/xbmc/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/xbmc/xbmc/labels{/name}","releases_url":"https://api.github.com/repos/xbmc/xbmc/releases{/id}","created_at":"2011-01-03T21:18:51Z","updated_at":"2015-09-18T20:22:24Z","pushed_at":"2015-09-19T20:58:34Z","git_url":"git://github.com/xbmc/xbmc.git","ssh_url":"git@github.com:xbmc/xbmc.git","clone_url":"https://github.com/xbmc/xbmc.git","svn_url":"https://github.com/xbmc/xbmc","homepage":"http://kodi.wiki/view/Official:Trademark_Policy","size":1894717,"stargazers_count":4108,"watchers_count":4108,"language":"C++","has_issues":false,"has_downloads":true,"has_wiki":false,"has_pages":false,"forks_count":3029,"mirror_url":null,"open_issues_count":207,"forks":3029,"open_issues":207,"watchers":4108,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/8079"},"html":{"href":"https://github.com/xbmc/xbmc/pull/8079"},"issue":{"href":"https://api.github.com/repos/xbmc/xbmc/issues/8079"},"comments":{"href":"https://api.github.com/repos/xbmc/xbmc/issues/8079/comments"},"review_comments":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/8079/comments"},"review_comment":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/xbmc/xbmc/pulls/8079/commits"},"statuses":{"href":"https://api.github.com/repos/xbmc/xbmc/statuses/a4ba1c5d8aca883c37bb6b9d12c09a5887ae94ca"}}}}