Я пытаюсь построить на основе Java приложение jsoup автоматически загружать английские субтитры для фильмов (я ленивый, я знаю. Это был вдохновило от аналогичного python на основе приложения). Он должен спросить вас название фильма, а затем загрузить для него английский субтитр от subscene.Сохранить файл с веб-сайта с Java
Я могу довести его до ссылки для скачивания, но получаю Неиспользованный тип содержимого Ошибка при попытке «перейти» к этой ссылке. Вот мой код
public static void main(String[] args) {
try {
String videoName = JOptionPane.showInputDialog("Title: ");
subscene(videoName);
}
catch (Exception e) {
System.out.println(e.getMessage());
}
}
public static void subscene(String videoName){
try {
String siteName = "http://www.subscene.com";
String[] splits = videoName.split("\\s+");
String codeName = "";
String text = "";
if(splits.length>1){
for(int i=0;i<splits.length;i++){
codeName = codeName+splits[i]+"-";
}
videoName = codeName.substring(0, videoName.length());
}
System.out.println("videoName is "+videoName);
// String url = "http://www.subscene.com/subtitles/"+videoName+"/english";
String url = "http://www.subscene.com/subtitles/title?q="+videoName+"&l=";
System.out.println("url is "+url);
Document doc = Jsoup.connect(url).get();
Element exact = doc.select("h2.exact").first();
Element yuel = exact.nextElementSibling();
Elements lis = yuel.children();
System.out.println(lis.first().children().text());
String hRef = lis.select("div.title > a").attr("href");
hRef = siteName+hRef+"/english";
System.out.println("hRef is "+hRef);
doc = Jsoup.connect(hRef).get();
Element nonHI = doc.select("td.a40").first();
Element papa = nonHI.parent();
Element link = papa.select("a").first();
text = link.text();
System.out.println("Subtitle is "+text);
hRef = link.attr("href");
hRef = siteName+hRef;
Document subDownloadPage = Jsoup.connect(hRef).get();
hRef = siteName+subDownloadPage.select("a#downloadButton").attr("href");
Jsoup.connect(hRef).get(); //<-- Here's where the problem lies
}
catch (java.io.IOException e) {
System.out.println(e.getMessage());
}
}
Может кто-нибудь, пожалуйста, помогите мне, поэтому мне не нужно вручную загружать субмарины?
Я только что узнал, что с помощью
java.awt.Desktop.getDesktop().browse(java.net.URI.create(hRef));
вместо
Jsoup.connect(hRef).get();
загружает файл после того, как побуждая меня, чтобы сохранить его. Но я не хочу, чтобы меня запрашивали, потому что я не смогу прочитать имя загруженного zip-файла (я хочу разархивировать его после сохранения с помощью java).
Не могли бы вы предоставить более подробную информацию об исключении? –
В нем указано ** Тип необработанного контента. Должен быть текст/*, application/xml или application/xhtml + xml ** – Amber
то, что печатается с 'System.out.println (« hRef is »+ hRef);' –