Jetzt kostenlos Anmelden!

Sumale.nin Männlich

postet ab und an hier

Beiträge: 213

Geschlecht: Männlich

Wohnort: Essen

PHPKIT Version: 1.6.5

1

Donnerstag, 19. Januar 2012, 12:03

[JavaScript] RegEX

Hallo zusammen,

hat jemand von euch in Javascript etwas erfahrung? Ich möchte mit RegEx einen bestimmten teil einer URL ausgeben:

Es geht um die Kanallinks von Youtube. Ein Kanallink sieht Beispielsweise so aus:

Quellcode

1
http://www.youtube.com/user/gameinsideshow?blend=1&ob=video-mustangbase#p/a/u/1/9EI6EmMdvVc

Dabei wäre das was ich brauche (Hier ROT):
http://www.youtube.com/user/gameinsidesh…ngbase#p/a/u/1/9EI6EmMdvVc
Man muss auch beachten das "u/1/" sich auch immer verändert
Ich möchte die URL aber dann so ausgeben:
http://www.youtube.com/watch?v=9EI6EmMdvVc

Hat da jemand eventuell ein Codeschnipsel für mich?

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Sumale.nin« (19. Januar 2012, 12:41)

  • Zum Seitenanfang
  • Zum Seitenende

HiGHteK Männlich

findet sich zurecht

Beiträge: 144

Geschlecht: Männlich

PHPKIT Version: 1.6.03

2

Donnerstag, 19. Januar 2012, 12:54

Hallo Sumale.nin,

wenn der für dich interessante Teil der URL tatsächlich immer am Ende der URL nach einem Slash steht, dann brauchst du dafür eigentlich kein Regex. Du müsstest dir nur den Index des letzten Slash (Stichwort indexOf-Funktion) in der Zeichenkette ermitteln und ab da alle Zeichen aus dem String herausschneiden. Sollte deutlich weniger aufwendig und fehleranfällig sein als RegEx, besonders dann wenn sich die URL immer mal ändert (was nicht heißt, dass es mit RegEx nicht gehen würde ;) )

Grtz
[Bevor du jemanden mit Füßen trittst, überleg ob du einem eventuellen Echo gewachsen bist]
  • Zum Seitenanfang
  • Zum Seitenende

Sumale.nin Männlich

postet ab und an hier

Beiträge: 213

Geschlecht: Männlich

Wohnort: Essen

PHPKIT Version: 1.6.5

3

Donnerstag, 19. Januar 2012, 13:36

Hallo Hightek,

mein Script sieht komplett so aus:

Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
(function () {
   var youtube2mp3pathfilsh ='http://www.filsh.net/?url='+encodeURIComponent(document.URL); 
   var youtube2mp3path ='http://www.video2mp3.net/?url='+encodeURIComponent(document.URL); 
   var youtube2mp3path_hq ='http://www.video2mp3.net/?url='+encodeURIComponent(document.URL)+"&hq=1";
   var youtube2mp3path_shrk ='http://shrk.biz/api_big.php?key=4f162e7eca862f863c5e211cab68f2a1&uid=1&adtype=int&url='+encodeURIComponent(document.URL);
   var direct_url = encodeURIComponent(document.URL);
   var yt_kanallink = direct_url.indexOf('/');
   var div_embed1 = document.getElementById('watch-headline-user-info');
   var div_embed2 = document.getElementById('user_banner');
   
   
   if (div_embed1) {
  div_embed1.innerHTML = div_embed1.innerHTML + "&nbsp;<button data-tooltip-text=\"Teile das Video über einem Kurzen Link\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path_shrk+"');\" title=\"Teile das Video mit einem Kurzen Link\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Teilen<\/span><\/button>&nbsp;";
  div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Das Video in standard MP3 Qualit&auml;t umwandel und herunterladen\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path+"');\" title=\"Das Video in standard MP3 Qualit&auml;t umwandel und herunterladen\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">MP3</font> laden<\/span><\/button>&nbsp;";
  div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Das Video in hoher MP3 Qualit&auml;t umwandel und herunterladen\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path_hq+"');\" title=\"Das Video in hoher MP3 Qualit&auml;t umwandel und herunterladen\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">MP3</font> laden (HQ)<\/span><\/button>&nbsp;";
  div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Video in verschiedener Qualit&auml;t und Formate downloaden\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3pathfilsh+"');\" title=\"Video in verschiedener Qualit&auml;t und Formate downloaden\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">Video+</font> laden (HQ)<\/span><\/button>&nbsp;";  
  }
   if (div_embed2) {
  div_embed2.innerHTML = div_embed2.innerHTML + '<a href="#">'+yt_kanallink+'</a>';
  }
})();

Eingebaut ist es aktuell so:

Javascript-Quelltext

1
2
   var direct_url = encodeURIComponent(document.URL);
   var yt_kanallink = direct_url.indexOf('/');

Die Ausgabe wird dann über diesen Erzeugt:
'+yt_kanallink+'
Es wird mir lediglich "-1" ausgegeben. Und nicht die ID

Edit://
Ich sehe jetzt gerade aber, das die URL so ausgegeben wird:

Quellcode

1
http%3A%2F%2Fwww.youtube.com%2Fuser%2Fgameinsideshow%3Fblend%3D1%26ob%3Dvideo-mustangbase%23p%2Fa%2Fu%2F0%2FUzPFchH7ytk
  • Zum Seitenanfang
  • Zum Seitenende

HiGHteK Männlich

findet sich zurecht

Beiträge: 144

Geschlecht: Männlich

PHPKIT Version: 1.6.03

4

Freitag, 20. Januar 2012, 09:13

Du hast in deiner jetzigen Umsetzung m.M.n nach 2 Fehler drin...
1. Das Suchen von Zeichen innerhalb der URL solltest du machen, bevor du die Funktion encodeURIComponent aufrufst. Durch diesen Funktionsaufruf werden Sonderzeichen in der URL wie z.B. , / ? : @ & = + $ # encodiert.
2. Du verwendest die Funktion indexOf() falsch. Diese Funktion ermittelt dir den Index der angegebenen Zeichenkette in einer Zeichenkette und gibt dir -1 zurück, wenn diese nicht vorhanden ist. Demnach solltest du dir die einzelnen Funktion und was sie tatsächlich tun evtl. nochmal genauer anschauen ;)

Folgender Beispielcode sollte demnach zeigen, wie es gehen könnte (ohne Anspruch auf absolute Fehlerfreiheit ^^ ):

Javascript-Quelltext

1
2
3
4
5
var url = "http://www.youtube.com/user/gameinsidesh…ngbase#p/a/u/1/9EI6EmMdvVc";
var index = url.lastIndexOf("/");
var part = url.substring(index + 1, url.length);

alert(part); //Gibt '9EI6EmMdvVc' aus

Ist an sich auch nix magisches...Es wird innerhalb der angegebenen URL der letzte vorkommende Slash (/) via lastIndexOf() gesucht und ab dessen Index der Rest der Zeichenkette via substring ausgeschnitten und in die Variable part gepackt. Um das Ganze wartbarer zu machen, kann man das nun natürlich noch in eine Funktion / Methode auslagern und somit leicht wieder verwenden..Aber das Ganze soll ja nur n Beispiel sein ;)

Hoff das hilft dir weiter und sorgt für den ein oder anderen erhellenden Moment.

Grtz
[Bevor du jemanden mit Füßen trittst, überleg ob du einem eventuellen Echo gewachsen bist]
  • Zum Seitenanfang
  • Zum Seitenende

Sumale.nin Männlich

postet ab und an hier

Beiträge: 213

Geschlecht: Männlich

Wohnort: Essen

PHPKIT Version: 1.6.5

5

Freitag, 20. Januar 2012, 11:04

Danke für deine Hilfe!
So funktioniert das nun so weit.

Javascript-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
// ==UserScript==
// @name       	Youtube 2 MP3 Converter v1.4
// @namespace  	http://browser.sumale.biz
// @description	Videos von Youtube in MP3 oder mehr umwandeln. By Benny Böhnke
// @include http://youtube.com/*
// @include http://*.youtube.com/*
// @include https://youtube.com/*
// @include https://*.youtube.com/*
// @include http://youtube.de/*
// @include http://*.youtube.de/*
// @include https://youtube.de/*
// @include https://*.youtube.de/*
// ==/UserScript==

(function () {
   var url = decodeURIComponent(document.URL);
   var index = url.lastIndexOf("/");
   var part = url.substring(index + 1, url.length);
   var youtube2mp3pathfilsh ='http://www.filsh.net/?url='+encodeURIComponent(document.URL); 
   var youtube2mp3path ='http://www.video2mp3.net/?url='+encodeURIComponent(document.URL); 
   var youtube2mp3path_hq ='http://www.video2mp3.net/?url='+encodeURIComponent(document.URL)+"&hq=1";
   var youtube2mp3path_shrk ='http://shrk.biz/api_big.php?key=4f162e7eca862f863c5e211cab68f2a1&uid=1&adtype=int&url='+encodeURIComponent(document.URL);
   var div_embed1 = document.getElementById('watch-headline-user-info');
   var div_embed2 = document.getElementById('user_banner');

   if (div_embed1) {
  	div_embed1.innerHTML = div_embed1.innerHTML + "&nbsp;<button data-tooltip-text=\"Teile das Video über einem Kurzen Link\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path_shrk+"');\" title=\"Teile das Video mit einem Kurzen Link\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Teilen<\/span><\/button>&nbsp;";
  	div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Das Video in standard MP3 Qualit&auml;t umwandel und herunterladen\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path+"');\" title=\"Das Video in standard MP3 Qualit&auml;t umwandel und herunterladen\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">MP3</font> laden<\/span><\/button>&nbsp;";
	  div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Das Video in hoher MP3 Qualit&auml;t umwandel und herunterladen\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3path_hq+"');\" title=\"Das Video in hoher MP3 Qualit&auml;t umwandel und herunterladen\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">MP3</font> laden (HQ)<\/span><\/button>&nbsp;";
	  div_embed1.innerHTML = div_embed1.innerHTML + "<button data-tooltip-text=\"Video in verschiedener Qualit&auml;t und Formate downloaden\" type=\"button\" class=\"subscribe-button yt-uix-button yt-uix-tooltip\" onclick=\"window.open('"+youtube2mp3pathfilsh+"');\" title=\"Video in verschiedener Qualit&auml;t und Formate downloaden\" data-loaded=\"true\" data-button-action=\"yt.www.subscriptions.button.toggleMenu\" role=\"button\"><span class=\"yt-uix-button-content\" style=\"font-weight:bold;\">Als <font color=\"#FF3333\">Video+</font> laden (HQ)<\/span><\/button>&nbsp;";  
  }
   if (div_embed2) {
  	div_embed2.innerHTML = div_embed2.innerHTML + ''+part+''; 
  }
})();

Jetzt habe ich das Problem, das wenn ich in der Kanalseite (Beispiel: http://www.youtube.com/user/gameinsidesh…u/0/UzPFchH7ytk) rumsurfe, wird mir in diesem Fall "UzPFchH7ytk" ausgegeben. Klicke ich innerhalb der Kanalseite auf ein anderes Video (Biepsiel: http://www.youtube.com/user/gameinsidesh…u/1/9EI6EmMdvVc), dann wird mir "UzPFchH7ytk" + "9EI6EmMdvVc" ausgegeben, also "UzPFchH7ytk9EI6EmMdvVc", wie kann ich das verhindern?
  • Zum Seitenanfang
  • Zum Seitenende

HiGHteK Männlich

findet sich zurecht

Beiträge: 144

Geschlecht: Männlich

PHPKIT Version: 1.6.03

6

Freitag, 20. Januar 2012, 14:27

Hello again!

Der Fehler sollte sich in dieser Zeile finden lassen...

Javascript-Quelltext

1
2
3
if (div_embed2) {
  	div_embed2.innerHTML = div_embed2.innerHTML + ''+part+''; 
}


Dort nimmst du den HTML-Inhalt aus div_embed2 und hängst hinten immer nur den Teil aus der URL dran. Stattdessen müsstest du hier den Inhalt des DIV komplett ersetzen und die neu erzeugt URL einfügen!

Grtz
[Bevor du jemanden mit Füßen trittst, überleg ob du einem eventuellen Echo gewachsen bist]
  • Zum Seitenanfang
  • Zum Seitenende

Sumale.nin Männlich

postet ab und an hier

Beiträge: 213

Geschlecht: Männlich

Wohnort: Essen

PHPKIT Version: 1.6.5

7

Freitag, 20. Januar 2012, 14:56

Irgendwie steh ich gerade auf dem Schlauch, wie meinst du das?
Kannst du mir ein Beispiel geben?

Edit://
Erledigt und Danke für die Super HILFE!! :thumbsup: :thumbsup:

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »Sumale.nin« (20. Januar 2012, 16:03)

  • Zum Seitenanfang
  • Zum Seitenende