我正在编写一个程序,从 Librex 的 API 获取一堆图像,然后在 feh 中打开它们。
这是来源:
args = sys.argv[1:]
for i in args:
if "-" in i:
args.remove(i)
sch = quote("+".join(args).replace(" ", "+")).replace("%2B", "+")
sts = ["librex.extravi.dev",
"librex.beparanoid.de",
"search.davidovski.xyz",
"search.madreyk.xyz",
"librex.catalyst.sx"]
st = random.choice(sts)
def images(search, site):
URL = f"https://{site}/api.php?q={search}&p=0&type=1"
data = requests.get(url=URL).json()
imgList = str()
for i in data[:2]:
imgList += f" {i['thumbnail']}"
subprocess.Popen(["feh", imgList])
images(sch, st)
但是,当我运行带有多个选项的最终“feh”命令时,我收到一条错误消息:feh WARNING: https://s1.qwant.com/thumbr/exmple1.jpg https://s2.qwant.com/thumbr/example2 does not exist - skipping
我尝试过对每个链接单独运行 feh ,所以链接没有问题。但是如果我用所有链接重新运行 feh ,我会得到同样的错误。
有没有办法用多个 URL 运行 feh?
答案1
通过使用,imgList+=
您实际上是将 url 连接成一个大字符串,然后将其作为一个参数传递给feh
.
更改imgList
为列表(不是字符串),然后用于imgList.append()
向其中添加缩略图 url。
然后解构列表,以便将其内容作为提供给 Popen 的数组的单独元素传递,以便将它们作为单独的参数传递给feh
.
subprocess.Popen(["feh", *imgList])
看看如何feh
确实可以同时访问 2 个 url:
feh https://i.pinimg.com/236x/d3/fb/69/d3fb6973cddc1d875dc7c2e04525d2e7.jpg https://i.pinimg.com/236x/f4/dc/58/f4dc58f3bddf1c5b5249511820246df8.jpg