iv_trending.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. from invidious import *
  2. import requests
  3. import sys
  4. from plugins.plugin import Plugin
  5. sys.path.append("..")
  6. from src.video import Video
  7. from src.channel import Channel
  8. from src.playlist import Playlist
  9. from src.utils import *
  10. from src.history import History
  11. from src.config import Config
  12. class InvidiousTrending(Plugin):
  13. def __init__(self, history: History=History(), config: Config=Config()) -> None:
  14. super().__init__(history, config)
  15. self.history = history
  16. self.config = config
  17. self.name = "[+] Invidious: Trending"
  18. self.category = "Invidious"
  19. self.query_description = """Please, input args (separate they with &) or leave this field empty.
  20. type: Music, Gaming, News, Movies (Ex: type=News)
  21. region: your region (Ex: region=US)
  22. Example: type=music&region=US
  23. """
  24. self.params = {
  25. 'query' : True,
  26. 'type' : False,
  27. 'region' : False
  28. }
  29. self.flag = "-it"
  30. self.full_flag = "--ivtrending"
  31. self.flag_help = "show trending videos from invidious"
  32. self.flag_action = ""
  33. def get_trending(self, query: str=""):
  34. dct = argstr_to_dict(query)
  35. trending = self.invidious.get_trending(**dct)
  36. items = []
  37. for video in trending:
  38. if video == None: continue
  39. video.convert(Video)
  40. video.url = self.invidious.get_working_mirror() + "/watch?v=" + video.videoId
  41. inHistory = video.in_history(self.history)
  42. video.isWatched = inHistory
  43. item = video.to_json()
  44. items.append(item)
  45. return items
  46. def get_items(self, params):
  47. query = ""
  48. if 'query' in params:
  49. query = params['query']
  50. return self.get_trending(query=query)