私は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を1つの大きな文字列に連結し、それをパラメータとしてに渡します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