TandoorRecipes / recipes

Application for managing recipes, planning meals, building shopping lists and much much more!
https://docs.tandoor.dev
Other
5.31k stars 555 forks source link

Copy Me That import improvements #1027

Open tomtjes opened 2 years ago

tomtjes commented 2 years ago

Import from Copy Me That accounts would be great!

vabene1111 commented 2 years ago

i have seen that before but never used it, is there a way to export anything from a database on copy me that ? if so would you willing to provide me with some sample data so i can test the importer better ? if so feel free to email it to me at info@tandoor.dev

noja11 commented 2 years ago

I'll send you something in a moment

vabene1111 commented 2 years ago

note for myself: test data stored in my test data folder

integration will be added with one of the next updates

rshide commented 2 years ago

Hey @vabene1111, has any work been completed on this integration yet? I currently use Copy Me That and am wanting to switch to Tandoor. If you haven't started on this yet I wouldn't mind working on it and submitting a pr.

smilerz commented 2 years ago

@rshide - no he's hasn't worked on the app much in the last month.

But please feel free to take a crack at it and submit a PR! There is an integration class (cookbook.integration.integration.Integration) that you'll need to use.

vabene1111 commented 2 years ago

i have sample data provided by someone laying in my inbox waiting for integration, sadly family matters have forced me to take a break in developing, i hope that i will get back soon and then copy me that is on my immediate todo list :)

noja11 commented 2 years ago

Family always takes precedence! Thanks so much for your efforts and we’ll see you when life permits.


From: vabene1111 @.> Sent: Thursday, December 23, 2021 6:48:33 AM To: TandoorRecipes/recipes @.> Cc: Noah Atlin @.>; Comment @.> Subject: Re: [TandoorRecipes/recipes] Copy Me That import (Issue #1027)

i have sample data provided by someone laying in my inbox waiting for integration, sadly family matters have forced me to take a break in developing, i hope that i will get back soon and then copy me that is on my immediate todo list :)

— Reply to this email directly, view it on GitHubhttps://github.com/TandoorRecipes/recipes/issues/1027#issuecomment-1000250222, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AEWVR6OQYFQSRBERRMPSS53USMEBDANCNFSM5HOKF7NQ. Triage notifications on the go with GitHub Mobile for iOShttps://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675 or Androidhttps://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub. You are receiving this because you commented.Message ID: @.***>

vabene1111 commented 2 years ago

ok i had some spare time and added the copy me that importer thanks to the sample data i got from @noja11

I pushed it on beta as i cant make another release before christmas but i think beta should be very safe to update to currently (no migrations) so feel free to try it out everyone (remember to switch back to stable afterwards to prevent unwanted updates in the future).

Build will likely take an our or so, discord will give you a notification once beta is out (i hope).

vabene1111 commented 2 years ago

i will leave this open until someone trys it out (either beta or release) since i did not have time to do much testing.

rshide commented 2 years ago

i just tested it out on the beta branch and it seems to work as I would expect. I'm not seeing any data quality issues either. thanks @vabene1111!

vabene1111 commented 2 years ago

Awesome, that's great. While the HTML format is not great it seems somewhat standardized so I had hoped for good results across different people.

tomtjes commented 2 years ago

Thanks for the importer! It made me install Tandoor and try it out immediately. However, I feel like the switch to Tandoor would mean a substantial loss of data. Here are some issues I faced and suggested solutions.

I realize that some of these are harder to do than others. Unfortunately, my Python skills are nonexistent, so I'm afraid I can't contribute more than making these suggestions and providing test data.

Descriptions

Recipe descriptions in <div id="description"> seem to be ignored by the importer.

By the way, most of my descriptions exceed the Tandoor character limit, which I believe is 512. Is there a good reason for that? Can you allow, say, 2048 chars for the description?

Ingredient group headers

This div from the CMT export

<div class= "recipeIngredient recipeIngredient_subheader">
            FOR THE DOUGH:
        </div>

should be converted to a header in the Tandoor ingredient list.

Instruction group headers

<div class = "instruction instruction_subheader">
            Make the dough:
        </div>

Should trigger creation of a new step with the respective name.

"I made this"

On Copy Me That, you can mark that you made a recipe.

<span id="made_this"> I made this. </span>

While this could be converted to a Tandoor keyword, I feel like it should rather be an entry in the Cook log, maybe with a dummy date such as 01/01/1970, because the date field seems to be required.

Ratings

Ratings are currently not converted.

<span id="rating">Rated <span id = "ratingValue">4</span>/5</span>

Just like above, this should result in a Cook log entry.

Favorites

Copy me That lets you mark recipes as favorites.

<span id="starred">Is starred. </span>

This should be converted to a keyword in Tandoor.

Images

Tandoor only imports one image per recipe. As long as Tandoor doesn't support multiple images, could the importer add any additional images to the steps section?

Linked recipes

CMT allows to add other recipes as an ingredient or in a step by pasting the link to the recipe.

Ingredients

 <li class= "recipeIngredient">
            1 https://www.copymethat.com/r/yySJo97/roasted-or-grilled-red-peppers/, sliced
        </li>

Currently, the importer creates Foods mit the URL as their name. When the import is done, it could find those Foods, find the respective recipes, rename the Foods' name and link them to the recipes.

Steps

<li class = "instruction" value = "4">
            Grill or toast the bread according to the method at https://www.copymethat.com/r/JSocskIvC/grilled-or-toasted-bread/
        </li>

Similarly, the importer could parse all the steps once again and replace those copymethat.com URLs with links to the recipe in Tandoor: <a href="https://example.com/view/recipe/2">Grilled or Toasted Bread</a>

vabene1111 commented 2 years ago

awesome, thanks for the great list. I only went of a few example files and did not see all those cases. Will look at those and try to implement them

the whole linking thing is a little tricky and depends on how well an algorithm can find linked stuff from the recipes as this might also cause circular dependencies but i will try to find some kind of fix for that (most likely i will do the easier things first)

tomtjes commented 2 years ago

Fantastic, thanks for adding it to your todo list. I sent you example files after I first opened this issue. Let me know if you want me to send them again.

vabene1111 commented 2 years ago

thanks for reminding me, i will find them in the mail somewhere i am sure, should have left them unread ..., noja also provided a few hundred files but i only had 1 hour to implement the importer so i only reviewed like 2 or 3 of them and thought that was it 😂 guess better than nothing for people using copy me that only lightly but you mentioned many important aspects, will see how many of them can be implemented.

vabene1111 commented 2 years ago

ok so while all of the remaining tasks are very cool they are also very time consuming to implement and require fundamental changes of the importer. I think my time is currently better spend on other issues but we need to come back to this as making the underlying changes to support this will also benefit other importer types.