you can now play and pause songs

This commit is contained in:
0x01FE committed 2025-01-24 09:23:52 -06:00
1 parent f8815964b5
commit 2fe525d0d6
5 files changed
+1817 -311

No files matched your search

+17
View File
@@ -305,6 +305,23 @@ class SubpyConn:
return playlists return playlists
def getPlaylist(self, playlist_id: str) -> list[Song]:
url = self.base_url + "/rest/getPlaylist?"
payload = self._getBasePayload()
payload['f'] = 'json'
payload['id'] = playlist_id
r = requests.get(url + self._encodePayload(payload))
json_r = r.json()
songs: list[Song] = []
for song in json_r['subsonic-response']['playlist']['entry']:
songs.append(Song(song))
return songs
def getStarred(self) -> list[Album | Song | Artist]: def getStarred(self) -> list[Album | Song | Artist]:
url = self.base_url + "/rest/getStarred?" url = self.base_url + "/rest/getStarred?"
+4 -1
View File
@@ -97,7 +97,10 @@ class SubPyPlayer:
# for playlist in conn.getPlaylists(): # for playlist in conn.getPlaylists():
# print(playlist.name, playlist.duration) # print(playlist.name, playlist.duration)
for song in conn.getStarredSongs(): # for song in conn.getStarredSongs():
# print(song.title)
for song in conn.getPlaylist('9d76a86b-901f-4727-a2ec-01210157ff01'):
print(song.title) print(song.title)
# player.play_song(echidna_id) # player.play_song(echidna_id)
File diff suppressed because it is too large. Load diff
+96 -4
View File
@@ -1,7 +1,6 @@
import logging import logging
import os import os
import io
from enum import Enum
LOG_FILE = 'textual.log' LOG_FILE = 'textual.log'
LOGGING_LEVEL = logging.DEBUG LOGGING_LEVEL = logging.DEBUG
@@ -14,10 +13,12 @@ logging.basicConfig(filename=LOG_FILE, level=LOGGING_LEVEL, format=LOG_FORMAT)
import SubSonic import SubSonic
os.environ['PYGAME_HIDE_SUPPORT_PROMPT'] = "hide"
import pygame
from textual import on, events from textual import on, events
from textual.app import App, ComposeResult from textual.app import App, ComposeResult
from textual.widgets import Footer, Header, OptionList, DataTable, Tabs, Tab, TabbedContent, TabPane, ProgressBar, Label from textual.widgets import Footer, Header, OptionList, DataTable, ProgressBar, Label
from textual.screen import Screen from textual.screen import Screen
from textual.widgets.option_list import Option from textual.widgets.option_list import Option
@@ -26,6 +27,8 @@ p = 'telegram9dock-MICHEL'
conn = SubSonic.SubpyConn(u, p, "https://music.0x01fe.net") conn = SubSonic.SubpyConn(u, p, "https://music.0x01fe.net")
pygame.mixer.init()
class AlbumSongs(Screen): class AlbumSongs(Screen):
BINDINGS = [ BINDINGS = [
('escape', 'die()', "Back"), ('escape', 'die()', "Back"),
@@ -161,6 +164,7 @@ class Playlists(Screen):
] ]
playlists: list[SubSonic.Playlist] | None = None playlists: list[SubSonic.Playlist] | None = None
selected_playlist_id: str = None
def compose(self) -> ComposeResult: def compose(self) -> ComposeResult:
yield Header(icon="") yield Header(icon="")
@@ -178,6 +182,71 @@ class Playlists(Screen):
for playlist in self.playlists: for playlist in self.playlists:
playlistTable.add_row(playlist.name, playlist.songCount, playlist.duration, playlist.owner, key=playlist.id) playlistTable.add_row(playlist.name, playlist.songCount, playlist.duration, playlist.owner, key=playlist.id)
@on(DataTable.RowHighlighted)
def row_highlighted(self, event: DataTable.RowHighlighted) -> None:
self.selected_playlist_id = event.row_key.value
@on(DataTable.RowSelected)
def playlist_selected(self, event: DataTable.RowSelected) -> None:
app.install_screen(PlaylistSongs(self._find_selected_playlist()), "playlistSongs")
app.push_screen('playlistSongs')
def _find_selected_playlist(self) -> SubSonic.Playlist:
for playlist in self.playlists:
if playlist.id == self.selected_playlist_id:
return playlist
class PlaylistSongs(Screen):
BINDINGS = [
('escape', 'die()', "Back"),
('p', 'play()', 'Play Song'),
('q' 'queue()', 'Queue Song')
]
selected_song_id: str | None = None
def __init__(self, playlist: SubSonic.Playlist):
self.playlist = playlist
self.songs = conn.getPlaylist(playlist.id)
super().__init__()
def compose(self) -> ComposeResult:
self.sub_title = self.playlist.name
yield Header(icon="")
yield DataTable()
yield Footer()
def on_mount(self) -> None:
songTable: DataTable = self.query_one(DataTable)
songTable.cursor_type = "row"
songTable.add_columns("Title", "Album", "Artist", "Plays", "Duration", "Bitrate")
for song in self.songs:
songTable.add_row(song.title, song.album, song.artist, song.playCount, song.duration, song.bitRate, key=song.id)
# Pops and uninstalls self
def action_die(self) -> None:
app.pop_screen()
app.uninstall_screen("playlistSongs")
@on(DataTable.RowHighlighted)
def row_highlighted(self, event: DataTable.RowHighlighted) -> None:
self.selected_song_id = event.row_key.value
def action_play(self) -> None:
app.play_song(self._find_selected_song())
def action_queue(self) -> None:
app.queue_song(self._find_selected_song())
# Find the song that was selected
def _find_selected_song(self) -> SubSonic.Song:
for song in self.songs:
if song.id == self.selected_song_id:
return song
class Favourites(Screen): class Favourites(Screen):
BINDINGS = [ BINDINGS = [
('escape', 'app.pop_screen', "Back") ('escape', 'app.pop_screen', "Back")
@@ -203,6 +272,7 @@ class Favourites(Screen):
class TextualSubpyPlayer(App): class TextualSubpyPlayer(App):
BINDINGS = [ BINDINGS = [
("space", "play_pause_song()", "⏯️"),
("f1", "push_screen('artists')", "Artists"), ("f1", "push_screen('artists')", "Artists"),
("f2", "push_screen('albums')", "Albums"), ("f2", "push_screen('albums')", "Albums"),
("f3", "push_screen('favourites')", "Favourites"), ("f3", "push_screen('favourites')", "Favourites"),
@@ -211,6 +281,8 @@ class TextualSubpyPlayer(App):
currently_playing: SubSonic.Song | None = None currently_playing: SubSonic.Song | None = None
song_queue: list[SubSonic.Song] = [] song_queue: list[SubSonic.Song] = []
playing: bool = False
place: int = 0
def compose(self) -> ComposeResult: def compose(self) -> ComposeResult:
yield Label() yield Label()
@@ -226,12 +298,20 @@ class TextualSubpyPlayer(App):
self.install_screen(Playlists(), name="playlists") self.install_screen(Playlists(), name="playlists")
def on_key(self, event: events.Key) -> None: def on_key(self, event: events.Key) -> None:
logging.debug(f'Key Pressed {event.name}') # logging.debug(f'Key Pressed {event.name}')
pass
def play_song(self, song: SubSonic.Song) -> None: def play_song(self, song: SubSonic.Song) -> None:
self.currently_playing = song self.currently_playing = song
self.playing = True
logging.debug(f"Playing song {song.title} by {song.artist}.") logging.debug(f"Playing song {song.title} by {song.artist}.")
r = conn.stream(song.id)
audio_data = io.BytesIO(r.content)
pygame.mixer.music.load(audio_data)
pygame.mixer.music.play()
# Set callback loop for progress bar # Set callback loop for progress bar
# self.progress_timer = self.set_interval(1 / 10, self.update_progress, pause=False) # self.progress_timer = self.set_interval(1 / 10, self.update_progress, pause=False)
@@ -242,6 +322,18 @@ class TextualSubpyPlayer(App):
logging.debug(f'Queue\'d song "{song.title}" by {song.artist}.') logging.debug(f'Queue\'d song "{song.title}" by {song.artist}.')
self.song_queue.append(song) self.song_queue.append(song)
def action_play_pause_song(self) -> None:
self.play_pause_song()
def play_pause_song(self) -> None:
if self.playing:
self.place = pygame.mixer.music.get_pos()
pygame.mixer.music.pause()
self.playing = False
else:
pygame.mixer.music.play(start=self.place)
self.playing = True
if __name__ == '__main__': if __name__ == '__main__':
app = TextualSubpyPlayer() app = TextualSubpyPlayer()
app.run() app.run()
+9 -306
View File
@@ -1,306 +1,9 @@
[2025-01-23 16:30:12,660] DEBUG in proactor_events: Using proactor: IocpProactor [2025-01-24 09:18:52,525] DEBUG in selector_events: Using selector: EpollSelector
[2025-01-23 16:30:12,688] DEBUG in screens-test: mount called [2025-01-24 09:18:52,547] DEBUG in screens-test: mount called
[2025-01-23 16:30:13,222] DEBUG in screens-test: Key Pressed f3 [2025-01-24 09:18:54,151] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-23 16:30:13,249] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443 [2025-01-24 09:18:54,419] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylists?u=pseudo&t=c6b26171189c620b2009abc58bc771ea&s=063M4T63&v=1.16.1&c=testing&f=json HTTP/1.1" 200 705
[2025-01-23 16:30:13,561] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getStarred?u=pseudo&t=9b4d304e86861c6941ca94888cc7663f&s=KKZ4XKZK&v=1.16.1&c=testing&f=json HTTP/1.1" 200 None [2025-01-24 09:18:55,614] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-23 16:30:14,577] DEBUG in screens-test: Key Pressed down [2025-01-24 09:18:55,905] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/getPlaylist?u=pseudo&t=1f300cff0009c58d53cd9787b0a62863&s=QOUYC15M&v=1.16.1&c=testing&f=json&id=e6e8ff27-2a60-4e33-8aa1-09586191166a HTTP/1.1" 200 None
[2025-01-23 16:30:15,070] DEBUG in screens-test: Key Pressed down [2025-01-24 09:18:58,356] DEBUG in screens-test: Playing song Extinction by King Gizzard & The Lizard Wizard.
[2025-01-23 16:30:15,100] DEBUG in screens-test: Key Pressed down [2025-01-24 09:18:58,358] DEBUG in connectionpool: Starting new HTTPS connection (1): music.0x01fe.net:443
[2025-01-23 16:30:15,130] DEBUG in screens-test: Key Pressed down [2025-01-24 09:18:58,667] DEBUG in connectionpool: https://music.0x01fe.net:443 "GET /rest/stream?u=pseudo&t=4e02447422167ec59342fd7c4c42c866&s=Q7CW4DUF&v=1.16.1&c=testing&id=9d7ff682cdf372d99f1d6d8db29f4d41 HTTP/1.1" 200 11569918
[2025-01-23 16:30:15,163] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,193] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,242] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,272] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,308] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,339] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,370] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,400] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,432] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,464] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,499] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,529] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,561] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,592] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,627] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,658] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,703] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,739] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,769] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,800] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,838] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,863] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,894] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,928] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,959] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:15,990] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,024] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,054] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,109] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,118] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,164] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,199] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,231] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,261] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,293] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,330] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,359] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,391] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,424] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,452] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,491] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,518] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,552] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,580] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,630] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,659] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,693] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,721] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,752] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,786] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,817] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,849] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,879] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,911] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,960] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:16,990] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,020] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,052] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,089] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,115] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,149] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,180] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,210] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,249] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,299] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,305] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,358] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,386] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,418] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,459] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,482] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,516] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,544] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,609] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,630] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,640] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,673] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,704] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,736] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,769] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,800] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,859] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,899] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,938] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:17,969] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,000] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,009] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,040] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,070] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,102] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,169] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,170] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,211] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,249] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,279] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,319] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,349] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,385] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,449] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,449] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,489] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,519] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,551] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,589] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,618] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,649] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,720] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,720] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,754] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,783] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,814] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,854] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,880] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,924] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,949] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:18,957] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,019] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,051] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,083] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,119] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,150] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,179] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,210] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,284] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,289] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,289] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,322] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,352] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,389] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,433] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,468] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,499] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,571] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,574] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,600] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,629] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,669] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,700] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,738] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,764] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,799] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,870] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,870] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,899] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,929] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:19,960] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,002] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,033] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,069] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,099] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,173] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,173] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,210] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,249] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,258] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,289] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,323] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,360] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,420] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,420] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,499] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,499] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,549] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,551] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,589] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,636] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,679] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,685] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,730] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,779] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,779] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,872] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,876] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,909] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,909] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,971] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:20,971] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,017] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,057] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,088] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,119] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,189] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,189] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,206] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,240] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,290] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,334] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,336] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:21,799] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,304] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,340] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,371] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,400] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,449] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,481] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,509] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,541] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,574] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,605] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,639] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,670] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,702] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,736] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,765] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,799] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,829] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,860] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,909] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,941] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:22,976] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,004] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,042] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,070] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,103] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,132] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,163] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,195] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:23,462] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:23,972] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,004] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,039] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,070] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,100] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,132] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,169] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,199] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,231] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,260] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,295] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,326] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,370] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,402] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,434] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,468] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,500] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,529] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,561] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,592] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,630] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,654] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,701] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,732] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,769] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,799] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,829] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,861] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,893] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,939] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:24,971] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,059] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,060] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,062] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,112] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,173] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,178] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,221] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,226] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,259] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,299] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,337] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,420] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,420] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,420] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,462] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,510] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,571] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,574] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,599] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,640] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,673] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,703] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,788] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,789] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,789] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,828] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,873] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,899] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,941] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:25,941] DEBUG in screens-test: Key Pressed down
[2025-01-23 16:30:26,190] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,699] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,740] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,773] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,801] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,833] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,869] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,899] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,930] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,964] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:26,992] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,029] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,060] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,093] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,122] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,164] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:27,188] DEBUG in screens-test: Key Pressed up
[2025-01-23 16:30:41,251] DEBUG in screens-test: Key Pressed escape