我尝试在 puredata 中使用以下curl 命令和 shell 对象来检索图像:
curl -O -k 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
这在我的终端上运行良好。当我在 puredata 中执行等效操作(下面的代码)时,它告诉我它检索图像,完成后返回 1,但没有图像保存到我的计算机中。
#N canvas 0 23 821 330 12;
#X obj 243 123 shell;
#X obj 275 163 print DONE;
#X obj 225 183 print;
#X msg 241 38 curl -O -k 'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
;
#X connect 0 0 2 0;
#X connect 0 1 1 0;
#X connect 3 0 0 0;
我哪里出错了?
您遇到的问题是您在消息中使用了单引号。
通常,您会在 shell 中使用单引号,以防止 shell 解释各种字符(如空格、星号……)。
但是,对于 Pd,消息的每个原子都作为单独的参数传递,因此无需使用引号。
事实上,通过您的调用,您告诉curl 从字面上打开一个URL
'https://cdn.onemars.net/sites/perfect-fit_uk_Z61CM_JAs8/image/editor/ben-griffiths-vqeoowvzzys-unsplash_1686909408862.jpg'
,而curl 并不真正知道如何处理这些引号。
如果你在控制台中运行 Pd,你会看到一个错误:
curl: Failed to extract a sensible file name from the URL to use for storage
curl: (3) URL using bad/illegal format or missing URL
如果你省略引号,它会神奇地起作用。