https://github.com/rssnyder/taco-bell-python
A python sdk for Taco Bell.
https://github.com/rssnyder/taco-bell-python
Last synced: about 1 year ago
JSON representation
A python sdk for Taco Bell.
- Host: GitHub
- URL: https://github.com/rssnyder/taco-bell-python
- Owner: rssnyder
- License: mit
- Created: 2021-01-07T21:26:14.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2021-01-08T23:31:52.000Z (over 5 years ago)
- Last Synced: 2025-03-30T22:06:09.318Z (about 1 year ago)
- Language: Python
- Size: 21.5 KB
- Stars: 4
- Watchers: 1
- Forks: 2
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: .github/CODEOWNERS
Awesome Lists containing this project
README
# Taco Bell Python
A python sdk for Taco Bell.
## Goal
To be able to order my favorite taco bell items (rip potatoes) via code.
## What Works
1. Logging into Taco Bell account with username/password
2. Adding a single, uncustomized item to your cart
3. Adding a customized item to your cart, either adding extras or modifying what comes by default
4. Getting your cart total cost
5. Find the nearest stores and set store for pickup
## Usage
Sign into your Taco Bell account with your username (email) and password:
```
from tacobell import TacoBell
tbell = TacoBell('rileysndr@gmail.com', '')
```
Add an item to your cart:
```
tbell.add_to_cart('Cheesy Bean and Rice Burrito')
```
Add a customized item to your cart:
```
tbell.add_to_cart_customized(
'Cheesy Bean and Rice Burrito',
sauces=[
'Red Sauce',
'Avocado Ranch'
],
addons=[
'3 Cheese Blend'
]
)
```
```
tbell.add_to_cart_customized(
'Cheesy Bean and Rice Burrito',
modify=[
('Creamy Jalapeño Sauce', 'EXTRA')
]
)
```
Get your cart total:
```
tbell.cart_total()
```
Find your desired pickup location:
```
for store in tbell.find_store('', ''):
print(store)
```
Set your pickup location:
```
tbell.set_pickup('')
```
## Current problems/issues
I am accomplishing this by exporling the network calls made on the Taco Bell site. I will publish the API endpoints I have found and how to use them.
It seems like logging in and doing actions is hit or miss. I am unsure if this is some sort of anti-robot protections taco bell has or they are just blocking my IP every once and a while.
There is no great way to list items, so for now I am building a relationship of item names -> product codes. Hopefull this can be replaced by a search function later.
## Known API Endpoints
### Root URL: `https://www.tacobell.com`
### Login: POST `/j_spring_security_check`
Data:
```
{
"j_username": ,
"j_password": ,
"CSRFToken":
}
```
### Cart Total: GET `/cart/miniCart/SUBTOTAL`
Always returns 200 status code
### Add uncustomized item to cart: POST `/cart/add`
Params:
```
{
"productCodePost": ,
"CSRFToken":
}
```
### Get options for item customization: GET `/p//customizationOverlay?store=`
Example return data in `tests/customizations.json`
### Add customized item to cart: POST `/cart/add-composite`
Data:
```
{
"baseProduct": ,
"code": ,
"qty": ,
"includeProduct": [
{
"code": ,
"group": "included",
"qty": 1
}
],
"modifierProduct": [
{
"code": ,
"group": ,
"qty": 1
}
]
}
```
### Find Stores: GET `/store-finder/findStores`
Params:
```
{
"latitude": ,
"longitude":
}
```
### Set Pickup Store: POST `/pickup-location/pickupLocation`
Params:
```
{
"storeName": ,
"CSRFToken":
}
```
For these, you can change the items that come on the product normall with the `includeProduct` list. You can then add extra items with the `modifierProduct` list.
Get modification options: `p//customizationOverlay?store=`
The return data here is a huge JSON with all your options, the meat of the code is taking your modification input and finding the correct modifier code for what you want.
## Contributing
Contributions are obviously welcome. Exporing the backend Taco Bell API is most of the work. Until we can get a good source for product codes I will be putting them in the code by hand.
Things on the ToDo list:
1. Query for list of products and codes
2. Select/Find store to send order to
3. Select payment method
4. Checkout/Submit order