https://github.com/8area8/p5__foodlik
An UI based on OpenFoodFact.
https://github.com/8area8/p5__foodlik
cli python sql student
Last synced: 4 months ago
JSON representation
An UI based on OpenFoodFact.
- Host: GitHub
- URL: https://github.com/8area8/p5__foodlik
- Owner: 8area8
- License: unlicense
- Created: 2018-06-24T17:24:43.000Z (almost 7 years ago)
- Default Branch: master
- Last Pushed: 2018-07-24T10:44:37.000Z (almost 7 years ago)
- Last Synced: 2025-01-14T05:13:37.828Z (5 months ago)
- Topics: cli, python, sql, student
- Language: Python
- Size: 9.98 MB
- Stars: 1
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Foodlik, an API for good people
```ascii
oooooooooooo .o8 oooo o8o oooo
'888' '8 "888 '888 '"' `888
888 .ooooo. .ooooo. .oooo888 888 oooo 888 oooo
888oooo8 d88' '88b d88' '88b d88' '888 888 `888 888 .8P'
888 " 888 888 888 888 888 888 888 888 888888.
888 888 888 888 888 888 888 888 888 888 `88b.
o888o 'Y8bod8P' 'Y8bod8P' `Y8bod88P" o888o o888o o888o o888o
```*An elegant UI based on OpenFoodFact.*
>**NOTE :** enlarge the window of your SHELL for an optimal result
The application has a large portion of French food listed on OpenFoodFact. It repeats these foods, displays their information and generates substitute foods with a higher nutri-score.
Scrum project made with [Trello](https://trello.com):
[](https://trello.com/b/6xV0TMFR/p5-foodlik)## I - Installation
This UI need some other programs to work well.
### 1.1 - Install Python
Foodlik is based on python, an elegant coding langage.
Get the last Python's version at the [following link](https://www.python.org/).
Be sure you got the 3.6 version (or newer).
Check for "pip" and for the root integration during the installation.### 1.2 - Install the database
Curently, Foodlik support PostgreSQL and MySQL.
PostgreSQL installation : [follow the link](https://www.postgresql.org/).
MySQL installation : [follow the link](https://www.mysql.com/). Install the MySQL GPL version.#### 1.2.1 - ID, password and environnment variables
You can create a new file and write your ID and password database.
Create an ```app_env``` file at the root of the project.
insert in:```bash
export POSTGRES_USER="your_id"
export POSTGRES_PASSWORD="your_password"export MYSQL_USER="your_id"
export MYSQL_PASSWORD="your_password"
```Replacing the identifiers and passwords with yours.
Then start the file in your console (```source app_env``` or ```. app_env```).
Environment variables will be loaded at each application launch,
which will save you from having to retype your username and password.The name "app_env" is automatically ignored by Git.
I advise to enter users who have all access to avoid unpleasant surprises ("postgres" for PostgreSQL and "root" for MySQL).### 1.3 - Install some Python's libraries
Foodlik uses some third-party Python's librairie.
**Note:** You should set a [new virtual environment](http://python-guide-pt-br.readthedocs.io/fr/latest/dev/virtualenvs.html) before installing.
* ```pip install psycopg2```. Only if you want to use PostgreSQL.
* ```pip install mysql-connector```. Only if you want to use MySQL.
* ```pip install docopt```. Allow you to write a good Shell parser.
* ```pip install prompt-toolkit```. Allow you to use auto-completion.
* ```pip install requests```. Allow you to use the requests easily.
* ```pip install termcolor```. Allow you to display colored texts.## II - Quickstart
1. Install python 3.6 and PostgreSQL or MySQL.
1. Create a new virtual environment and install the required modules (```pip install -r requirements.txt``` will install all required packages).
1. Launch the chosen server. You can save your ID and password using environnment variables.
1. Open your favorite SHELL at the root of the folder.
1. Type ```python main.py --psql create_database``` and wait few minutes.
1. Type ```python main.py --psql```.
1. Enjoy.>**Note :** you can type ```--msql```in place of ```--psql``` if you want to use the MySQL database.
## III - Structure
### 3.1 - User Interface
The user interface has a Home and two parts with 3 and 2 sections.
The first part is the product selection and contains:
* the categories
* products of a category
* the selected productThe second part is the substitute view and contains:
* the substitutes list
* the substitute pageeach section follows the following pattern:
* A header: displays the title of the section.
* a body: displays the contents of the section.
* a footer: displays the possible commands in the section.**Exemples :**


### 3.2 - DATAS
The data in this program is all from the OpenFoodFact API.
First data are the categories, numbering 234.next come the products (about 18,000 products).
Each product has:* a name (title)
* a description
* some stores
* some categories
* an url to the OpenFoodFact page
* a nutri-scorethen substitutes. They simply link the products (they are products).
#### 3.2.1 - Filters
The products have been filtered. Have been set aside:
* those who did not belong to the categories selected
* those who did not have a nutri-score
* duplicate products (a product with a similar name has already been added)#### 3.2.2 - Substituts
Substitutes follow two algorithms, each of which returns a substitution product.
* The first will look for a product with a better score in the current category.
* The second will look for a product with a higher score in the lowest category of the targeted product (the result is generally more accurate).## IV - Options
The UI has several options that have passed since the SHELL.
### 4.1 - Load the datas
**Note :** The update is done slowly. Do not be presced.
* Type ```python main.py --load_pages```. This option retrieve data from the OpenFoodFact site.
>**Note :** You can also specify the desired page number by typing ```python main.py --load_pages 1 to 5```. The pattern is as follows: ```main.py (-l | --load_pages) [FIRST-PAGE [to LAST-PAGE]]```
### 4.2 - (Re)create the database
* Data are stored in a Json file. Let's go to the Data-base : ```python main.py --create_database```. This will delete and recreate the database foodlik, and add all Json data inside.
>**Note :** Recreate the MySQL database is fifteen times longer than the PosteSQL database. It's due to their respective python library.
### 4.3 - the mix of both
* Type ```python main.py --psql --full_install``` to use the mix of the two previous methods.
>**Note :** don't forget you can replace ```--psql``` by ```--msql```.
## V - FAQ
>```could not connect to server: Connection refused``` When i launch the application.
* Be sure the PostgreSQL / MySQL server is running.
>```ERROR: database "database_name" is being accessed by other users``` When i launch the application.
* Disconnect your pgAdmin connection. A way to solve it is to restart the server.