Advertisement
Guest User

Untitled

a guest
Dec 30th, 2021
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.70 KB | None | 0 0
  1. from numpy import record
  2. import requests
  3. import json
  4. import time
  5. from datetime import datetime
  6. import matplotlib.pyplot as plt, mpld3
  7. import os
  8.  
  9.  
  10. def parse_json(response):
  11.     response =json.loads(response.text)
  12.     total_viewers = 0
  13.     obj = {
  14.                 "total_viewers": total_viewers,
  15.                 "live_streams": []
  16.             }
  17.  
  18.     for stream in response:
  19.         if stream['status'] == 'live':
  20.             live_stream = {
  21.                 "name": "",
  22.                 "viewers": 0
  23.             }
  24.             live_stream['name'], live_stream['viewers'] =stream['channel']['name'], stream['live_viewers']
  25.             obj['live_streams'].append(live_stream)
  26.             total_viewers += stream['live_viewers']
  27.  
  28.     obj['total_viewers'] = total_viewers
  29.     print(obj)
  30.     return obj
  31.  
  32. def holo_viewers():
  33.     response = requests.get("https://holodex.net/api/v2/live?org=Hololive")
  34.     return parse_json(response)
  35.  
  36. def niji_viewers():
  37.     response = requests.get("https://holodex.net/api/v2/live?org=Nijisanji")
  38.     return parse_json(response)
  39.  
  40. if __name__ == '__main__':
  41.     recorded_at = datetime.utcnow()
  42.     output_json = open("records.json", "a+")
  43.     html_file= open("index.html","w")
  44.     holo_array = [0]
  45.     niji_array = [0]
  46.     date_array = [recorded_at]
  47.  
  48.     fig = plt.figure(figsize=(11, 7))
  49.     ax = fig.add_subplot(111)
  50.     holoplot, = ax.plot(date_array, holo_array, label="Hololive", color="blue")
  51.     nijiplot, = ax.plot(date_array, niji_array, label="Nijisanji", color="red")
  52.     plt.xlabel("time in UTC")
  53.     plt.ylabel("total number of concurrent viewers")
  54.     plt.legend()
  55.  
  56.     while True:
  57.         holo_obj, niji_obj = holo_viewers(), niji_viewers()
  58.         recorded_at = datetime.utcnow()
  59.  
  60.         date_array.append(recorded_at)
  61.         holo_array.append(holo_obj['total_viewers'])
  62.         niji_array.append(niji_obj['total_viewers'])
  63.  
  64.         print(" Hololive viewers at time (UTC)", recorded_at)
  65.         print(holo_obj)
  66.         print(" Nijisanji viewers at time (UTC)", recorded_at)
  67.         print(niji_obj)
  68.  
  69.         obj = {
  70.             "time": str(recorded_at),
  71.             "nijisanji": niji_obj,
  72.             "hololive": holo_obj
  73.         }
  74.         output_json.write(json.dumps(obj))
  75.  
  76.         output_json.flush()
  77.         os.fsync(output_json.fileno())
  78.        
  79.         holoplot, = ax.plot(date_array, holo_array, label="Hololive", color="blue")
  80.         nijiplot, = ax.plot(date_array, niji_array, label="Nijisanji", color="red")
  81.         fig.canvas.draw()
  82.         fig.canvas.flush_events()
  83.  
  84.         html_str = mpld3.fig_to_html(fig)
  85.         html_file.seek(0)
  86.         html_file.write(html_str)
  87.         html_file.truncate()
  88.  
  89.         time.sleep(600)
  90.    
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement