Compare commits

..

2 Commits

5 changed files with 76 additions and 38 deletions

26
.pre-commit-config.yaml Normal file
View File

@ -0,0 +1,26 @@
repos:
# Using this mirror lets us use mypyc-compiled black, which is about 2x faster
- repo: https://github.com/psf/black-pre-commit-mirror
rev: 24.2.0
hooks:
- id: black
# It is recommended to specify the latest version of Python
# supported by your project here, or alternatively use
# pre-commit's default_language_version, see
# https://pre-commit.com/#top_level-default_language_version
language_version: python3.11
- repo: https://github.com/pycqa/isort
rev: 5.13.2
hooks:
- id: isort
name: isort (python)
- repo: https://github.com/astral-sh/ruff-pre-commit
# Ruff version.
rev: v0.3.0
hooks:
# Run the linter.
- id: ruff
# - id: ruff-format We don't need this because we have black and isort.

View File

@ -1,17 +1,22 @@
from pathlib import Path
name = 'karaoke'
help_text = 'GUI for negromate karaoke'
name = "karaoke"
help_text = "GUI for negromate karaoke"
def options(parser, config, **kwargs):
parser.add_argument(
'-s', '--song_folder', type=Path,
default=config['global']['song_folder'],
"-s",
"--song_folder",
type=Path,
default=config["global"]["song_folder"],
help="Folder with the song database, defaults to {}".format(
config['global']['song_folder']))
config["global"]["song_folder"]
),
)
def run(args, **kwargs):
from ..karaoke import main
main(args.song_folder.expanduser())

View File

@ -3,21 +3,23 @@ import os
import subprocess
import kivy
kivy.require('2.1.0')
from kivy.app import App
from kivy.core.text import LabelBase
from kivy.core.window import Window
from kivy.properties import ObjectProperty, ListProperty, BooleanProperty
from kivy.resources import resource_add_path
from kivy.uix.boxlayout import BoxLayout
from negromate.songs.loader import load_songs
kivy.require("2.1.0")
from kivy.app import App # noqa: E402
from kivy.core.text import LabelBase # noqa: E402
from kivy.core.window import Window # noqa: E402
from kivy.properties import BooleanProperty # noqa: E402
from kivy.properties import ListProperty # noqa: E402
from kivy.properties import ObjectProperty # noqa: E402
from kivy.resources import resource_add_path # noqa: E402
from kivy.uix.boxlayout import BoxLayout # noqa: E402
class SongWidget(BoxLayout):
active = BooleanProperty(False)
song = ObjectProperty('')
song = ObjectProperty("")
@property
def name(self):
@ -49,18 +51,18 @@ class KaraokeGUI(BoxLayout):
self.keyboard = Window.request_keyboard(
self.keyboard_closed,
self,
'text',
"text",
)
self.keyboard.bind(on_key_down=self.on_key_down)
def on_key_down(self, keyboard, keycode, text, modifiers):
if text == 'a':
if text == "a":
self.previous()
return True
elif text == 'd':
elif text == "d":
self.next()
return True
elif text == 's':
elif text == "s":
self.play()
return True
return False
@ -69,7 +71,7 @@ class KaraokeGUI(BoxLayout):
pass
def on_songs(self, instance, value):
container = self.ids['song_container']
container = self.ids["song_container"]
container.clear_widgets()
for song in self.songs:
container.add_widget(song)
@ -79,12 +81,12 @@ class KaraokeGUI(BoxLayout):
for song in self.songs:
song.active = False
value.active = True
current_song_image = self.ids['current_song_image']
current_song_title = self.ids['current_song_title']
current_song_image = self.ids["current_song_image"]
current_song_title = self.ids["current_song_title"]
current_song_image.source = value.cover
current_song_title.text = value.name
scrollview = self.ids['songs_scroll']
scrollview = self.ids["songs_scroll"]
scrollview.scroll_to(value)
def previous(self):
@ -108,19 +110,26 @@ class KaraokeGUI(BoxLayout):
self.active_song = self.songs[idx]
def play(self):
subprocess.call([
'cvlc',
'--fullscreen',
'--no-sub-autodetect-file',
'--sub-file',
subprocess.call(
[
"cvlc",
"--fullscreen",
"--no-sub-autodetect-file",
"--sub-file",
self.active_song.subtitle,
self.active_song.video,
'vlc://quit'
])
"vlc://quit",
]
)
class KaraokeApp(App):
kv_directory = os.path.join(os.path.dirname(__file__, ), 'kv_templates')
kv_directory = os.path.join(
os.path.dirname(
__file__,
),
"kv_templates",
)
def __init__(self, root_folder, **kwargs):
super().__init__(**kwargs)
@ -137,7 +146,5 @@ class KaraokeApp(App):
def main(path):
# Window.fullscreen = True
resource_add_path(os.path.dirname(__file__))
LabelBase.register(
name='CyrBit',
fn_regular='resources/fonts/CyrBit.ttf')
LabelBase.register(name="CyrBit", fn_regular="resources/fonts/CyrBit.ttf")
KaraokeApp(path).run()

View File

@ -1 +1 @@
negromate.songs==1.4
negromate.songs>=1.5

View File

@ -22,7 +22,7 @@ packages = find_namespace:
zip_safe = false
python_requires = >= 3.4
install_requires =
negromate.songs ==1.4
negromate.songs >=1.5
[options.entry_points]
negromate.commands =