@Override
	public void doStep() {
		final ProcessBuilder n = new ProcessBuilder(ConfigManager.YOUTUBE_DL.getAbsolutePath(),
				"-o", ConfigManager.TEMP_DIR.getAbsolutePath() + ConfigManager.DS
						+ "%(title)s.%(ext)s", entry.getWebURL());

		final CLI y = new CLI(n);
		y.addProcessListener(new ProcessAdapter() {
			private int current = 1;
			private int total = 1;

			@Override
			public void processLineOut(final String line) {
				if (DownloadInfo.isProgress(line)) {
					final DownloadInfo dinf = new DownloadInfo(line);
					final double c = dinf.progress / 100.0;
					double base = (double) (current - 1) / (double) total;

					base += c / total;
					StepDownload.this.reportProgress(base);
				}
				// [download] Downloading video #1 of 9
				if (line.contains("Downloading video #")) {
					final String[] p = line.split("video #")[1].split(" of ");
					current = Integer.parseInt(p[0]);
					total = Integer.parseInt(p[1]);
				}
				// Merging formats into
				// "C:\Users\Nik\git\Advanced-Youtube-Downloader\Advanced-Youtube-Download\temp\Jimi
				// Hendrix Purple Haze.mp4"
				if (line.contains("[ffmpeg]") && line.contains("Merging")) {
					String p = line.split("formats into \"")[1].trim();
					p = p.replaceAll("\"", "");
					StepDownload.this.entry.addDownloadTempFile(new File(p));
				}
				if (line.contains("[download]") && line.contains("has already been")) {
					String p = line.split("download")[1].substring(2);
					p = p.split("has already been")[0].trim();
					StepDownload.this.entry.addDownloadTempFile(new File(p));
				}
				// System.out.println(line);
			}
		});
		y.run();

		nextStep();
	}