website

package
v1.0.5 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 9, 2024 License: MIT Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func RegisterScraper

func RegisterScraper(hostname string, fn model.Scraper)

func Scrape

func Scrape(data *model.DataInput, r *model.Recipe) error

func ScrapeArchanasKitchen

func ScrapeArchanasKitchen(data *model.DataInput, r *model.Recipe) error

func ScrapeCookstr

func ScrapeCookstr(data *model.DataInput, r *model.Recipe) error

func ScrapeFitMenCook

func ScrapeFitMenCook(data *model.DataInput, r *model.Recipe) error

func ScrapeGousto

func ScrapeGousto(data *model.DataInput, r *model.Recipe) error

func ScrapeKitchenStories

func ScrapeKitchenStories(data *model.DataInput, r *model.Recipe) error

func ScrapeKptnCook

func ScrapeKptnCook(data *model.DataInput, r *model.Recipe) error

func ScrapeMarleySpoon

func ScrapeMarleySpoon(data *model.DataInput, r *model.Recipe) error

func ScrapeMob

func ScrapeMob(data *model.DataInput, r *model.Recipe) error

func ScrapeWhatsGabyCooking

func ScrapeWhatsGabyCooking(data *model.DataInput, r *model.Recipe) error

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     int `json:"calories"`
		Protein      int `json:"protein"`
		Fat          int `json:"fat"`
		Carbohydrate int `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/

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL