#実現したいこと
curlを用いてAPI、face++を使いたいです。
#経緯
上記の参考サイトを読みながら、作業を進め、ApikeyとApiselectを取得し、curlのインストールも終わらせました。
下記は参考サイトの記事を一部抜粋した画像です。
参考サイトの記事を見様見真似で、実行してみると、下記のような結果になりました。
#試してみたこと
apikeyやapiselectの書き間違えがないか確認はしました。
エラー文をコピーして検索、ということもしてみましたが、内容が難しく解決には至りませんでした。
「-f」がエラーの原因だということは分かったので、安直に-fを消してみるということもしましたが、解決には至りませんでした。
#環境
使用ソフト
curl バージョン curl-7.66.0-win64-mingw
Window powershell
APIを叩くのは初めてで、コマンドプロンプトやパワーシェルも殆ど使ったことはありません。
#追記1
回答でいただいた指摘を改善し、「<>」を外す、「=」が入っていない、「curlをcurl.exe」に変えてみる、を実行した結果が以下の画像です。
※一つ目実行は「curl」、二つ目の実行は「curl.exe」での実行です。
「-F」に理由があるみたいなので、「-F」を消してみると、今度はバックスラッシュが云々みたいなエラーが。。
なのでバックスラッシュも消してみて実行した結果が以下の画像です。
エラー文はでなくなったのですが、参考サイトによるとjsonが返ってくるはずなので、エラー文が出ていないだけでやはり上手くいってはいないようです。
#追記2
実行結果は画像ではなく、テキストとして貼り付けた方が良いと指摘を受けたので追記1の画像をテキストにしました。
回答で指摘を受けた、「=」「<>」を修正し、「curl」での実行結果
PS C:\Users\chiba> curl -X POST "https://api-us.faceplusplus.com/facepp/v3/detect" -F "api_key=" \ >> -F "api_secret=" \ >> -F "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1%94%E5%86%99%E7%9C%9F-200x300.jpg" \ {"error_message":"MISSING_ARGUMENTS: api_secret"} curl: (6) Could not resolve host: \ -F : 用語 '-F' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名 前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:2 文字:1 + -F "api_secret=" \ + ~~ + CategoryInfo : ObjectNotFound: (-F:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException -F : 用語 '-F' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名 前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再試行してください。 発生場所 行:3 文字:1 + -F "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1 ... + ~~ + CategoryInfo : ObjectNotFound: (-F:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
「=」「<>」を修正し、「curl.exe」での実行結果
PS C:\Users\chiba> curl.exe -X POST "https://api-us.faceplusplus.com/facepp/v3/detect" -F "api_key=" \ >> -F "api_secret=" \ >> -F "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1%94%E5%86%99%E7%9C%9F-200x300.jpg" \ >> {"error_message":"MISSING_ARGUMENTS: api_secret"} curl: (6) Could not resolve host: \ -F : 用語 '-F' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再 試行してください。 発生場所 行:2 文字:1 + -F "api_secret=" \ + ~~ + CategoryInfo : ObjectNotFound: (-F:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException -F : 用語 '-F' は、コマンドレット、関数、スクリプト ファイル、または操作可能なプログラムの名前として認識されません。名前が正しく記述されていることを確認し、パスが含まれている場合はそのパスが正しいことを確認してから、再 試行してください。 発生場所 行:3 文字:1 + -F "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1 ... + ~~ + CategoryInfo : ObjectNotFound: (-F:String) [], CommandNotFoundException + FullyQualifiedErrorId : CommandNotFoundException
エラー文には「-F」と書かれているので、安直な考えで「-F」を削除。すると次は「¥」が云々でエラー。なのでまた安直に「¥」を削除した実行結果
PS C:\Users\chiba> curl.exe -X POST "https://api-us.faceplusplus.com/facepp/v3/detect" -F "api_key=" >> "api_secret=" >> "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1%94%E5%86%99%E7%9C%9F-200x300.jpg" {"error_message":"MISSING_ARGUMENTS: api_secret"} api_secret= image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/%E9%A1%94%E5%86%99%E7%9C%9F-200x300.jpg PS C:\Users\chiba>
PowerShellに表示される、黒と赤のエラー文はなくなりました。が、参考サイトによるとjsonが返ってくるはずなのに上手くはいっていません。
※既に回答で指摘をいただきまた。-Fはパラメータを渡すという意味があるそうで、それは当然上手くいきませんよね。。
#追記3
回答でご指摘いただいた、「¥」を「`」に変えてみての、実行結果です。
curl -X POST "https://api-us.faceplusplus.com/facepp/v3/detect" -F "api_key=" ` >> -F "api_secret=" ` >> -F "image_file=http://www.shokyo.jp/wp-content/uploads/2015/10/顔写真-200x300.jpg" ` >> -F "return_landmark=1" ` >> -F "return_attributes=gender,age" {"time_used": 34, "error_message": "MISSING_ARGUMENTS: image_url, image_file, image_base64", "request_id": "1568761381,3b0185fd-ce8c-466b-847c-5297dbfcf21e"}
今までPowerShellに表示されていた、「-F」云々のエラーは一切表示されなくなりました。
ただ、コードにも「erroe-message」と書かれているように上手くはいっておらず、参考サイトによると成功すれば以下の画像ようなjsonが返ってくるそうなのです。
また何度か同じコードを実行したのですが、「"time_used": 」の部分に入る数字にはまいかいばらつきがありました。
また「"error_message": "MISSING_ARGUMENTS: image_url, image_file, image_base64",」と書いてあったので、apiに渡している画像が上手くいかない原因なのかなと思い、画像を変えてみましたが、上手くはいきませんでした。
#追記4
回答のおかげで、多少の解決は出来ました。。!
エラー文の内容を見ると、「"request_id"」と表記があるので、apiにデータをpostすること自体は出来ているはずだと考えました。。
なので渡している画像に問題があると思い、いくつかの形式のファイルを渡してみたり、ローカル画像を渡してみたりと色々やってみましたが、うまくはいきませんでした。
#追記5
ファイル名に日本語が含まれているのが、エラーが発生している理由かもしれない、というご指摘がありました。
日本語ではないファイルを受け渡して見た結果が以下のコードです。
curl.exe -X POST "https://api-us.faceplusplus.com/facepp/v3/detect" -F "api_key=" ` >> -F "api_secret=" ` >> -F "image_file=http%3a%2f%2fwww%2eshokyo%2ejp%2fwp%2dcontent%2fuploads%2f2015%2f10%2f%25E9%25A1%2594%25E5%2586%2599%25E7%259C%259F%2d200x300%2ejpg" ` >> -F "return_landmark=1" ` >> -F "return_attributes=gender,age" {"time_used": 33, "error_message": "MISSING_ARGUMENTS: image_url, image_file, image_base64", "request_id": "1568772469,a089b609-b41a-4c44-b323-208c3ae54c18"} PS C:\Users\chiba>
質問においては毎回APIに渡してた画像のURLを、エンコードして実行した結果が上のコードです。また英数字のみのファイル名の画像を探してAPIに渡してみましたが、結果は同じでした。
回答2件
あなたの回答
tips
プレビュー