al_random.py 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. import requests
  2. import sys
  3. from plugins.plugin import Plugin
  4. sys.path.append("..")
  5. from src.video import Video
  6. from src.playlist import Playlist
  7. from src.history import History
  8. from src.config import Config
  9. class AnilibriaRandom(Plugin):
  10. def __init__(self, history: History=History(), config: Config=Config()) -> None:
  11. super().__init__(history, config)
  12. self.history = history
  13. self.config = config
  14. self.name = "[+] AnilibriaTV: Random anime"
  15. self.category = "AnilibriaTV"
  16. self.query_description = """"""
  17. self.params = {
  18. 'api_instance' : False
  19. }
  20. self.flag = "-alr"
  21. self.full_flag = "--anilibriarandom"
  22. self.flag_help = "show random anime"
  23. self.flag_action = "store_true"
  24. self.save_config()
  25. self.api_instance = self.config.get_option(self.category, 'api-instance')
  26. self.instance = self.config.get_option(self.category, 'instance')
  27. def get_random(self, params):
  28. api_instance = self.api_instance
  29. if 'api_instance' in params:
  30. api_instance = params['api_instance']
  31. resp = requests.get(f"{api_instance}/getRandomTitle")
  32. if resp.status_code != 200: return list()
  33. resp = resp.json()
  34. items = []
  35. title = f"{resp['names']['ru']} ({resp['names']['en']})"
  36. host = "https://" + resp["player"]["host"]
  37. purl = f"{self.instance}/release/{resp['code']}.html"
  38. videos = list()
  39. for vid in resp["player"]["playlist"].values():
  40. ititle = "Episode " + str(vid["serie"])
  41. video = Video()
  42. video.title=ititle
  43. video.videoId = vid["hls"]["hd"]
  44. video.url=host+vid["hls"]["hd"]
  45. video.length=resp["type"]["length"]
  46. video.isWatched = video.in_history(self.history)
  47. videos.append(video.to_json())
  48. playlist = Playlist(title, videos, url=purl)
  49. items.append(playlist.to_json())
  50. return items
  51. def get_items(self, params):
  52. return self.get_random(params)
  53. def save_config(self):
  54. self.config.set_option(self.category, 'api-instance', 'https://api.anilibria.tv/v2')
  55. self.config.set_option(self.category, 'instance', 'https://anilibria.tv')