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 details)

Uploaded Source

Built Distribution

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

Uploaded Python 3

File details

Details for the file babish-db-0.0.1.tar.gz.

File metadata

  • Download URL: babish-db-0.0.1.tar.gz
  • Upload date:
  • Size: 18.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6

File hashes

Hashes for babish-db-0.0.1.tar.gz
Algorithm Hash digest
SHA256 5221ff8b4ab40380c0cb89761d2fd51eadb369770b2d666ab413f2d82738196d
MD5 13d2c497f2ba9458f74b46686bb64554
BLAKE2b-256 05f5239fed2d606bf496d2639cd93295a1177518990c89d1ca5dcd21b3d206ef

See more details on using hashes here.

File details

Details for the file babish_db-0.0.1-py3-none-any.whl.

File metadata

  • Download URL: babish_db-0.0.1-py3-none-any.whl
  • Upload date:
  • Size: 41.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.3.0 pkginfo/1.7.0 requests/2.24.0 setuptools/52.0.0 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.8.6

File hashes

Hashes for babish_db-0.0.1-py3-none-any.whl
Algorithm Hash digest
SHA256 5a30f016af3d2d5caacddac1eeb1f7fa1887fc1c39f3bd67f66ba19689046bdd
MD5 ac7787d4dca1e19ffc146aa78e11be98
BLAKE2b-256 ad01e58e1771a91fc6824e050d679fe547019912f6dda43855eac7d3b36a4b60

See more details on using hashes here.

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