Merge pull request #261 from arabcoders/dev
restore message about live stream not being live yet.
This commit is contained in:
commit
53d3b3c81d
5 changed files with 50 additions and 7 deletions
11
README.md
11
README.md
|
|
@ -280,6 +280,17 @@ inside the `/config` directory named `yt-dlp` so, the path will be `/config/yt-d
|
|||
|
||||
Once you have installed the plugins, restart the container and the plugins will be auto-loaded on demand.
|
||||
|
||||
# How to load random backgrounds from WatchState or any other source?
|
||||
|
||||
YTPTube can be configured to pull random background images from different sources, including `WatchState` which is another
|
||||
project of mine, simply change the `YTP_PICTURES_BACKENDS` environment variable to the following url
|
||||
|
||||
```env
|
||||
YTP_PICTURES_BACKENDS=https://watchstate.ip/v1/api/system/images/background?apikey=[api_key]
|
||||
```
|
||||
|
||||
Where `[api_key]` is the api key you get from your WatchState instance.
|
||||
|
||||
# The origin of the project.
|
||||
|
||||
The project first started as a fork [meTube](https://github.com/alexta69/metube), since then it has been completely
|
||||
|
|
|
|||
|
|
@ -18,7 +18,8 @@ from .AsyncPool import AsyncPool
|
|||
from .config import Config
|
||||
from .DataStore import DataStore
|
||||
from .Download import Download
|
||||
from .Events import EventBus, Events, info
|
||||
from .Events import EventBus, Events
|
||||
from .Events import warning as event_warning
|
||||
from .ItemDTO import Item, ItemDTO
|
||||
from .Presets import Presets
|
||||
from .Scheduler import Scheduler
|
||||
|
|
@ -313,22 +314,21 @@ class DownloadQueue(metaclass=Singleton):
|
|||
dlInfo: Download = Download(info=dl, info_dict=entry)
|
||||
|
||||
if dlInfo.info.live_in or "is_upcoming" == entry.get("live_status"):
|
||||
dlInfo.info.status = "not_live"
|
||||
itemDownload = self.done.put(dlInfo)
|
||||
NotifyEvent = Events.COMPLETED
|
||||
log_message = f"{dl.title or dl.id or dl._id}: stream is not live yet."
|
||||
if dlInfo.info.live_in:
|
||||
log_message += f" Will start in {dlInfo.info.live_in}."
|
||||
dlInfo.info.status = "not_live"
|
||||
dlInfo.info.msg = "Stream is not live yet."
|
||||
itemDownload = self.done.put(dlInfo)
|
||||
elif len(entry.get("formats", [])) < 1:
|
||||
availability = entry.get("availability", "public")
|
||||
msg = "No formats found."
|
||||
if "public" != availability:
|
||||
if availability and availability not in ("public",):
|
||||
msg += f" Availability is set for '{availability}'."
|
||||
|
||||
dlInfo.info.status = "error"
|
||||
dlInfo.info.error = msg
|
||||
itemDownload = self.done.put(dlInfo)
|
||||
NotifyEvent = Events.COMPLETED
|
||||
await self._notify.emit(Events.LOG_WARNING, data=event_warning(msg))
|
||||
elif self.config.allow_manifestless is False and is_manifestless is True:
|
||||
dlInfo.info.status = "error"
|
||||
dlInfo.info.error = "Video is in post-live manifestless mode."
|
||||
|
|
@ -416,6 +416,7 @@ class DownloadQueue(metaclass=Singleton):
|
|||
if downloaded is True and id_dict:
|
||||
message = f"This url with ID '{id_dict.get('id')}' has been downloaded already and recorded in archive."
|
||||
LOG.info(message)
|
||||
await self._notify.emit(Events.LOG_WARNING, data=event_warning(message))
|
||||
return {"status": "error", "msg": message}
|
||||
|
||||
started = time.perf_counter()
|
||||
|
|
|
|||
|
|
@ -25,6 +25,21 @@ def error(msg: str, data: dict | None = None) -> dict:
|
|||
return message("error", msg, data)
|
||||
|
||||
|
||||
def warning(msg: str, data: dict | None = None) -> dict:
|
||||
"""
|
||||
Create an error message.
|
||||
|
||||
Args:
|
||||
msg (str): The message.
|
||||
data (dict|None): The data to include in the message.
|
||||
|
||||
Returns:
|
||||
dict : The message wrapped in a dictionary.
|
||||
|
||||
"""
|
||||
return message("warning", msg, data)
|
||||
|
||||
|
||||
def info(msg: str, data: dict | None = None) -> dict:
|
||||
"""
|
||||
Create an info message.
|
||||
|
|
@ -87,6 +102,8 @@ class Events:
|
|||
CLEARED = "cleared"
|
||||
ERROR = "error"
|
||||
LOG_INFO = "log_info"
|
||||
LOG_WARNING = "log_warning"
|
||||
LOG_ERROR = "log_error"
|
||||
LOG_SUCCESS = "log_success"
|
||||
|
||||
INITIAL_DATA = "initial_data"
|
||||
|
|
@ -139,6 +156,8 @@ class Events:
|
|||
Events.ADDED,
|
||||
Events.ERROR,
|
||||
Events.LOG_INFO,
|
||||
Events.LOG_WARNING,
|
||||
Events.LOG_ERROR,
|
||||
Events.LOG_SUCCESS,
|
||||
Events.COMPLETED,
|
||||
Events.CANCELLED,
|
||||
|
|
|
|||
|
|
@ -96,6 +96,8 @@ class NotificationEvents:
|
|||
CLEARED = Events.CLEARED
|
||||
LOG_INFO = Events.LOG_INFO
|
||||
LOG_SUCCESS = Events.LOG_SUCCESS
|
||||
LOG_WARNING = Events.LOG_WARNING
|
||||
LOG_ERROR = Events.LOG_ERROR
|
||||
TEST = Events.TEST
|
||||
|
||||
@staticmethod
|
||||
|
|
|
|||
|
|
@ -52,6 +52,16 @@ export const useSocketStore = defineStore('socket', () => {
|
|||
toast.success(json?.message);
|
||||
});
|
||||
|
||||
socket.value.on('log_warning', stream => {
|
||||
const json = JSON.parse(stream);
|
||||
toast.warning(json?.message);
|
||||
});
|
||||
|
||||
socket.value.on('log_error', stream => {
|
||||
const json = JSON.parse(stream);
|
||||
toast.error(json?.message);
|
||||
});
|
||||
|
||||
socket.value.on('completed', stream => {
|
||||
const item = JSON.parse(stream);
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue