Youtube Link

TiGreen

Mitglied
Hallo,

Wie bekommt man aus dem Source-Code einer HTML Seite den aktuellen Youtube-Link zum Download?
Habe nun schon 2 Stunden gesucht, doch es scheint so als ob alle Methoden veraltet sind, die ich gefunden habe.

Wie kann ich den Link auslesen? Oder besser gesagt die 3 Teile die den Link umfassen.
Ich möchte gerne die Technik wissen und nicht das Video von z.B. Share-Tube - YouTube Downloader und Converter ,etc downloaden.

Liebe Grüße

TiGreen
 

Cola_Colin

Top Contributor
Java:
/**
 * 
 * @author Colin Clausen
 */
public class YoutubeDecoder extends AbstractLinkDecoder {

	private static final Logger LOG = LoggerFactory
			.getLogger(YoutubeDecoder.class);

	private static final String STREAM_MAP = "(?<=\"url_encoded_fmt_stream_map\": \").*?(?=\")";
	private static final String URLS_IN_MAP = "(?<=url=).*?(?=,|$)";
	private static final String URL_PART_A = "http://.*?(?=\\\\u0026)";
	private static final String URL_PART_B = "sig=.*?(?=\\\\u0026)";
	private static final String QUALITY_MATCH = "(?<=\\\\u0026quality=).*?(?=,|$)";
	private static final String TYPE_MATCH = "(?<=\\\\u0026type=).*?(?=\\\\u0026)";
	
	private enum QualityLevel {
		small, medium, large, hd720, hd1080,
	}

	public int rateQuality(VideoLink l) {
		if (l.getFileType().contains("webm")) { // we dont support webm
												// conversion
			return -1;
		} else {
			return QualityLevel.valueOf(l.getQuality()).ordinal();
		}
	}

	public VideoDL getLinks(String fullCode) {
		try {
			VideoLink[] results = null;

			Matcher titleMatcher = Pattern.compile(
					"(?<=<title>).*?(?=- YouTube)",
					Pattern.DOTALL).matcher(fullCode);

			String vidName;

			if (titleMatcher.find()) {
				vidName = URLDecoder.decode(titleMatcher.group().replaceAll(
						"[\\n\\r]", "").trim(), "UTF-8");
			} else {
				vidName = UUID.randomUUID().toString();
			}

			Matcher linkRegion = Pattern.compile(
					STREAM_MAP,
					Pattern.DOTALL).matcher(fullCode);

			if (linkRegion.find()) {
				String streamMap = linkRegion.group();
				
				Matcher urlsMatch = Pattern.compile(URLS_IN_MAP, Pattern.DOTALL).matcher(streamMap);
				
				List<String> codes = new ArrayList<String>();
				while(urlsMatch.find()) {
					codes.add(urlsMatch.group());
				}
				
				results = new VideoLink[codes.size()];

				for (int i = 0; i < codes.size(); i++) {
					String link = URLDecoder.decode(URLDecoder.decode(codes.get(i), "UTF-8"), "UTF-8");

					Matcher partAFinder = Pattern.compile(URL_PART_A, Pattern.DOTALL).matcher(link);
					Matcher partBFinder = Pattern.compile(URL_PART_B, Pattern.DOTALL).matcher(link);
					Matcher qualityFinder = Pattern.compile(QUALITY_MATCH, Pattern.DOTALL).matcher(link);
					Matcher typeFinder = Pattern.compile(TYPE_MATCH, Pattern.DOTALL).matcher(link);
					
					if (partAFinder.find() && partBFinder.find()) {
						String fileLink = partAFinder.group()+"&"+partBFinder.group().replace("sig", "signature");
						String quality = qualityFinder.find() ? qualityFinder.group() : "medium";
						String type = typeFinder.find() ? typeFinder.group() : "unknown";

						results[i] = new VideoLink(vidName, fileLink, type,
								quality, this);

					} else {
						LOG.info("failed to parse: " + link);
					}
				}

			} else {
				LOG.info("failed to parse the whole page :(");
			}

			ArrayList<VideoLink> links = new ArrayList<VideoLink>();
			for (VideoLink l : results) {
				if (l != null) {
					links.add(l);
				}
			}

			return new VideoDL(vidName, this, links.toArray(new VideoLink[links
					.size()]));
		} catch (Exception ex) {
			LOG.error("could not parse link!", ex);
			throw new RuntimeException(ex);
		}
	}

	public String getSiteHostName() {
		return "www.youtube.com";
	}
}
Das funktioniert.
 

Cola_Colin

Top Contributor
Ja, das ist nur die Klasse, die die Logik zum erfassen der Links aus der HTML-Seite enthällt.
Daraus könntest du dir etwas eigenes bauen, einfach kopieren wird nicht klappen.
 

TiGreen

Mitglied
Achso ok kein Problem ;) bastel mir da schon was zusammen. Danke (wenns klappt:lol:)

EDIT: OK, klappt :toll: Vielen Dank!
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
M JSON Parsing von youtube video comment replies Allgemeine Java-Themen 4
M YouTube downloader Allgemeine Java-Themen 1
T Youtube Data API Allgemeine Java-Themen 12
H YouTube API Allgemeine Java-Themen 1
M Abonnentenzahl, Aufrufe, etc. von einem YouTube-Kanal anzeigen Allgemeine Java-Themen 7
M YouTube-Video herunterladen und speichern Allgemeine Java-Themen 10
S Youtube Hits verändern??? Allgemeine Java-Themen 7
J Class to link Java Allgemeine Java-Themen 4
G Maven link outdated Allgemeine Java-Themen 13
S Link element an vorletzte stelle einfügen Allgemeine Java-Themen 2
D HTTP Http-Link mittels GUI schreiben Allgemeine Java-Themen 5
M redirected link Allgemeine Java-Themen 11
G Datei per Drag and Drop auf den Link öffnen Allgemeine Java-Themen 6
F.S.WhiTeY JDK installieren Linux: Nach Update link auf Java zerschossen Allgemeine Java-Themen 4
F Parameter im Link /jar-Aufruf Allgemeine Java-Themen 12
kodela aktiver Link in einem Dialog Allgemeine Java-Themen 14
T Link zum Internet Allgemeine Java-Themen 12
M Autostart: Registry oder Link? Allgemeine Java-Themen 6
S regex für einen Link Allgemeine Java-Themen 3
H File Attribut bzw Link erkennen Allgemeine Java-Themen 5
F Link in Applet "verstecken" Allgemeine Java-Themen 3
Nicer Problem mit Link aufruf Allgemeine Java-Themen 6
W Webseite öffnen und Link anklicken Allgemeine Java-Themen 2
P Link in einem ausgewählten Browser öffnen Allgemeine Java-Themen 10
A Überprüfen, ob ein File eine Verknüpfung / Link ist Allgemeine Java-Themen 3
S Link im Browser öffnen Allgemeine Java-Themen 10
S E-Mail-Links: geklickten Link ermitteln Allgemeine Java-Themen 4
S mailto-Link in MessageBox Allgemeine Java-Themen 17
B Browser link aus Java-Applikation öffnen Allgemeine Java-Themen 2
J JSP, Link nur bei erfüllter Bedingung anzeigen Allgemeine Java-Themen 6
J JSP Client LInk einbauen Allgemeine Java-Themen 15
M Link parsen bzw. zerlegen Allgemeine Java-Themen 9
Q || Wie speichert man Dateien wo der Pfad als Link(UNIX)... Allgemeine Java-Themen 11
G http:// in Link umwandeln Allgemeine Java-Themen 14
D Linux Link wird als Ordner interpretiert? Allgemeine Java-Themen 2
S Mauszeiger beim Link! Allgemeine Java-Themen 22
M HTML Link Fehler Allgemeine Java-Themen 5
G Html Link in einem JLabel? Allgemeine Java-Themen 3
G Link zu JCreator oder anderem Tool Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben