add historical shares into db

This commit is contained in:
MuslemRahimi 2024-06-09 10:31:51 +02:00
parent 44a64c3277
commit 457db2ae4c
5 changed files with 12 additions and 23 deletions

View File

@ -1,13 +1,11 @@
import aiohttp import aiohttp
import asyncio import asyncio
import sqlite3 import sqlite3
import certifi
import json import json
import ujson import ujson
import pandas as pd import pandas as pd
import os import os
from tqdm import tqdm from tqdm import tqdm
import re
import pandas as pd import pandas as pd
from datetime import datetime from datetime import datetime
from ta.utils import * from ta.utils import *
@ -15,8 +13,6 @@ from ta.volatility import *
from ta.momentum import * from ta.momentum import *
from ta.trend import * from ta.trend import *
from ta.volume import * from ta.volume import *
import subprocess
import time
import warnings import warnings
from dotenv import load_dotenv from dotenv import load_dotenv
@ -118,7 +114,8 @@ class StockDatabase:
f"https://financialmodelingprep.com/api/v3/ratios/{symbol}?period=quarter&apikey={api_key}", f"https://financialmodelingprep.com/api/v3/ratios/{symbol}?period=quarter&apikey={api_key}",
f"https://financialmodelingprep.com/api/v3/historical-price-full/stock_split/{symbol}?apikey={api_key}", f"https://financialmodelingprep.com/api/v3/historical-price-full/stock_split/{symbol}?apikey={api_key}",
f"https://financialmodelingprep.com/api/v4/stock_peers?symbol={symbol}&apikey={api_key}", f"https://financialmodelingprep.com/api/v4/stock_peers?symbol={symbol}&apikey={api_key}",
f"https://financialmodelingprep.com/api/v4/institutional-ownership/institutional-holders/symbol-ownership-percent?date=2023-09-30&symbol={symbol}&page=0&apikey={api_key}", f"https://financialmodelingprep.com/api/v4/institutional-ownership/institutional-holders/symbol-ownership-percent?date=2024-03-31&symbol={symbol}&page=0&apikey={api_key}",
f"https://financialmodelingprep.com/api/v4/historical/shares_float?symbol={symbol}&apikey={api_key}",
f"https://financialmodelingprep.com/api/v4/revenue-product-segmentation?symbol={symbol}&structure=flat&period=annual&apikey={api_key}", f"https://financialmodelingprep.com/api/v4/revenue-product-segmentation?symbol={symbol}&structure=flat&period=annual&apikey={api_key}",
f"https://financialmodelingprep.com/api/v4/revenue-geographic-segmentation?symbol={symbol}&structure=flat&apikey={api_key}", f"https://financialmodelingprep.com/api/v4/revenue-geographic-segmentation?symbol={symbol}&structure=flat&apikey={api_key}",
f"https://financialmodelingprep.com/api/v3/analyst-estimates/{symbol}?apikey={api_key}", f"https://financialmodelingprep.com/api/v3/analyst-estimates/{symbol}?apikey={api_key}",
@ -315,6 +312,9 @@ class StockDatabase:
elif "institutional-ownership/institutional-holders" in url: elif "institutional-ownership/institutional-holders" in url:
# Handle list response, save as JSON object # Handle list response, save as JSON object
fundamental_data['shareholders'] = ujson.dumps(parsed_data) fundamental_data['shareholders'] = ujson.dumps(parsed_data)
elif "historical/shares_float" in url:
# Handle list response, save as JSON object
fundamental_data['historicalShares'] = ujson.dumps(parsed_data)
elif "revenue-product-segmentation" in url: elif "revenue-product-segmentation" in url:
# Handle list response, save as JSON object # Handle list response, save as JSON object
fundamental_data['revenue_product_segmentation'] = ujson.dumps(parsed_data) fundamental_data['revenue_product_segmentation'] = ujson.dumps(parsed_data)

View File

@ -1,7 +1,7 @@
import random import random
import numpy as np import numpy as np
from fastapi import FastAPI,Depends,HTTPException, status from fastapi import FastAPI,Depends,HTTPException, status
from typing import List, Dict, Union, Set from typing import List, Dict, Set
from fastapi.middleware.cors import CORSMiddleware from fastapi.middleware.cors import CORSMiddleware
from fastapi.openapi.docs import get_swagger_ui_html from fastapi.openapi.docs import get_swagger_ui_html
@ -10,23 +10,16 @@ from fastapi.security import HTTPBasic, HTTPBasicCredentials
import secrets import secrets
from benzinga import financial_data from benzinga import financial_data
from GetStartEndDate import GetStartEndDate
import ssl
import io import io
import gzip import gzip
from fastapi.responses import StreamingResponse from fastapi.responses import StreamingResponse
from collections import defaultdict
from datetime import date, datetime, timedelta, time
import json
import ujson import ujson
import pandas as pd import pandas as pd
import sqlite3 import sqlite3
from pydantic import BaseModel from pydantic import BaseModel
#from arima import arima #from arima import arima
import re import re
import asyncio
import aiohttp import aiohttp
#import time #import time
import pandas as pd import pandas as pd
@ -115,10 +108,6 @@ cursor_inst.close()
load_dotenv() load_dotenv()
pb = PocketBase('http://127.0.0.1:8090') pb = PocketBase('http://127.0.0.1:8090')
pb_admin_email = os.getenv('POCKETBASE_ADMIN_EMAIL')
pb_password = os.getenv('POCKETBASE_PASSWORD')
admin_data = pb.admins.auth_with_password(pb_admin_email, pb_password)
api_key = os.getenv('FMP_API_KEY') api_key = os.getenv('FMP_API_KEY')
benzinga_key = os.getenv('BENZINGA_API_KEY') benzinga_key = os.getenv('BENZINGA_API_KEY')
@ -2573,7 +2562,7 @@ async def get_wiim(data:TickerData):
res = [] res = []
redis_client.set(cache_key, ujson.dumps(res)) redis_client.set(cache_key, ujson.dumps(res))
redis_client.expire(cache_key, 60*60*2) # Set cache expiration time to 1 day redis_client.expire(cache_key, 60*60*2)
return res return res
@app.get("/rss-feed-wiim") @app.get("/rss-feed-wiim")

View File

@ -3,6 +3,7 @@ let serverRunning = false;
const fastify = require('fastify')({}) const fastify = require('fastify')({})
const cors = require('@fastify/cors'); const cors = require('@fastify/cors');
//Load API KEYS //Load API KEYS
require('dotenv').config({ path: '../app/.env' }); require('dotenv').config({ path: '../app/.env' });
const fmpAPIKey = process.env.FMP_API_KEY; const fmpAPIKey = process.env.FMP_API_KEY;

View File

@ -1066,9 +1066,9 @@
} }
}, },
"node_modules/got": { "node_modules/got": {
"version": "11.8.3", "version": "11.8.6",
"resolved": "https://registry.npmjs.org/got/-/got-11.8.3.tgz", "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz",
"integrity": "sha512-7gtQ5KiPh1RtGS9/Jbv1ofDpBFuq42gyfEib+ejaRBJuj/3tQFeR5+gw57e4ipaU8c/rCjvX6fkQz2lyDlGAOg==", "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==",
"dependencies": { "dependencies": {
"@sindresorhus/is": "^4.0.0", "@sindresorhus/is": "^4.0.0",
"@szmarczak/http-timer": "^4.0.5", "@szmarczak/http-timer": "^4.0.5",

View File

@ -8,8 +8,8 @@
"axios": "^1.6.2", "axios": "^1.6.2",
"blob-util": "^2.0.2", "blob-util": "^2.0.2",
"cheerio": "^1.0.0-rc.12", "cheerio": "^1.0.0-rc.12",
"fastify": "^4.26.0",
"dotenv": "^16.4.5", "dotenv": "^16.4.5",
"fastify": "^4.26.0",
"got": "^11.8.3", "got": "^11.8.3",
"https": "^1.0.0", "https": "^1.0.0",
"mixpanel": "^0.18.0", "mixpanel": "^0.18.0",
@ -24,4 +24,3 @@
"nodemon": "^3.0.1" "nodemon": "^3.0.1"
} }
} }