import requests
import base64
def search(api_token, image):
endpoint = "https://trace.moe/api/search"
params = {"token":api_token}
data = {"image":image}
r = requests.post(endpoint, params=params, data=data)
if r.status_code==403:
raise Exception("API token invalid")
elif r.status_code==401:
raise Exception("API token missing")
elif r.status_code==413:
raise Exception("The image is too large, please reduce the image size to below 1MB")
elif r.status_code==429:
raise Exception("You have exceeded your quota. Please wait and try again soon.")
elif r.status_code==200:
return(r.json())
with open("test.png", "rb") as image_file:
encoded_string = base64.b64encode(image_file.read())
search = search("token", encoded_string)
Я пробовал использовать Apache HttpClient с MultipartEntity, но мне это не помогло.
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("https://trace.moe/api/search");
File file = getImgFile();
MultipartEntity mpEntity = new MultipartEntity();
ContentBody cbFile = new FileBody(file, "image/jpeg");
mpEntity.addPart("image", cbFile);
httppost.setEntity(mpEntity);
System.out.println("executing request " + httppost.getRequestLine());
HttpResponse response = httpclient.execute(httppost);
HttpEntity resEntity = response.getEntity();
System.out.println(response.getStatusLine());
if (resEntity != null) {
System.out.println(EntityUtils.toString(resEntity));
}
if (resEntity != null) {
resEntity.consumeContent();
}
httpclient.getConnectionManager().shutdown();
Любая моя попытка дает «Данные не получены» или пустые «документы». Что я могу сделать?
https://whatanime.ga/api/search также не является действующей ссылкой
srr, моя ошибка. обновлено
Хорошо, я посмотрю, что я могу сделать.
Можете ли вы связать мне сайт, на котором я могу сгенерировать токен api?
Токен не является обязательным параметром, вы можете вызывать api без него.
Эй, тебе стоит взглянуть на ответ, который я опубликовал :)




Хорошо, после нескольких минут взлома клавиатуры я создал код, который работает с ним, но он не обрабатывает код запроса и не обрабатывает фактический JSON. Вам нужно будет его реализовать. На данный момент он распечатывает ответ. Это основной старт того, чем вы хотите заниматься. вот код
public static void main(String[] args){
File file = new File("C:\\Users\\Rab\\Desktop\\lol\\anime.jpg");
try {
byte[] fileContent = Files.readAllBytes(file.toPath());
String imageData = Base64.getEncoder().encodeToString(fileContent);
search("", imageData);
} catch (IOException e) {
e.printStackTrace();
}
}
public static void search(String token, String image){
try {
String urlParameters = String.format("token=%s&image=%s", token, image);
byte[] postData = urlParameters.getBytes(StandardCharsets.UTF_8);
int postDataLength = postData.length;
URL url = new URL("https://trace.moe/api/search");
HttpURLConnection conn = (HttpURLConnection) url.openConnection();
conn.setDoOutput(true);
conn.setRequestMethod("POST");
conn.addRequestProperty("Content-Type", "application/x-www-form-urlencoded");
conn.addRequestProperty("charset", "utf-8");
conn.addRequestProperty("User-Agent", "Mozilla/4.76");
conn.addRequestProperty("Content-Length", Integer.toString(postDataLength));
conn.setUseCaches(false);
try (DataOutputStream wr = new DataOutputStream(conn.getOutputStream())) {
wr.write(postData);
}
InputStream inputStream = conn.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(inputStream));
String wtf = br.readLine();
System.out.println(wtf);
//Handle your data `wtf` is the response of the server
} catch (Exception e){
e.printStackTrace();
}
}
и импорт
import java.io.*;
import java.net.HttpURLConnection;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
import java.util.Base64;
В заголовке указано, что вы должны переделать с java на python, а в вашем сообщении говорится, что вы хотите переделать с python на java, пожалуйста, примите решение и отредактируйте сообщение :)