Documentation
¶
Index ¶
- func RegisterFeedScraper(hostname string, fn model.FeedScraper)
- func RegisterScraper(hostname string, fn model.Scraper)
- func Scrape(data *model.DataInput, r *model.Recipe) error
- func ScrapeFeed(data *model.DataInput, feed *model.Feed) error
- func ScrapeFitMenCook(data *model.DataInput, r *model.Recipe) error
- func ScrapeGousto(data *model.DataInput, r *model.Recipe) error
- func ScrapeHelloFreshFeed(data *model.DataInput, feed *model.Feed) error
- func ScrapeKitchenStories(data *model.DataInput, r *model.Recipe) error
- func ScrapeKptnCook(data *model.DataInput, r *model.Recipe) error
- func ScrapeMarleySpoon(data *model.DataInput, r *model.Recipe) error
- func ScrapeMarleySpoonFeed(data *model.DataInput, feed *model.Feed) error
- type GoustoData
- type KitchenStoriesRecipe
- type KitchenStoriesScript
- type KptnCookRecipe
- type MarleySpoonData
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func RegisterFeedScraper ¶
func RegisterFeedScraper(hostname string, fn model.FeedScraper)
func RegisterScraper ¶
func ScrapeHelloFreshFeed ¶
Types ¶
type GoustoData ¶
type GoustoData struct {
Status string `json:"status"`
Data struct {
Entry struct {
URL string `json:"url"`
Title string `json:"title"`
Categories []struct {
Title string `json:"title"`
URL string `json:"url"`
UID string `json:"uid"`
} `json:"categories"`
GoustoID string `json:"gousto_id"`
GoustoUID string `json:"gousto_uid"`
Media struct {
Images []struct {
Image string `json:"image"`
Width int `json:"width"`
} `json:"images"`
} `json:"media"`
Rating struct {
Average float64 `json:"average"`
Count int `json:"count"`
} `json:"rating"`
Description string `json:"description"`
PrepTimes struct {
For2 int `json:"for_2"`
For4 int `json:"for_4"`
} `json:"prep_times"`
Cuisine struct {
Slug string `json:"slug"`
Title string `json:"title"`
} `json:"cuisine"`
Ingredients []struct {
Label string `json:"label"`
Title string `json:"title"`
UID string `json:"uid"`
Name string `json:"name"`
Media struct {
Images []struct {
Image string `json:"image"`
Width int `json:"width"`
} `json:"images"`
} `json:"media"`
Allergens struct {
Allergen []any `json:"allergen"`
} `json:"allergens"`
} `json:"ingredients"`
Basics []struct {
Title string `json:"title"`
Slug string `json:"slug"`
} `json:"basics"`
CookingInstructions []struct {
Instruction string `json:"instruction"`
Order int `json:"order"`
Media struct {
Images []struct {
Image string `json:"image"`
Width int `json:"width"`
} `json:"images"`
} `json:"media"`
} `json:"cooking_instructions"`
Allergens []struct {
Title string `json:"title"`
Slug string `json:"slug"`
} `json:"allergens"`
Seo struct {
Title string `json:"title"`
Description string `json:"description"`
Robots []any `json:"robots"`
Canonical string `json:"canonical"`
OpenGraphImage string `json:"open_graph_image"`
} `json:"seo"`
Tags []any `json:"tags"`
UID string `json:"uid"`
Version int `json:"_version"`
NutritionalInformation struct {
PerHundredGrams struct {
EnergyKcal int `json:"energy_kcal"`
EnergyKj int `json:"energy_kj"`
FatMg int `json:"fat_mg"`
FatSaturatesMg int `json:"fat_saturates_mg"`
CarbsMg int `json:"carbs_mg"`
CarbsSugarsMg int `json:"carbs_sugars_mg"`
FibreMg int `json:"fibre_mg"`
ProteinMg int `json:"protein_mg"`
SaltMg int `json:"salt_mg"`
NetWeightMg int `json:"net_weight_mg"`
} `json:"per_hundred_grams"`
PerPortion struct {
EnergyKcal int `json:"energy_kcal"`
EnergyKj int `json:"energy_kj"`
FatMg int `json:"fat_mg"`
FatSaturatesMg int `json:"fat_saturates_mg"`
CarbsMg int `json:"carbs_mg"`
CarbsSugarsMg int `json:"carbs_sugars_mg"`
FibreMg int `json:"fibre_mg"`
ProteinMg int `json:"protein_mg"`
SaltMg int `json:"salt_mg"`
NetWeightMg int `json:"net_weight_mg"`
} `json:"per_portion"`
} `json:"nutritional_information"`
} `json:"entry"`
} `json:"data"`
}
type KitchenStoriesRecipe ¶
type KitchenStoriesRecipe struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
Type string `json:"type,omitempty"`
ContentID string `json:"content_id,omitempty"`
Difficulty string `json:"difficulty,omitempty"`
Duration struct {
Preparation int `json:"preparation,omitempty"`
Baking int `json:"baking,omitempty"`
Resting int `json:"resting,omitempty"`
} `json:"duration,omitempty"`
Image struct {
ID string `json:"id,omitempty"`
Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"`
URL string `json:"url,omitempty"`
} `json:"image,omitempty"`
Author struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Type string `json:"type,omitempty"`
NewType string `json:"new_type,omitempty"`
Slug string `json:"slug,omitempty"`
Occupation string `json:"occupation,omitempty"`
Description string `json:"description,omitempty"`
Image struct {
URL string `json:"url,omitempty"`
} `json:"image,omitempty"`
Website string `json:"website,omitempty"`
BannerImage struct {
URL string `json:"url,omitempty"`
} `json:"banner_image,omitempty"`
IsPremium bool `json:"is_premium,omitempty"`
} `json:"author,omitempty"`
Publishing struct {
Created string `json:"created,omitempty"`
Updated string `json:"updated,omitempty"`
Published string `json:"published,omitempty"`
State string `json:"state,omitempty"`
} `json:"publishing,omitempty"`
URL string `json:"url,omitempty"`
UserReactions struct {
Rating float64 `json:"rating,omitempty"`
RatingCount int `json:"rating_count,omitempty"`
ImagesCount int `json:"images_count,omitempty"`
CommentsCount int `json:"comments_count,omitempty"`
LikeCount int `json:"like_count,omitempty"`
Quality float64 `json:"quality,omitempty"`
} `json:"user_reactions,omitempty"`
Servings struct {
Amount int `json:"amount,omitempty"`
Type string `json:"type,omitempty"`
} `json:"servings,omitempty"`
ChefsNote string `json:"chefs_note,omitempty"`
Nutrition struct {
Calories float64 `json:"calories,omitempty"`
Fat float64 `json:"fat,omitempty"`
Protein float64 `json:"protein,omitempty"`
Carbohydrate float64 `json:"carbohydrate,omitempty"`
} `json:"nutrition,omitempty"`
Meta struct {
Title string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
Hreflang struct {
En string `json:"en,omitempty"`
De string `json:"de,omitempty"`
} `json:"hreflang,omitempty"`
} `json:"meta,omitempty"`
Tags []struct {
ID string `json:"id,omitempty"`
Slug string `json:"slug,omitempty"`
Title string `json:"title,omitempty"`
Type string `json:"type,omitempty"`
IsHidden bool `json:"is_hidden,omitempty"`
} `json:"tags,omitempty"`
Categories struct {
Main struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
Path []struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
} `json:"path,omitempty"`
} `json:"main,omitempty"`
Additional []struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
Path []struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
} `json:"path,omitempty"`
} `json:"additional,omitempty"`
} `json:"categories,omitempty"`
HowtoVideos []struct {
ID string `json:"id,omitempty"`
Title string `json:"title,omitempty"`
Slug string `json:"slug,omitempty"`
Type string `json:"type,omitempty"`
ContentID string `json:"content_id,omitempty"`
RemoteID string `json:"remote_id,omitempty"`
URL string `json:"url,omitempty"`
Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"`
Duration int `json:"duration,omitempty"`
Image struct {
ID string `json:"id,omitempty"`
Width int `json:"width,omitempty"`
Height int `json:"height,omitempty"`
URL string `json:"url,omitempty"`
} `json:"image,omitempty"`
Publishing struct {
Created string `json:"created,omitempty"`
Updated string `json:"updated,omitempty"`
Published string `json:"published,omitempty"`
State string `json:"state,omitempty"`
PlaybackState string `json:"playback-state,omitempty"`
} `json:"publishing,omitempty"`
Meta struct {
Hreflang struct {
En string `json:"en,omitempty"`
De string `json:"de,omitempty"`
Zh string `json:"zh,omitempty"`
} `json:"hreflang,omitempty"`
} `json:"meta,omitempty"`
UserReactions struct {
ViewCount int `json:"view_count,omitempty"`
} `json:"user_reactions,omitempty"`
} `json:"howto_videos,omitempty"`
Ingredients []struct {
List []struct {
ID string `json:"id,omitempty"`
Name struct {
Rendered string `json:"rendered,omitempty"`
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
} `json:"name,omitempty"`
Measurement struct {
Imperial struct {
Amount float64 `json:"amount,omitempty"`
Unit struct {
ID string `json:"id,omitempty"`
Name struct {
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
Rendered string `json:"rendered,omitempty"`
} `json:"name,omitempty"`
Type string `json:"type,omitempty"`
IngredientPluralizable bool `json:"ingredient_pluralizable,omitempty"`
} `json:"unit,omitempty"`
} `json:"imperial,omitempty"`
Metric struct {
Amount int `json:"amount,omitempty"`
Unit struct {
ID string `json:"id,omitempty"`
Name struct {
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
Rendered string `json:"rendered,omitempty"`
} `json:"name,omitempty"`
Type string `json:"type,omitempty"`
FeaturedOrder int `json:"featured_order,omitempty"`
IngredientPluralizable bool `json:"ingredient_pluralizable,omitempty"`
} `json:"unit,omitempty"`
} `json:"metric,omitempty"`
} `json:"measurement,omitempty"`
IsDivided bool `json:"is_divided,omitempty"`
IsPartner bool `json:"is_partner,omitempty"`
} `json:"list,omitempty"`
} `json:"ingredients,omitempty"`
Steps []struct {
Text string `json:"text,omitempty"`
Image struct {
URL string `json:"url,omitempty"`
} `json:"image,omitempty"`
Ingredients []struct {
ID string `json:"id,omitempty"`
Name struct {
Rendered string `json:"rendered,omitempty"`
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
} `json:"name,omitempty"`
Measurement struct {
Imperial struct {
Amount float64 `json:"amount,omitempty"`
Unit struct {
ID string `json:"id,omitempty"`
Name struct {
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
Rendered string `json:"rendered,omitempty"`
} `json:"name,omitempty"`
Type string `json:"type,omitempty"`
IngredientPluralizable bool `json:"ingredient_pluralizable,omitempty"`
} `json:"unit,omitempty"`
} `json:"imperial,omitempty"`
Metric struct {
Amount int `json:"amount,omitempty"`
Unit struct {
ID string `json:"id,omitempty"`
Name struct {
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
Rendered string `json:"rendered,omitempty"`
} `json:"name,omitempty"`
Type string `json:"type,omitempty"`
FeaturedOrder int `json:"featured_order,omitempty"`
IngredientPluralizable bool `json:"ingredient_pluralizable,omitempty"`
} `json:"unit,omitempty"`
} `json:"metric,omitempty"`
} `json:"measurement,omitempty"`
IsDivided bool `json:"is_divided,omitempty"`
IsPartner bool `json:"is_partner,omitempty"`
} `json:"ingredients,omitempty"`
Utensils []struct {
ID string `json:"id,omitempty"`
Name struct {
Rendered string `json:"rendered,omitempty"`
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
} `json:"name,omitempty"`
Size struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
} `json:"size,omitempty"`
} `json:"utensils,omitempty"`
} `json:"steps,omitempty"`
Utensils []struct {
ID string `json:"id,omitempty"`
Name struct {
Rendered string `json:"rendered,omitempty"`
One string `json:"one,omitempty"`
Many string `json:"many,omitempty"`
} `json:"name,omitempty"`
Size struct {
ID string `json:"id,omitempty"`
Name string `json:"name,omitempty"`
} `json:"size,omitempty"`
Amount int `json:"amount,omitempty"`
} `json:"utensils,omitempty"`
}
type KitchenStoriesScript ¶
type KitchenStoriesScript struct {
Props struct {
PageProps struct {
DehydratedState struct {
Queries []struct {
State struct {
Data KitchenStoriesRecipe `json:"data,omitempty"`
} `json:"state,omitempty"`
} `json:"queries,omitempty"`
} `json:"dehydratedState,omitempty"`
} `json:"pageProps,omitempty"`
} `json:"props,omitempty"`
}
type KptnCookRecipe ¶
type KptnCookRecipe struct {
Title string `json:"title"`
Rtype string `json:"rtype"`
Gdocs string `json:"gdocs"`
AuthorComment string `json:"authorComment"`
UID string `json:"uid"`
Country string `json:"country"`
OtherIngred string `json:"otherIngred"`
PreparationTime int `json:"preparationTime"`
CookingTime int `json:"cookingTime"`
RecipeNutrition struct {
Calories float64 `json:"calories"`
Protein float64 `json:"protein"`
Fat float64 `json:"fat"`
Carbohydrate float64 `json:"carbohydrate"`
} `json:"recipeNutrition"`
ActiveTags []string `json:"activeTags"`
Steps []struct {
Title string `json:"title"`
Image struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"image"`
Ingredients []struct {
IngredientID string `json:"ingredientId"`
Title string `json:"title"`
NumberTitle struct {
Singular string `json:"singular"`
Plural string `json:"plural"`
} `json:"numberTitle"`
Unit struct {
Quantity float64 `json:"quantity"`
Measure string `json:"measure"`
} `json:"unit,omitempty"`
} `json:"ingredients,omitempty"`
} `json:"steps"`
Authors []struct {
ID struct {
Oid string `json:"$oid"`
} `json:"_id"`
Name string `json:"name"`
Link string `json:"link"`
Title string `json:"title"`
Description string `json:"description"`
Facebook string `json:"facebook"`
Instagram string `json:"instagram"`
Twitter string `json:"twitter"`
Sponsor string `json:"sponsor"`
AuthorImage struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"authorImage"`
CreationDate struct {
Date int64 `json:"$date"`
} `json:"creationDate"`
UpdateDate struct {
Date int64 `json:"$date"`
} `json:"updateDate"`
} `json:"authors"`
Ingredients []struct {
Quantity float64 `json:"quantity,omitempty"`
Measure string `json:"measure,omitempty"`
MetricQuantity float64 `json:"metricQuantity,omitempty"`
MetricMeasure string `json:"metricMeasure,omitempty"`
QuantityUS float64 `json:"quantityUS,omitempty"`
MeasureUS string `json:"measureUS,omitempty"`
ImperialQuantity float64 `json:"imperialQuantity,omitempty"`
ImperialMeasure string `json:"imperialMeasure,omitempty"`
QuantityUSProd float64 `json:"quantityUSProd,omitempty"`
MeasureUSProd string `json:"measureUSProd,omitempty"`
ImperialProductQuantity float64 `json:"imperialProductQuantity,omitempty"`
ImperialProductMeasure string `json:"imperialProductMeasure,omitempty"`
Ingredient struct {
ID struct {
Oid string `json:"$oid"`
} `json:"_id"`
Typ string `json:"typ"`
Title string `json:"title"`
NumberTitle struct {
Singular string `json:"singular"`
Plural string `json:"plural"`
} `json:"numberTitle"`
UncountableTitle string `json:"uncountableTitle"`
Category string `json:"category"`
Key string `json:"key"`
Desc string `json:"desc"`
Image struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"image"`
IsSponsored bool `json:"isSponsored"`
Measures struct {
De []string `json:"de"`
Us []string `json:"us"`
} `json:"measures"`
Synonym string `json:"synonym"`
Brands []struct {
ID string `json:"id"`
Name string `json:"name"`
Countries []string `json:"countries"`
IngredientTitle struct {
Singular string `json:"singular"`
Plural string `json:"plural"`
} `json:"ingredientTitle"`
UncountableTitle string `json:"uncountableTitle"`
IngredientImage struct {
Name string `json:"name"`
URL string `json:"url"`
} `json:"ingredientImage"`
} `json:"brands"`
CreationDate struct {
Date int64 `json:"$date"`
} `json:"creationDate"`
UpdateDate struct {
Date int64 `json:"$date"`
} `json:"updateDate"`
} `json:"ingredient,omitempty"`
} `json:"ingredients"`
ImageList []struct {
Name string `json:"name"`
URL string `json:"url"`
Type string `json:"type"`
} `json:"imageList"`
LocalizedPublishDate struct {
En struct {
Date int64 `json:"$date"`
} `json:"en"`
De struct {
Date int64 `json:"$date"`
} `json:"de"`
} `json:"localizedPublishDate"`
TrackingMode string `json:"trackingMode"`
Feature string `json:"feature"`
PublishDuration struct {
En int `json:"en"`
De int `json:"de"`
} `json:"publishDuration"`
IngredientTags string `json:"ingredientTags"`
FavoriteCount int `json:"favoriteCount"`
PublishDates struct {
En []struct {
Date int64 `json:"$date"`
} `json:"en"`
De []struct {
Date int64 `json:"$date"`
} `json:"de"`
} `json:"publishDates"`
CreationDate struct {
Date int64 `json:"$date"`
} `json:"creationDate"`
UpdateDate struct {
Date int64 `json:"$date"`
} `json:"updateDate"`
}
type MarleySpoonData ¶
type MarleySpoonData struct {
ID int `json:"id,omitempty"`
Name string `json:"name,omitempty"`
Subtitle string `json:"subtitle,omitempty"`
NameWithSubtitle string `json:"name_with_subtitle,omitempty"`
Classic bool `json:"classic,omitempty"`
Slug string `json:"slug,omitempty"`
VariantID int `json:"variant_id,omitempty"`
Country string `json:"country,omitempty"`
Brand string `json:"brand,omitempty"`
Description string `json:"description,omitempty"`
MealType string `json:"meal_type,omitempty"`
Calories int `json:"calories,omitempty"`
Difficulty string `json:"difficulty,omitempty"`
PreparationTime string `json:"preparation_time,omitempty"`
ProductType string `json:"product_type,omitempty"`
MealAttributes []string `json:"meal_attributes,omitempty"`
Nutrition struct {
Calories string `json:"calories,omitempty"`
Carbs string `json:"carbs,omitempty"`
Proteins string `json:"proteins,omitempty"`
Fat string `json:"fat,omitempty"`
} `json:"nutrition,omitempty"`
Sku string `json:"sku,omitempty"`
RecipeCardURL string `json:"recipe_card_url,omitempty"`
Image struct {
Thumbnail string `json:"thumbnail,omitempty"`
Small string `json:"small,omitempty"`
Medium string `json:"medium,omitempty"`
Large string `json:"large,omitempty"`
} `json:"image,omitempty"`
AdditionalAllergens []string `json:"additional_allergens,omitempty"`
Steps []struct {
Position int `json:"position,omitempty"`
Title string `json:"title,omitempty"`
Description string `json:"description,omitempty"`
Photo string `json:"photo,omitempty"`
} `json:"steps,omitempty"`
Ingredients []struct {
Name string `json:"name,omitempty"`
Image struct {
Thumbnail string `json:"thumbnail,omitempty"`
Medium string `json:"medium,omitempty"`
} `json:"image,omitempty"`
Allergens []string `json:"allergens,omitempty"`
NameWithQuantity string `json:"name_with_quantity,omitempty"`
} `json:"ingredients,omitempty"`
AssumedIngredients []struct {
Name string `json:"name,omitempty"`
} `json:"assumed_ingredients,omitempty"`
AssumedCookingUtilities []struct {
Name string `json:"name,omitempty"`
} `json:"assumed_cooking_utilities,omitempty"`
Chef struct {
Name string `json:"name,omitempty"`
Description string `json:"description,omitempty"`
Bio string `json:"bio,omitempty"`
Image struct {
Thumbnail string `json:"thumbnail,omitempty"`
Medium string `json:"medium,omitempty"`
} `json:"image,omitempty"`
Slug string `json:"slug,omitempty"`
} `json:"chef,omitempty"`
CookingTip interface{} `json:"cooking_tip,omitempty"`
}
MarleySpoonData struct is generated using https://mholt.github.io/json-to-go/
Click to show internal directories.
Click to hide internal directories.