#!/usr/bin/env python
|
|
import json
|
|
import re
|
|
|
|
import firebase_admin
|
|
from firebase_admin import credentials
|
|
from firebase_admin import firestore
|
|
|
|
cred = credentials.Certificate('service.json')
|
|
firebase_admin.initialize_app(cred)
|
|
db = firestore.client()
|
|
moviesRef = db.collection('movies')
|
|
|
|
|
|
def get_terms(title):
|
|
title = title.strip().lower()
|
|
title = re.sub(r'[^\w]', ' ', title)
|
|
title = re.sub(r'\s+', ' ', title)
|
|
parts = title.split(' ')
|
|
|
|
terms = dict()
|
|
for part in parts:
|
|
part = part.strip()
|
|
if not part or len(part) < 2:
|
|
continue
|
|
|
|
for i in range(2, len(part) + 1):
|
|
terms[part[:i]] = True
|
|
return terms
|
|
|
|
|
|
def main():
|
|
with open('./imdb-top-250.json') as fp:
|
|
movies = json.load(fp)
|
|
|
|
for movie in movies:
|
|
# Convert `imdb_position` to an `int`
|
|
movie['imdb_position'] = int(movie['imdb_position'])
|
|
|
|
# Add our autocomplete terms
|
|
movie['terms'] = get_terms(movie['title'])
|
|
|
|
print('Uploading:', movie['title'], '-', movie['imdb_position'], '-', set(movie['terms'].keys()))
|
|
|
|
# Create the new document
|
|
moviesRef.document().set(movie)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
main()
|