-
Notifications
You must be signed in to change notification settings - Fork 0
/
seed_database.py
89 lines (78 loc) · 2.58 KB
/
seed_database.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
"""Seed the database"""
import os
import json
from random import choice, randint
from datetime import datetime
import crud, model, server
import requests
os.system('dropdb kdrama-review-db')
os.system('createdb kdrama-review-db')
model.connect_to_db(server.app)
model.db.create_all()
def add_kdramas(kdrama_list):
'''Given a list of kdrama dictionary items, extract
data and store db using crud'''
for kdrama in kdrama_list:
title, overview, poster_path, backdrop_path, kdrama_id = (
kdrama["name"],
kdrama["overview"],
kdrama["poster_path"],
kdrama['backdrop_path'],
kdrama['id'],
)
release_date = kdrama.get("first_air_date", None)
if not release_date: release_date = None
if release_date:
release_date = datetime.strptime(release_date, "%Y-%m-%d")
try:
crud.create_kdrama(kdrama_id, title, overview, release_date, poster_path, backdrop_path)
except:
print(f'problem with INSERT for {kdrama_id}: {title}')
url = 'https://api.themoviedb.org/3/discover/tv'
payload = {'api_key': os.environ['TMDB_API_KEY'],
'language': 'en-US',
'sort_by': 'first_air_date.desc',
'with_original_language': 'ko', # narrows search to only korean dramas
}
'''Get the first page of kdrama results and store total pages'''
res = requests.get(url, params=payload)
data = res.json()
pages = data['total_pages']
'''Stores kdrama data from all pages into database'''
for page in range(1, pages):
payload['page'] = page
res = requests.get(url, params=payload)
data = res.json()
results = data.get('results')
if results:
add_kdramas(results)
print(f'---------- {page} --------------')
else:
print(f'---------- Skipped {page} --------------')
''' Creates 10 test users '''
GENRES = { "16": "Animation",
"18": "Drama",
"35": "Comedy",
"37": "Western",
"80": "Crime",
"99": "Documentary",
"9648": "Mystery",
"10751": "Family",
"10759": "Action & Adventure",
"10762": "Kids",
"10763": "News",
"10764": "Reality",
"10765": "Sci-Fi & Fantasy",
"10766": "Soap",
"10767": "Talk",
"10768": "War & Politics"
}
for n in range(10):
fname = f'User{n+1}'
lname = 'Tester'
email = f'user{n+1}@test.com'
password = 'test'
username = f'user{n+1}'
image_path = f'/static/img/avatars/{randint(1,14)}.png'
fav_genre= choice(list(GENRES))
new_user = crud.create_user(fname, lname, email, password, username, image_path, fav_genre)