Skip to main content

Data with Babish DB

Project description

Data with Babish

This project aims to analyze the recipes of the popular YouTube channel Binging with Babish and convert them into beautiful data.

Visualizations

Datasets

ibdb.episodes.json

Episodes and related guests, recipes and inspiration in the format:

[
  {
    "episode_id": "epid",
    "name": "Episode Name",
    "published_date": "YYYY-MM-DD",
    "youtube_link": "https://www.youtube.com/watch?v=...",
    "official_link": "https://www.bingingwithbabish.com/recipes/...",
    "image_link": "https://preview.image.host/image.png",
    "related": {
      "show": {
        "show_id": 1,
        "name": "Binging with Babish"
      },
      "guests": [
        {
          "guest_id": 1,
          "name": "Guest Name"
        }
      ],
      "inspired_by": [
        {
          "reference_id": 1,
          "type": "tv_show|movie|youtube_channel|video_game|other",
          "name": "Reference Name",
          "description": "A description of the reference.",
          "external_link": "https://link.to.more/"
        }
      ],
      "recipes": [
        {
          "recipe_id": 1,
          "name": "Recipe Name",
          "raw_ingredient_list": "Ingedient 1\nIngredient 2\n...",
          "raw_procedure": "Step 1.\nStep 2.\n...",
          "ingredient_list": [
            [
              1.0,                   # quantity
              "tablespoon",          # unit
              "Butter",              # name
              "1 tablespoon butter"  # raw text from recipe
            ],
            # ...
          ]
        }
      ]
    }
  },
  # ...
]

ibdb.guests.json

Guests and their appearances in the format:

[
  {
    "guest_id": 1,
    "name": "Guest Name",
    "appearances": [
      {
        "episode_id": "epid",
        "name": "Episode Name",
        "published_date": "YYYY-MM-DD",
        "youtube_link": "https://www.youtube.com/watch?v=...",
        "official_link": "https://www.bingingwithbabish.com/recipes/...",
        "image_link": "https://preview.image.host/image.png"
      }
    ]
  },
  # ...
]

ibdb.recipes.json

Recipes and their origin episode in the format:

[
  {
    "recipe_id": 1,
    "name": "Recipe Name",
    "raw_ingredient_list": "Ingedient 1\nIngredient 2\n...",
    "raw_procedure": "Step 1.\nStep 2.\n...",
    "source": {
      "episode_id": "epid",
      "name": "Episode Name",
      "published_date": "YYYY-MM-DD",
      "youtube_link": "https://www.youtube.com/watch?v=...",
      "official_link": "https://www.bingingwithbabish.com/recipes/...",
      "image_link": "https://preview.image.host/image.png"
    },
    "ingredient_list": [
      [
        1.0,                   # quantity
        "tablespoon",          # unit
        "Butter",              # name
        "1 tablespoon butter"  # raw text from recipe
      ],
      # ...
    ]
  },
  # ...
]

ibdb.references.json

TV Shows, Movies, etc. References and when they were referenced in the format:

[
  {
    "reference_id": 1,
    "type": "tv_show|movie|youtube_channel|video_game|other",
    "name": "Reference Name",
    "description": "A description of the reference.",
    "external_link": "https://link.to.more/",
    "episodes_inspired": [
      {
        "episode_id": "epid",
        "name": "Episode Name",
        "published_date": "YYYY-MM-DD",
        "youtube_link": "https://www.youtube.com/watch?v=...",
        "official_link": "https://www.bingingwithbabish.com/recipes/...",
        "image_link": "https://preview.image.host/image.png"
      }
    ]
  },
  # ...
]

ibdb.shows.json

Babish's Shows and their episode lists in the format:

[
  {
    "show_id": 1,
    "name": "Binging with Babish",
    "episodes": [
      {
        "episode_id": "epid",
        "name": "Episode Name",
        "published_date": "YYYY-MM-DD",
        "youtube_link": "https://www.youtube.com/watch?v=...",
        "official_link": "https://www.bingingwithbabish.com/recipes/...",
        "image_link": "https://preview.image.host/image.png"
      }
    ]
  },
  # ...
]

babish.json

(Deprecated)

Contains ingredients from BWB Recipes in the format:

[
  {
    "episode_name": "Episode Name",
    "episode_link": "https://www.bingingwithbabish.com/recipes/...",
    "youtube_link": "https://www.youtube.com/watch?v=...",
    "published": "YYYY-MM-DD",
    "recipes": [
      {
        "method": "Method Name (from Episode Name)",
        "ingredients": [
          [
            1.0,                   # quantity
            "tablespoon",          # unit
            "Butter",              # name
            "1 tablespoon butter"  # raw text from recipe
          ],
          # ...
        ]
      },
      # ...
    ]
  },
  # ...
]

Resources

Contributing

Local Development

Required tools: Docker, Docker Compose

  1. Build docker-compose build
  2. Run DB and API docker-compose up -d
  3. Browse http://localhost:5000/
  4. Update DB and datasets docker-compose exec ibdb sync update export
  5. See other commands docker-compose exec ibdb --help

This will use populate_db.py to scrape and upsert episodes into the DB and export.py to generate new datasets/ from the DB's contents.

You can also explore the original populate_babish_json.py and Jupyter Notebooks

  1. cd notebooks/
  2. Start Jupyter on http://localhost:8888 jupyter notebook
  3. Open Babish Recipe Extract.ipynb or Babish Data Analysis.ipynb

NOTE: Be aware that Babish Recipe Extract.ipynb will make LOTS of network calls to the official bingingwithbabish.com website. Calls are cached and rate limited but please be very considerate and only run them if absolutely necessary.

Tests

Tests covering recipe_parser.py are located in the tests/ directory and can be run using pytest.

Required tools: Python 3.8

  1. Install packages pip install -r requirements.txt
  2. Run tests python -m pytest

Docs

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

babish-db-0.0.1.tar.gz (18.5 kB view hashes)

Uploaded Source

Built Distribution

babish_db-0.0.1-py3-none-any.whl (41.8 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page