0

我发现了非常好的 Pinterest 图片,我想将它们随机显示在我的桌面上。我已经有一个从目录中随机调用conky配置的脚本。(然后我手动制作一次调用 1 到 3+ 个 conkies 的 bash 脚本)

试图做一些python脚本,但它没有......我把它复杂化了。这是GIT 文件

我打算展示我的代码,但它太大而且太乱了。

最初我只是读取所有图像及其宽度、高度、路径和文件名来分隔 txt 文件。比如width.txt、path.txt等。看起来像这些(这些是 Path.txt):

/home/omarali/scripts/conky/conky-sets/images/record.jpg
/home/omarali/scripts/conky/conky-sets/images/subtle.jpg
/home/omarali/scripts/conky/conky-sets/images/trust.jpg

然后我有一个python脚本将数据转换为数组,然后一个一个地构建文件。不知何故,我遇到了语法错误等。我没有在此处包含代码,因为它太长了,我正在考虑从头开始

本质上,我会创建一个与图像同名的新文件,然后用图像大小和路径替换下面的配置变量(WIDTH、HEIGHT 等)。

模板 Conky 配置:

conky.config = {

    --Various settings

    double_buffer = true,                       -- eliminates flicker   

    --Windows

    own_window = true,                          -- create your own window to draw
    own_window_argb_visual = true,              -- use ARGB 
    own_window_type = 'override',               -- keeps the image in the back 


    --Placement

    alignment = 'middle_middle',                -- position of the conky

    --#########################################################################################
    --########################      THE IMPORTANT CHANGABLE STUFF       #######################
    --#########################################################################################

    minimum_width = WIDTH,                      -- minimum height of window
    minimum_height = HEIGHT,                    -- minimum height of window
};

    conky.text = [[
    ${image PATH -s SIZE}

]];
  • WIDTH:图像的宽度
  • HEIGHT:图像的高度
  • PATH:图像的路径
  • 尺寸:宽度 + "x" + 图片的高度

这是 conky 配置的最终结果。

conky.config = {
    minimum_width = 800,                        -- minimum height of window
    minimum_height = 1300,                      -- minimum height of window
};

    conky.text = [[
    ${image /home/omarali/scripts/conky/conky-sets/images/record.jpg -s 800x1300}

]];

所以,只需要一种简单的方法将图像放入 conkies 中,我以后可以从 bash 脚本中调用它。Python 或 Bash 脚本可以。

这是我要找的东西:

  1. 从目录中的每个图像构建一个 conky 配置。比方说dir_pins
  2. 每个 conky 应与图像具有相同的名称。(这是我的问题)
  3. 可以是 python 或 bash 脚本,对想法持开放态度,但更喜欢这 2 个。

就是这样,如前所述,我已经有一个脚本来自动运行我的配置。非常感谢您的帮助。并对新想法持开放态度。

4

1 回答 1

0

在 Python 中,您可以从所有文件中读取数据

all_widths = open('width.txt').read().splitlines()
all_heights = open('width.txt').read().splitlines()
all_pathes = open('path.txt').read().splitlines()

并用于zip()分组widthpath

for width, height, path in zip(all_widths, all_height, all_pathes):
    print(width, height, path)
    # generate conky text

然后您可以将文本与所有段落一起使用,并放置{}在要放置数据的位置以生成新文本。因为它用于{}识别值的位置,所以它需要{{}}正常{}

template = '''conky.config = {{
    minimum_width = {WIDTH},                        -- minimum height of window
    minimum_height = {HEIGHT},                      -- minimum height of window
}};

    conky.text = [[
    ${{image {PATH} -s {WIDTH}x{HEIGHT}}}

]];'''
for width, height, path in zip(all_widths, all_height, all_pathes):
    new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
    print(new_text)

现在您必须使用图像文件名来为 conky 文件创建名称(我不知道它使用什么扩展名,所以我使用.txt

new_name = path.replace('.jpg', '.txt')

或仅路径的最后一部分

new_name = path.split('/')[-1].replace('.jpg', '.txt')

然后你可以保存文本

f = open(new_name, 'w')
f.write(new_text)
f.close()

完整代码但未经测试:

template = '''conky.config = {{
    minimum_width = {WIDTH},                        -- minimum height of window
    minimum_height = {HEIGHT},                      -- minimum height of window
}};

    conky.text = [[
    ${{image {PATH} -s {WIDTH}x{HEIGHT}}}

]];'''

all_widths = open('width.txt').read().splitlines()
all_heights = open('width.txt').read().splitlines()
all_pathes = open('path.txt').read().splitlines()

for width, height, path in zip(all_widths, all_height, all_pathes):
    new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
    #new_name = path.replace('.jpg', '.txt')
    new_name = path.split('/')[-1].replace('.jpg', '.txt')
    f = open(new_name, 'w')
    f.write(new_text)
    f.close()

顺便说一句:您可以使用os.listdir()oros.walk()直接从磁盘获取图像的路径。PIL以及获取图像大小的模块。

template = '''conky.config = {{
    minimum_width = {WIDTH},                        -- minimum height of window
    minimum_height = {HEIGHT},                      -- minimum height of window
}};

    conky.text = [[
    ${{image {PATH} -s {WIDTH}x{HEIGHT}}}

]];'''

from PIL import Image

directory = '/home/omarali/scripts/conky/conky-sets/images/'

for filename in os.listdir(directory):
    path = os.path.join(directory, filename)

    width, height = Image.open(path).size

    new_text = template.format(WIDTH=width, HEIGHT=height, PATH=path)
    new_name = filename.replace('.jpg', '.txt')

    f = open(new_name, 'w')
    f.write(new_text)
    f.close()
于 2019-09-14T20:28:19.137 回答