def item(self, url, **kwargs):
     folder = _folders_schema_[self.type][self.style]
     label = folder["id"]
     if isinstance(label, int):
         label = localizedString(label)
     action = folder.get("action", self.type)
     kwargs.update(folder.get("kwargs", {}))
     plot = folder.get("plot", label)
     if isinstance(plot, int):
         plot = localizedString(plot)
     return ListItem(
         label, buildUrl(url, action=action, **kwargs), isFolder=True,
         infos={"video": {"title": label, "plot": plot}})
class BaseVideo(InvidiousItem):

    __json__ = {"videoThumbnails": VideoThumbnails}
    __date__ = {"published"}
    _repr_ = "BaseVideo({0.videoId})"
    _infos_ = {"mediatype": "video"}
    _plot_ = localizedString(30056)
    _menus_ = [
        (30031, "Container.Update(plugin://{addonId}/?action=channel&authorId={authorId})"),
        #(30031, "RunScript({addonId},goToChannel,{authorId})"),
        (30032, "RunScript({addonId},addChannelToFavourites,{authorId})"),
        (30033, "PlayMedia(plugin://plugin.video.youtube/play/?incognito=true&video_id={videoId})")
        #(30033, "RunScript({addonId},playWithYouTube,{videoId})")
    ]

    @property
    def _infos(self):
        return self._infos_

    @property
    def _title(self):
        return self.title

    def _item(self, path):
        return ListItem(
            self._title,
            path,
            infos={"video": dict(self._infos, title=self.title, plot=self.plot())},
            streamInfos={"video": {"duration": self.lengthSeconds}},
            contextMenus=self.menus(authorId=self.authorId, videoId=self.videoId),
            thumb=getattr(self.videoThumbnails, "sddefault", ""))

    def item(self, url, action):
        return self._item(buildUrl(url, action=action, videoId=self.videoId))
class Video(StdVideo):

    _repr_ = "Video({0.videoId})"
    _plot_ = localizedString(30058)
    _live_ = localizedString(30059)

    @property
    def _infos(self):
        if self.liveNow:
            return dict(self._infos_, playcount=0)
        return super(Video, self)._infos

    @property
    def _title(self):
        if self.liveNow:
            return self._live_.format(self)
        return super(Video, self)._title
class Playlist(InvidiousItem):

    _repr_ = "Playlist({0.playlistId})"
    _plot_ = localizedString(30061)

    def item(self, url, action):
        return ListItem(
            self.title,
            buildUrl(url, action=action, playlistId=self.playlistId),
            isFolder=True,
            infos={"video": {"plot": self.plot()}},
            poster=self.playlistThumbnail)
class Channel(InvidiousItem):

    __json__ = {"authorThumbnails": AuthorThumbnails}
    _repr_ = "Channel({0.author})"
    _plot_ = localizedString(30060)

    @property
    def thumbnail(self):
        return getattr(self.authorThumbnails, "512", "")

    def item(self, url, action):
        return ListItem(
            self.author,
            buildUrl(url, action=action, authorId=self.authorId),
            isFolder=True,
            infos={"video": {"plot": self.plot()}},
            poster=self.thumbnail)
Ejemplo n.º 6
0
 def addItems(self, items, *args, **kwargs):
     if not xbmcplugin.addDirectoryItems(
             self.handle,
         [item.asItem() for item in items.items(self.url, *args) if item]):
         raise
     if items.more:
         continuation = getattr(items, "continuation", None)
         if continuation:
             kwargs["continuation"] = continuation
         else:
             kwargs["page"] = int(kwargs.get("page", 1)) + 1
         self.addItem(getMoreItem(self.url, action=self.action, **kwargs))
     if items.content:
         xbmcplugin.setContent(self.handle, items.content)
     if items.category:
         if self.category:
             self.setCategory(" / ".join(
                 (items.category, localizedString(self.category))))
         else:
             self.setCategory(items.category)
     return True
Ejemplo n.º 7
0
class BaseVideo(InvidiousItem):

    __json__ = {"videoThumbnails": VideoThumbnails}
    __date__ = {"published"}
    _repr_ = "BaseVideo({0.videoId})"
    _infos_ = {"mediatype": "video"}
    _plot_ = localizedString(30056)
    _menus_ = [
        (30033, "RunScript({addonId},playWithYouTube,{videoId})"),
        (30031, "RunScript({addonId},goToChannel,{authorId})"),
        (30032, "RunScript({addonId},addChannelToFavourites,{authorId})"),
        (30034, "RunScript({addonId},addChannelToFeed,{authorId},{author})")
    ]

    @property
    def _infos(self):
        return self._infos_

    @property
    def _title(self):
        return self.title

    def _item(self, path):
        return ListItem(
            self._title,
            path,
            infos={
                "video": dict(self._infos, title=self.title, plot=self.plot())
            },
            streamInfos={"video": {
                "duration": self.lengthSeconds
            }},
            contextMenus=self.menus(authorId=self.authorId,
                                    author=quote_plus(
                                        self.author.encode("utf-8")),
                                    videoId=self.videoId),
            thumb=getattr(self.videoThumbnails, "sddefault", ""))

    def item(self, url, action):
        return self._item(buildUrl(url, action=action, videoId=self.videoId))
Ejemplo n.º 8
0
class Channel(InvidiousItem):

    __json__ = {"authorThumbnails": AuthorThumbnails}
    _repr_ = "Channel({0.author})"
    _plot_ = localizedString(30060)
    _menus_ = [(30034,
                "RunScript({addonId},addChannelToFeed,{authorId},{author})")]

    @property
    def thumbnail(self):
        return getattr(self.authorThumbnails, "512", "")

    def item(self, url, action):
        return ListItem(self.author,
                        buildUrl(url, action=action, authorId=self.authorId),
                        isFolder=True,
                        infos={"video": {
                            "plot": self.plot()
                        }},
                        contextMenus=self.menus(
                            authorId=self.authorId,
                            author=quote_plus(self.author.encode("utf-8"))),
                        poster=self.thumbnail)
Ejemplo n.º 9
0
 def endDirectory(self, success):
     if success and self.category:
         self.setCategory(localizedString(self.category))
     xbmcplugin.endOfDirectory(self.handle, success)
class StdVideo(ShortVideo):

    _repr_ = "StdVideo({0.videoId})"
    _plot_ = localizedString(30058)
class ShortVideo(BaseVideo):

    _repr_ = "ShortVideo({0.videoId})"
    _plot_ = localizedString(30057)
 def menus(self, **kwargs):
     return [(localizedString(label),
              action.format(addonId=getAddonId(), **kwargs))
             for label, action in self._menus_]
Ejemplo n.º 13
0
 def menus(cls, **kwargs):
     return [(localizedString(label).format(**kwargs),
              action.format(addonId=getAddonId(), **kwargs))
             for label, action in cls._menus_]