Closed tonykang22 closed 1 year ago
from flask import Flask, Response, request
import requests
import json
app = Flask(__name__)
@app.route('/item', methods=['POST'])
def item():
params = request.get_json()['data']
result = []
for element in params:
try:
result.append(get_item_scout_indicator(element))
except Exception:
continue
result_dict = [indicator.__dict__ for indicator in result]
return Response(json.dumps({'data': result_dict}), mimetype='application/json')
def get_item_scout_indicator(search_word):
item_id = get_item_scout_item_id(search_word)
raw_indicator = get_item_scout_general(item_id)
coupang_indicator = get_item_scout_coupang(item_id)
final_indicator = map_indicator(search_word, raw_indicator, coupang_indicator)
return final_indicator
def get_item_scout_item_id(search_word):
search_format = {'keyword':search_word}
response = requests.post('https://api.itemscout.io/api/keyword', json=search_format)
return response.json()['data']
def get_item_scout_general(item_id):
response = requests.get('https://api.itemscout.io/api/v2/keyword/stats/' + str(item_id))
return response.json()['data']
def get_item_scout_coupang(item_id):
response = requests.get('https://api.itemscout.io/api/v2/keyword/coupang_stats/' + str(item_id))
return response.json()['data']
def map_indicator(search_word, raw_indicator, coupang_indicator):
item = ItemScoutIndicatorDto()
item.search_term = search_word
item.intensity_of_competition = raw_indicator['competitionIntensity']
item.coupang_competition_score = coupang_indicator['coupangCompetitionScore']
item.proportion_of_overseas_products = raw_indicator['overseaProductPercent']
item.proportion_of_actual_purchase = raw_indicator['soldProductPercent']
item.coupang_average_price = raw_indicator['averagePrice']
item.average_price = coupang_indicator['coupangAveragePrice']
return item
class ItemScoutIndicatorDto:
def __init__(self):
self.search_term = ""
self.intensity_of_competition = 0.0
self.coupang_competition_score = 0.0
self.proportion_of_overseas_products = 0.0
self.proportion_of_actual_purchase = 0.0
self.coupang_average_price = 0.0
self.average_price = 0.0
self.related_keywords = []
{
"data": [
{
"search_term": "장난감",
"intensity_of_competition": 247.53,
"coupang_competition_score": 20,
"proportion_of_overseas_products": 5,
"proportion_of_actual_purchase": 87.5,
"coupang_average_price": 40006,
"average_price": 19616.39,
"related_keywords": []
},
{
"search_term": "아이패드",
"intensity_of_competition": 6.55,
"coupang_competition_score": 80,
"proportion_of_overseas_products": 15,
"proportion_of_actual_purchase": 32.5,
"coupang_average_price": 807981,
"average_price": 1147755.14,
"related_keywords": []
},
{
"search_term": "노트북",
"intensity_of_competition": 77.53,
"coupang_competition_score": 40,
"proportion_of_overseas_products": 0,
"proportion_of_actual_purchase": 72.5,
"coupang_average_price": 1230986,
"average_price": 793544.17,
"related_keywords": []
},
{
"search_term": "모기향",
"intensity_of_competition": 24.15,
"coupang_competition_score": 60,
"proportion_of_overseas_products": 0,
"proportion_of_actual_purchase": 82.5,
"coupang_average_price": 5367,
"average_price": 17980.56,
"related_keywords": []
}
]
}
CloudFunctions for Itemscout
개요
create Select-score
작업의 병목은 Itemscout API 호출 limit186 에 착안하여 CloudFunctions 사용하도록 변경