3
15
Fork
You've already forked yambs
1

Seeding entities with csv and different parameter number #75

Closed
opened 2025年11月15日 10:45:57 +01:00 by relaxo · 2 comments

Hi. First, this is not critical to me.
I want to seed multiple artists at once, but the number of URL relationships differs from artist to artist. Is there a way to archive that in one seed. For now, I create multiple seeds with write, but that can be many files for simple handling.

I'm using yambs cmd.

If it helps, the code so far. The new and edit versions of the seed ca be in different seeds.

public void CreateMissingArtistSeed(List<ArtistInfo> artists, string eventName, string editNote,
			string outputDir, string identifier)
		{
			logger.LogInformation($"Processing list");
			const string typeGroup = "2"; // Artist type Group
			foreach (var artist in artists)
			{
				var inputFields = "mbid,edit_note";
				var urlCount = artist.GetDetails().FindAll(it => it != null && it.ToString().Length > 0).Count;
				for (var i = 0; i < urlCount; i++)
				{
					inputFields += $",url{i}_type,url{i}_url";
				}
				var resultEditNote = artist.DetailPageUrl;
				var input = $"\"{artist.Artist.Id.ToString()}\"";
				if (resultEditNote == null)
				{
					resultEditNote = eventName;
				}
				input += $",\"{resultEditNote}\"";
				input += BuildLink(artist.WebsiteUrl, ArtistUrlLinkTypes.OfficialHomepage_Artist_URL);
				input += BuildLink(artist.FacebookUrl, ArtistUrlLinkTypes.SocialNetwork_Artist_URL);
				input += BuildLink(artist.InstagramUrl, ArtistUrlLinkTypes.SocialNetwork_Artist_URL);
				input += BuildLink(artist.TwitterUri, ArtistUrlLinkTypes.SocialNetwork_Artist_URL);
				input += BuildLink(artist.YouTubeUri, ArtistUrlLinkTypes.YouTube_Artist_URL);
				input += BuildLink(artist.TikTokUri, ArtistUrlLinkTypes.SocialNetwork_Artist_URL);
				input += BuildLink(artist.SpotifyUri, ArtistUrlLinkTypes.FreeStreaming_Artist_URL);
				input += BuildLink(artist.AppleMusicUri, ArtistUrlLinkTypes.Streaming_Artist_URL);
				input += BuildLink(artist.SoundCloudUri, ArtistUrlLinkTypes.Soundcloud_Artist_URL);
				input += BuildLink(artist.DeezerUri, ArtistUrlLinkTypes.Streaming_Artist_URL);
				input += BuildLink(artist.WikipediaUri, ArtistUrlLinkTypes.Wikipedia_Artist_URL);
				// Edit Artist
				var output = CallYambs([], inputFields, [input], "artist", "write");
				WriteOutput(output, $"{eventName}_artist_{artist.Name}_edit", string.Empty, outputDir, identifier);
				// Remove "mbid," from input fields
				inputFields = inputFields.Remove(0, 4);
				// Remove MbId of artist and comma from input (+2 for quote marks)
				input = input.Remove(0, artist.Artist.Id.ToString().Length + 2);
				inputFields += ",name,sort_name,type";
				input += $",\"{artist.Name}\",\"{artist.Name}\",\"{typeGroup}\"";
				// New Artist
				output = CallYambs([], inputFields, [input], "artist", "write");
				WriteOutput(output, $"{eventName}_artist_{artist.Name}", string.Empty, outputDir, identifier);
				logger.LogDebug("Wrote seed for adding new artist {artistName} with urls: {urls}", artist.Name,
					string.Join(" ", artist.GetDetails().Select(it => it).Where(it => it != null)));
			}
Hi. First, this is not critical to me. I want to seed multiple artists at once, but the number of URL relationships differs from artist to artist. Is there a way to archive that in one seed. For now, I create multiple seeds with write, but that can be many files for simple handling. I'm using yambs cmd. If it helps, the code so far. The new and edit versions of the seed ca be in different seeds. ```c# public void CreateMissingArtistSeed(List<ArtistInfo> artists, string eventName, string editNote, string outputDir, string identifier) { logger.LogInformation($"Processing list"); const string typeGroup = "2"; // Artist type Group foreach (var artist in artists) { var inputFields = "mbid,edit_note"; var urlCount = artist.GetDetails().FindAll(it => it != null && it.ToString().Length > 0).Count; for (var i = 0; i < urlCount; i++) { inputFields += $",url{i}_type,url{i}_url"; } var resultEditNote = artist.DetailPageUrl; var input = $"\"{artist.Artist.Id.ToString()}\""; if (resultEditNote == null) { resultEditNote = eventName; } input += $",\"{resultEditNote}\""; input += BuildLink(artist.WebsiteUrl, ArtistUrlLinkTypes.OfficialHomepage_Artist_URL); input += BuildLink(artist.FacebookUrl, ArtistUrlLinkTypes.SocialNetwork_Artist_URL); input += BuildLink(artist.InstagramUrl, ArtistUrlLinkTypes.SocialNetwork_Artist_URL); input += BuildLink(artist.TwitterUri, ArtistUrlLinkTypes.SocialNetwork_Artist_URL); input += BuildLink(artist.YouTubeUri, ArtistUrlLinkTypes.YouTube_Artist_URL); input += BuildLink(artist.TikTokUri, ArtistUrlLinkTypes.SocialNetwork_Artist_URL); input += BuildLink(artist.SpotifyUri, ArtistUrlLinkTypes.FreeStreaming_Artist_URL); input += BuildLink(artist.AppleMusicUri, ArtistUrlLinkTypes.Streaming_Artist_URL); input += BuildLink(artist.SoundCloudUri, ArtistUrlLinkTypes.Soundcloud_Artist_URL); input += BuildLink(artist.DeezerUri, ArtistUrlLinkTypes.Streaming_Artist_URL); input += BuildLink(artist.WikipediaUri, ArtistUrlLinkTypes.Wikipedia_Artist_URL); // Edit Artist var output = CallYambs([], inputFields, [input], "artist", "write"); WriteOutput(output, $"{eventName}_artist_{artist.Name}_edit", string.Empty, outputDir, identifier); // Remove "mbid," from input fields inputFields = inputFields.Remove(0, 4); // Remove MbId of artist and comma from input (+2 for quote marks) input = input.Remove(0, artist.Artist.Id.ToString().Length + 2); inputFields += ",name,sort_name,type"; input += $",\"{artist.Name}\",\"{artist.Name}\",\"{typeGroup}\""; // New Artist output = CallYambs([], inputFields, [input], "artist", "write"); WriteOutput(output, $"{eventName}_artist_{artist.Name}", string.Empty, outputDir, identifier); logger.LogDebug("Wrote seed for adding new artist {artistName} with urls: {urls}", artist.Name, string.Join(" ", artist.GetDetails().Select(it => it).Where(it => it != null))); } ```
Owner
Copy link

What's the specific problem that you're running into when trying to do this?

I created a CSV file containing the following:

Artist 1,https://artist1.bandcamp.com/,718,https://www.example.org,183Artist 2,https://artist2.bandcamp.com/,718,,0

Then I ran this:

yambs -type artist -format csv -fields name,url0_url,url0_type,url1_url,url1_type <artists.csv

As far as I can tell, it works: the first artist is seeded with two URLs, and the second is only seeded with one. Note that I had to pass 0 as the second URL's type for the second artist to avoid a parsing error.

What's the specific problem that you're running into when trying to do this? I created a CSV file containing the following: ```csv Artist 1,https://artist1.bandcamp.com/,718,https://www.example.org,183 Artist 2,https://artist2.bandcamp.com/,718,,0 ``` Then I ran this: ``` yambs -type artist -format csv -fields name,url0_url,url0_type,url1_url,url1_type <artists.csv ``` As far as I can tell, it works: the first artist is seeded with two URLs, and the second is only seeded with one. Note that I had to pass `0` as the second URL's type for the second artist to avoid a parsing error.
Author
Copy link

Sorry, I forgot to answer. As far as I can tell this works for me. Thank you.

Sorry, I forgot to answer. As far as I can tell this works for me. Thank you.
Sign in to join this conversation.
No Branch/Tag specified
main
dupe_release
tidal2
tidal2_unsquashed
tips
tutorial
edit_existing
v0.1.15
v0.1.14
v0.1.13
v0.1.12
v0.1.11
v0.1.10
v0.1.9
v0.1.8
v0.1.7
v0.1.6
v0.1.5
v0.1.4
v0.1.3
v0.1.2
v0.1.1
v0.1
Milestone
Clear milestone
No items
No milestone
Projects
Clear projects
No items
No project
Assignees
Clear assignees
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
derat/yambs#75
Reference in a new issue
derat/yambs
No description provided.
Delete branch "%!s()"

Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?