Reference currently playing video via "playing"
This commit is contained in:
parent
b03c1f524d
commit
0c25882852
1 changed files with 16 additions and 5 deletions
|
|
@ -153,7 +153,7 @@ class Playlist:
|
||||||
returns False otherwise (nothing happened).
|
returns False otherwise (nothing happened).
|
||||||
"""
|
"""
|
||||||
|
|
||||||
if self.waiting and (self.playing_task is None or self.playing_task.done()):
|
if self.waiting and not self.playing():
|
||||||
self.playing_task = asyncio.ensure_future(self._play(room))
|
self.playing_task = asyncio.ensure_future(self._play(room))
|
||||||
#asyncio.ensure_future(self._play(room))
|
#asyncio.ensure_future(self._play(room))
|
||||||
return True
|
return True
|
||||||
|
|
@ -175,7 +175,7 @@ class Playlist:
|
||||||
video, player = self.waiting.pop(0)
|
video, player = self.waiting.pop(0)
|
||||||
duration = video.duration.total_seconds()
|
duration = video.duration.total_seconds()
|
||||||
|
|
||||||
self.playing_video = video
|
self.playing_video = video, player
|
||||||
self.playing_until = time.time() + duration
|
self.playing_until = time.time() + duration
|
||||||
|
|
||||||
text = self.format_play(video, player)
|
text = self.format_play(video, player)
|
||||||
|
|
@ -220,6 +220,9 @@ class Playlist:
|
||||||
|
|
||||||
# playlist info
|
# playlist info
|
||||||
|
|
||||||
|
def playing(self):
|
||||||
|
return self.playing_task is not None and not self.playing_task.done()
|
||||||
|
|
||||||
def empty(self):
|
def empty(self):
|
||||||
return not bool(self.waiting)
|
return not bool(self.waiting)
|
||||||
|
|
||||||
|
|
@ -227,6 +230,9 @@ class Playlist:
|
||||||
return len(self.waiting)
|
return len(self.waiting)
|
||||||
|
|
||||||
def get(self, i):
|
def get(self, i):
|
||||||
|
if i == -1 and self.playing():
|
||||||
|
return self.playing_video
|
||||||
|
|
||||||
try:
|
try:
|
||||||
return self.waiting[i]
|
return self.waiting[i]
|
||||||
except IndexError:
|
except IndexError:
|
||||||
|
|
@ -263,6 +269,7 @@ class ArgonDJBot(yaboli.Bot):
|
||||||
"Advanced queue manipulation:\n"
|
"Advanced queue manipulation:\n"
|
||||||
"!list - display a list of currently queued videos (alias: !l)\n"
|
"!list - display a list of currently queued videos (alias: !l)\n"
|
||||||
"!detail <indices> - show more details for videos in the queue (aliases: !info, !show)\n"
|
"!detail <indices> - show more details for videos in the queue (aliases: !info, !show)\n"
|
||||||
|
"\tTo reference the currently playing video, use '!detail playing'.\n"
|
||||||
"!delete <index> - deletes video at that index in the queue (aliases: !del, !d)\n"
|
"!delete <index> - deletes video at that index in the queue (aliases: !del, !d)\n"
|
||||||
"!insert before|after <index> <urls or ids> - insert videos in the queue (aliases: !ins, !i)\n"
|
"!insert before|after <index> <urls or ids> - insert videos in the queue (aliases: !ins, !i)\n"
|
||||||
"!deleteall - remove the whole queue (aliases: !dall, !d, !flush)\n"
|
"!deleteall - remove the whole queue (aliases: !dall, !d, !flush)\n"
|
||||||
|
|
@ -491,6 +498,8 @@ class ArgonDJBot(yaboli.Bot):
|
||||||
match = re.match(r"\d+", arg)
|
match = re.match(r"\d+", arg)
|
||||||
if match:
|
if match:
|
||||||
indices.append(int(match.group(0)))
|
indices.append(int(match.group(0)))
|
||||||
|
elif arg == "playing":
|
||||||
|
indices.append(-1)
|
||||||
else:
|
else:
|
||||||
lines_parse_error.append(f"Could not parse {arg!r}")
|
lines_parse_error.append(f"Could not parse {arg!r}")
|
||||||
|
|
||||||
|
|
@ -499,7 +508,8 @@ class ArgonDJBot(yaboli.Bot):
|
||||||
for i in sorted(set(indices)):
|
for i in sorted(set(indices)):
|
||||||
video = self.playlist.get(i)
|
video = self.playlist.get(i)
|
||||||
if video:
|
if video:
|
||||||
videos.append(video)
|
v, p = video
|
||||||
|
videos.append((i, v, p))
|
||||||
else:
|
else:
|
||||||
lines_index_error.append(f"No video at index {i}")
|
lines_index_error.append(f"No video at index {i}")
|
||||||
|
|
||||||
|
|
@ -509,9 +519,10 @@ class ArgonDJBot(yaboli.Bot):
|
||||||
return
|
return
|
||||||
|
|
||||||
lines = []
|
lines = []
|
||||||
for video, player in videos:
|
for index, video, player in videos:
|
||||||
|
index = "playing" if index == -1 else index
|
||||||
info = []
|
info = []
|
||||||
info.append(f"youtube.com/watch?v={video.id} {video.title!r}")
|
info.append(f"[{index:2}] youtube.com/watch?v={video.id} {video.title!r}")
|
||||||
info.append(f"Queued by {mention(player, ping=False)}")
|
info.append(f"Queued by {mention(player, ping=False)}")
|
||||||
|
|
||||||
if video.blocked is not None:
|
if video.blocked is not None:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue