动态读取mpd的歌曲目录设置
parent
5312642c3e
commit
b27c816047
18
main.py
18
main.py
|
@ -1,6 +1,6 @@
|
||||||
#!/usr/bin/env python3
|
#!/usr/bin/env python3
|
||||||
|
|
||||||
import gi, sys, os, threading, time
|
import gi, sys, os, threading, time, re
|
||||||
# import dbus
|
# import dbus
|
||||||
# import dbus.service, dbus.mainloop.glib
|
# import dbus.service, dbus.mainloop.glib
|
||||||
from pprint import pprint as print
|
from pprint import pprint as print
|
||||||
|
@ -16,6 +16,7 @@ from about_app import AboutWindow
|
||||||
from mpd.base import MPDClient
|
from mpd.base import MPDClient
|
||||||
|
|
||||||
app_id = 'fun.wkit.sonist'
|
app_id = 'fun.wkit.sonist'
|
||||||
|
home_dir = os.getenv('HOME')
|
||||||
|
|
||||||
|
|
||||||
def run_async(func):
|
def run_async(func):
|
||||||
|
@ -27,6 +28,17 @@ def run_async(func):
|
||||||
return wrapper
|
return wrapper
|
||||||
|
|
||||||
|
|
||||||
|
def get_music_dir():
|
||||||
|
with open(f'{home_dir}/.mpd/mpd.conf', 'r') as f:
|
||||||
|
data = f.read()
|
||||||
|
|
||||||
|
matches = re.search('music_directory\s*"(.*)"', data).groups()
|
||||||
|
if len(matches) > 0:
|
||||||
|
return matches[0]
|
||||||
|
|
||||||
|
return '/data/music'
|
||||||
|
|
||||||
|
|
||||||
class Application(Gtk.Application):
|
class Application(Gtk.Application):
|
||||||
|
|
||||||
__gsignals__ = {
|
__gsignals__ = {
|
||||||
|
@ -44,6 +56,8 @@ class Application(Gtk.Application):
|
||||||
|
|
||||||
self.mpd = MPDClient()
|
self.mpd = MPDClient()
|
||||||
|
|
||||||
|
self.music_dir = get_music_dir()
|
||||||
|
|
||||||
self.connect('window-removed', self.on_window_removed)
|
self.connect('window-removed', self.on_window_removed)
|
||||||
|
|
||||||
|
|
||||||
|
@ -97,7 +111,7 @@ class Application(Gtk.Application):
|
||||||
self.about = AboutWindow()
|
self.about = AboutWindow()
|
||||||
self.add_window(self.window)
|
self.add_window(self.window)
|
||||||
self.window.show_all()
|
self.window.show_all()
|
||||||
self.about.show_all()
|
# self.about.show_all()
|
||||||
|
|
||||||
self.ping()
|
self.ping()
|
||||||
|
|
||||||
|
|
|
@ -35,6 +35,8 @@ class ImageButton(Gtk.Button):
|
||||||
}}
|
}}
|
||||||
#ImageButton:hover {{
|
#ImageButton:hover {{
|
||||||
background-color: rgba(255,255,255,.1);
|
background-color: rgba(255,255,255,.1);
|
||||||
|
outline: transparent;
|
||||||
|
box-shadow:none;
|
||||||
}}
|
}}
|
||||||
"""
|
"""
|
||||||
css_provider.load_from_data(style.encode('UTF-8'))
|
css_provider.load_from_data(style.encode('UTF-8'))
|
||||||
|
|
|
@ -32,8 +32,10 @@ class Timebar(Gtk.Fixed):
|
||||||
self.curr = Gtk.Label()
|
self.curr = Gtk.Label()
|
||||||
self.duration = Gtk.Label()
|
self.duration = Gtk.Label()
|
||||||
|
|
||||||
|
self.curr.set_name('text')
|
||||||
self.duration.set_justify(Gtk.Justification.RIGHT)
|
self.duration.set_justify(Gtk.Justification.RIGHT)
|
||||||
self.duration.set_xalign(1)
|
self.duration.set_xalign(1)
|
||||||
|
self.duration.set_name('text')
|
||||||
|
|
||||||
self.slider.connect('change-value', self.on_timeupdate)
|
self.slider.connect('change-value', self.on_timeupdate)
|
||||||
|
|
||||||
|
|
|
@ -80,6 +80,7 @@ class SonistWindow(Gtk.Window):
|
||||||
|
|
||||||
# self.title_box = TextBox(256, 20)
|
# self.title_box = TextBox(256, 20)
|
||||||
self.title_box = Gtk.Label()
|
self.title_box = Gtk.Label()
|
||||||
|
self.title_box.set_name('text')
|
||||||
self.title_box.set_text('mpd loading...')
|
self.title_box.set_text('mpd loading...')
|
||||||
|
|
||||||
layout.put(self.title_box, 27, 244)
|
layout.put(self.title_box, 27, 244)
|
||||||
|
@ -129,6 +130,9 @@ class SonistWindow(Gtk.Window):
|
||||||
background-size: 100% 100%;
|
background-size: 100% 100%;
|
||||||
background-position: center;
|
background-position: center;
|
||||||
}}
|
}}
|
||||||
|
#text {{
|
||||||
|
color: #f2f5fc;
|
||||||
|
}}
|
||||||
"""
|
"""
|
||||||
# 加载CSS样式
|
# 加载CSS样式
|
||||||
css_provider = Gtk.CssProvider()
|
css_provider = Gtk.CssProvider()
|
||||||
|
@ -241,13 +245,13 @@ class SonistWindow(Gtk.Window):
|
||||||
self.ctrl_box.toggle_mode_btn(mode = 'random')
|
self.ctrl_box.toggle_mode_btn(mode = 'random')
|
||||||
|
|
||||||
|
|
||||||
|
if played != 'stop':
|
||||||
# 更新歌曲信息
|
# 更新歌曲信息
|
||||||
self.title_box.set_text("%s - %s" % (song.get('artist'), song.get('title')))
|
self.title_box.set_text("%s - %s" % (song.get('artist'), song.get('title')))
|
||||||
|
|
||||||
self.update_playtime()
|
self.update_playtime()
|
||||||
|
|
||||||
filepath = f"./album/{song['title']}.png"
|
filepath = f"./album/{song['title']}.png"
|
||||||
songpath = f"/data/music/{song['file']}"
|
songpath = f"{self.app.music_dir}/{song['file']}"
|
||||||
|
|
||||||
|
|
||||||
if os.path.isfile(filepath):
|
if os.path.isfile(filepath):
|
||||||
|
|
Loading…
Reference in New Issue