Как вы думаете, почему он все время выдает мне ошибку, указанную в коде?
пакет youtubedownloader;
импорт JavaFX-приложений.приложения.Приложение;
импорт JavaFX-приложений.одновременно.Услуга;
импорт JavaFX-приложений.одновременно.Задача;
импорт JavaFX-приложений.одновременно.WorkerStateEvent;
импорт JavaFX-приложений.событие.Типа actionevent;
импорт JavaFX-приложений.происшествия.Группа;
импорт JavaFX-приложений.происшествия.Сцена;
импорт JavaFX-приложений.происшествия.контроль.Тревога;
импорт JavaFX-приложений.происшествия.контроль.Кнопка;
импорт JavaFX-приложений.происшествия.контроль.Этикетка;
импорт JavaFX-приложений.происшествия.контроль.объект TextField;
импорт JavaFX-приложений.происшествия.текст.Шрифт;
импорт JavaFX-приложений.происшествия.контроль.Прогрессбар;
импорт JavaFX-приложений.стадии.Этап;
импорт java.net.HttpURLConnection;
импорт Java.нет.Исключения malformedurlexception;
импорт java.net-да.URL-АДРЕС;
импорт java.net-да.URLDecoder;
импорт java.io.BufferedInputStream;
импорт Java.Ио.Командой bufferedreader;
импорт java.io.FileOutputStream;
импорт Java.Ио.Исключение IOException;
импорт java.io.InputStreamReader;
общественный класс расширяет программу youtubedownloader {
приватная кнопка downloadBtn = новая кнопка();
private TextField youtubeUrlField = новое текстовое поле();
private TextField fileName = новое текстовое поле();
метка частного назначения метка1 = новый лейбл();
частная этикетка label2 = новая этикетка();
private Label about = новая метка("создана и разработана компанией SB");
private ProgressBar pbar = новый ProgressBar(0);
частный URL downloadURL;
@Ручная коррекция
public void start(Stage primaryStage) выбрасывает исключение{
Шрифт arial = новый шрифт("arial", 16);
Шрифт arial1 = новый шрифт("arial1", 13);
downloadBtn.setText("скачать");
downloadBtn.помощью setfont(Ариал);
downloadBtn.setLayoutX(10);
downloadBtn.setLayoutY(200);
youtubeUrlField.setFont(arial); youtubeUrlField.setLayoutX(10);
youtubeUrlField.setLayoutY(80);
youtubeUrlField.setPrefColumnCount(23);
именем.помощью setfont(Ариал);
fileName.setLayoutX(10);
fileName.setLayoutY(150);
fileName.setPrefColumnCount(23);
метка1.помощью setfont(Ариал);
метка1.помощью setText("URL видео на YouTube ");
label1.setLayoutX(10);
label1.setLayoutY(50);
метка2.помощью setfont(Ариал);
label2.setText("имя файла (необязательно)");
label2.setLayoutX(10);
label2.setLayoutY(120);
пбар.функцию setvisible(false в);
pbar.setPrefWidth(350);
pbar.setLayoutX(100); pbar.setLayoutY(200);
о компании.setFont(arial1);
about.setLayoutX(20);
о. сетлайуты(260);
downloadBtn.setOnAction((событие ActionEvent) -> {
sendHTTPRequest.перезагрузите(); });
sendHTTPRequest.setOnSucceeded((WorkerStateEvent we) -> { try { downloadURL = new URL(getURLS(sendHTTPRequest.getValue()));
pbar.progressProperty().unbind();
pbar.setProgress(0);
pbar.progressProperty().bind(VideoDownload.progressProperty());
пбар.функцию setvisible(истина);
VideoDownload.перезагрузка(); } поймать (исключения malformedurlexception экс) { предупреждение MSG = новый Алерт(Alert.Тип оповещения.ИНФОРМАЦИЯ);
msg.setTitle("сообщение от загрузчика Youtube");
msg.setContentText("недопустимый Url-адрес");
сообщение.showAndWait(); } });
VideoDownload.setOnSucceeded((WorkerStateEvent we) -> { boolean val = VideoDownload.getValue();
Системы.из.код println(вал);
if (val) { Alert msg = new Alert(Alert.Тип оповещения.ИНФОРМАЦИЯ);
msg.setTitle("сообщение от загрузчика Youtube");
msg.setContentText("загрузка завершена");
сообщение.showAndWait(); } еще { предупреждение MSG = новый Алерт(Alert.Тип оповещения.ИНФОРМАЦИЯ);
msg.setTitle("сообщение от загрузчика Youtube");
msg.setContentText("загрузка не удалась");
сообщение.showAndWait(); }
пбар.функцию setvisible(false в);
});
Группа Корни = новая группа(); корень.getChildren().добавить(downloadBtn);
root.getChildren().add(youtubeUrlField);
корень.getChildren().добавить(именем);
корень.getChildren().добавить(элемент Label1);
корень.getChildren().добавить(метка2);
корень.getChildren().добавить(пбар);
корень.getChildren().добавить(около);
Scene scene = новая сцена(root, 500, 280);
primaryStage.setTitle("загрузчик Youtube");
primaryStage.setScene(сцена);
primaryStage.setResizable(false в);
primaryStage.показать();
}
частная строка getVideoID(String url) { int index = url.indexOf("v=");
индекс += 2;
String id = новая строка();
для (тип int индекс = Я; Я &л; URL-адрес.длина(); я++) ИД+= URL-адрес.используя метод charat(я);
идентификатор возврата;
}
окончательный собственная служба&ЛТ; то StringBuilder &ГТ; = новая услуга sendHTTPRequest &ЛТ; то StringBuilder &ГТ; () {
@Ручная коррекция
защищен задачу< то StringBuilder &ГТ; действие createtask() { возвращение новый задачу < то StringBuilder &ГТ; () {
@Ручная коррекция
защищенный вызов StringBuilder() { строковый ответ;
StringBuilder res = новый StringBuilder();
StringBuilder refinedres = новый StringBuilder();
попробовать { URL-адрес URL-адрес = новый URL-адрес("https://www.youtube.com/get_video_info?&video_id=" + getVideoID(youtubeUrlField.то gettext())); система.из.код println(URL-адрес.метод toString());
HttpURLConnection соед = (HttpURLConnection) URL-адрес.содержащие вредоносные элементы(); соед.setRequestMethod("вам");
Системы.из.код println(соед.getResponseMessage());
Командой bufferedreader в = читает(новый InputStreamReader(соед.getInputStream())); пока ((ответ = в .с readline()) != нуль) РЭС.добавить(ответ); refinedres.добавить(URLDecoder.расшифруйте(URLDecoder.расшифруйте(рез.метод toString(), "UTF-8 с"), "УТФ-8")); в .закрыть(); возврат refinedres; } поймать (исключения malformedurlexception экс) {} поймать (исключение IOException экс) {}
возвращать null;
}
};
}
};
Обслуживание в < логическое выражение > VideoDownload = новая услуга &ЛТ; логическое &ГТ; () {
@Ручная коррекция
защищен задачу < логическое выражение > действие createtask() { возвращение новый задачу < логическое &ГТ; () {
@Ручная коррекция
защищенные логические звоните() бросает исключение { длинный длина;
логическое значение завершено = false;
int count = 0;
попробовать (BufferedInputStream бис = новый BufferedInputStream(downloadURL.сайт openstream()); поток ФО = Новый Поток(именем.то gettext().длина() == 0 ? "видео.МР4" : именем.то gettext().функция concat(".МР4"))) { продолжительность = downloadURL.содержащие вредоносные элементы().getContentLength();
int i = 0;
final byte[] data = новый байт[1024];
пока ((кол-во = бис.прочитать(данные)) != -1) { Я += посчитайте;
fos.write(data, 0, count);
updateProgress(i, длина); }
completed = true; } catch (IOException ex) {}
возврат завершен;
}
};
}
};
private String getURLS(StringBuilder response) { StringBuilder temp1 = new StringBuilder();
Строка[] temp2, temp3, temp4;
попробуйте { int index = response.indexOf("url_encoded_fmt_stream_map");
for (int i = index; i < response.длина(); я++) { temp1.добавить(ответ.используя метод charat(я)); }
temp2 = temp1.toString().split("&url=");
if (temp2.length > 0) { temp3 = temp2[1].split(";");
if (temp3.length > 0) { temp4 = temp3[0].split(",");
если (temp4.length > 0) вернуть temp4[0];
еще вернуть temp3[0]; } иначе вернуть temp2[1]; } } улов (исключение е) { предупреждение MSG = новый Алерт(Alert.Тип оповещения.ИНФОРМАЦИЯ);
msg.setTitle("форма сообщения youtube Downloader");
msg.setContentText("ошибка при загрузке");
сообщение.showAndWait(); }
возвращать null;
}
публичный статический пустота главный(строка[] аргументы) {
запуск(args);
}
}
Что я уже пробовал:
Привет, ребята...Я разработал эту программу You Tube Downloader, но она не работает, может кто-нибудь сказать мне, что я сделал не так,пожалуйста...
Richard MacCutchan
- кто-нибудь может сказать мне,что я сделал не так, пожалуйста..."
Да, вы просто сбросили груз неформатированного кода, но не потрудились объяснить, в чем проблема.