Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from numpy import record
- import requests
- import json
- import time
- from datetime import datetime
- import matplotlib.pyplot as plt, mpld3
- import os
- def parse_json(response):
- response =json.loads(response.text)
- total_viewers = 0
- obj = {
- "total_viewers": total_viewers,
- "live_streams": []
- }
- for stream in response:
- if stream['status'] == 'live':
- live_stream = {
- "name": "",
- "viewers": 0
- }
- live_stream['name'], live_stream['viewers'] =stream['channel']['name'], stream['live_viewers']
- obj['live_streams'].append(live_stream)
- total_viewers += stream['live_viewers']
- obj['total_viewers'] = total_viewers
- print(obj)
- return obj
- def holo_viewers():
- response = requests.get("https://holodex.net/api/v2/live?org=Hololive")
- return parse_json(response)
- def niji_viewers():
- response = requests.get("https://holodex.net/api/v2/live?org=Nijisanji")
- return parse_json(response)
- if __name__ == '__main__':
- recorded_at = datetime.utcnow()
- output_json = open("records.json", "a+")
- html_file= open("index.html","w")
- holo_array = [0]
- niji_array = [0]
- date_array = [recorded_at]
- fig = plt.figure(figsize=(11, 7))
- ax = fig.add_subplot(111)
- holoplot, = ax.plot(date_array, holo_array, label="Hololive", color="blue")
- nijiplot, = ax.plot(date_array, niji_array, label="Nijisanji", color="red")
- plt.xlabel("time in UTC")
- plt.ylabel("total number of concurrent viewers")
- plt.legend()
- while True:
- holo_obj, niji_obj = holo_viewers(), niji_viewers()
- recorded_at = datetime.utcnow()
- date_array.append(recorded_at)
- holo_array.append(holo_obj['total_viewers'])
- niji_array.append(niji_obj['total_viewers'])
- print(" Hololive viewers at time (UTC)", recorded_at)
- print(holo_obj)
- print(" Nijisanji viewers at time (UTC)", recorded_at)
- print(niji_obj)
- obj = {
- "time": str(recorded_at),
- "nijisanji": niji_obj,
- "hololive": holo_obj
- }
- output_json.write(json.dumps(obj))
- output_json.flush()
- os.fsync(output_json.fileno())
- holoplot, = ax.plot(date_array, holo_array, label="Hololive", color="blue")
- nijiplot, = ax.plot(date_array, niji_array, label="Nijisanji", color="red")
- fig.canvas.draw()
- fig.canvas.flush_events()
- html_str = mpld3.fig_to_html(fig)
- html_file.seek(0)
- html_file.write(html_str)
- html_file.truncate()
- time.sleep(600)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement