Функции Lua для conky не обновляются независимоPython

Программы на Python
Ответить
Anonymous
 Функции Lua для conky не обновляются независимо

Сообщение Anonymous »

У меня есть две функции Lua: getSongLyrics и getSongTitle, выходные данные которых отображаются в окне conky.
getSongLyrics использует скрипт Python, который запускает канал sptlrx и выводит его в файл FIFO, который считывается функцией, а затем отображается в conky с использованием conky_displaySongLyrics.
getSongTitle использует playerctl для получения названия и исполнителя текущей воспроизводимой песни, которые затем отображаются непосредственно в окне conky с помощью conky_displaySongTitle.
проблема возникает, когда воспроизводится или изменяется новая песня, вывод getSongTitle в conky-окне обновляется только при каждом обновлении getSongLyrics (т. е. новая лирическая строка). Эта проблема также проявляется, когда в песне нет доступных текстов, поэтому conky_displaySongLyrics никогда не обновляется, что приводит к тому, что conky_displaySongTitle никогда не обновляется по сравнению с предыдущей песней, пока не будет воспроизведена песня с текстом.< /p>
Я предполагаю, что проблема с обновлением возникает из-за того, что файл FIFO ожидает новой строки из канала sptlrx, но я не совсем уверен, как это сделать чтобы conky обновлял getSongTitle независимо от getSongLyrics.
Как мне сделать так, чтобы эти две функции выполнялись независимо друг от друга, чтобы conky_displaySongLyrics не влияет на conky_displaySongTitle, и наоборот?

scripts.lua
-- read file and print contents of file
function readPrintFile(file)
local f = io.open(file, "rb")

-- if file doesn't exist, return nil
if not f then return nil end

local content = f:read("*a")
f:close()

return content
end

-- get song title from a music source
function getSongTitle()
local command = io.popen("playerctl metadata --player spotify --format '{{ artist }} - {{ title }}'", "r")
local title = command:read("*l")
command:close()
return format:gsub("\n", "")
end

-- get song lyrics from a music source
function getSongLyrics()
local lyrics = readPrintFile("/tmp/sptlrx_lyrics") or ""
return lyrics:gsub("\n", "")
end

function conky_displaySongTitle()
return getSongTitle()
end

function conky_displaySongLyrics()
return getSongLyrics()
end

sptlrx_lyrics.py
import os
import subprocess

pipe_path_lyrics = "/tmp/sptlrx_lyrics"
try:
os.mkfifo(pipe_path_lyrics)
except FileExistsError:
pass

process_lyrics = subprocess.Popen(["sptlrx", "pipe"], stdout=subprocess.PIPE)

for line_lyrics in iter(process_lyrics.stdout.readline, ""):
with open(pipe_path_lyrics, "wb") as lyrics:
lyrics.write(line_lyrics)

conky.conf
conky.config = {
lua_load = "$HOME/.config/conky/scripts.lua",
...
}

conky.text = [[
${if_running spotify}\
${alignc} ${lua displaySongTitle}
${alignc} ${lua displaySongLyrics}\
...
${endif}
]]


Подробнее здесь: https://stackoverflow.com/questions/791 ... ependently
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»