StringRegExp - bestimmte Sachen ändern

06/04/2011 18:54 Ludder231#1
Hi epvpers,

ich habe vor nicht allzu langer Zeit einen Thread gepostet indem es um StringRegExp ging und wie man damit was aus einem Quelltext ausliest..

So jz wollte ich dazu fragen wie man es nun anstellt aus:

Code:
http://www.youtube.com/embed/r_JxFNU0F-Q?rel=0
zu das macht:
Code:
http://www.youtube.com/watch?v=r_JxFNU0F-Q
d.h Das "embed/" und das "?rel=0" muss weg...
dafür muss aber ein "watch?v=" hinzu...

Hoffe es funktioniert..

MfG Ludder231
06/05/2011 21:07 Ludder231#2
Keiner ne ahnung?? :/ -.-
06/05/2011 21:32 Shadow992#3
Quote:
Originally Posted by Ludder231 View Post
Keiner ne ahnung?? :/ -.-
PHP Code:
$var="http://www.youtube.com/embed/r_JxFNU0F-Q?rel=0"
$var=Stringreplace($var,"?rel=0","")
$var=Stringreplace($var,"embed/","watch?v=") 
06/06/2011 09:21 lolkop#4
über regexp könnte man das ganze so lösen:
Code:
$string = 'http://www.youtube.com/embed/r_JxFNU0F-Q?rel=0'
$new = StringRegExpReplace($string, 'http://www.youtube.com/embed/(.+)\?rel=0', 'http://www.youtube.com/watch?v=${1}')
ConsoleWrite($new&@CRLF)
06/06/2011 11:57 Ludder231#5
Danke euch beiden aber ich hab keine ahung wie ich das in mein Script einfügen/anpassen soll, da ich noch nicht so oft mit StringRegExp et6c. gearbeitet habt...

PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\ludder.luca\eigene dateien\facebooktool.kxf
$Form1 = GUICreate("Facebook Tool", 324, 176, 218, 255)
$Input1 = GUICtrlCreateInput("URL", 8, 40, 305, 21)
$Button1 = GUICtrlCreateButton("Check", 80, 72, 75, 25)
$Button2 = GUICtrlCreateButton("Clear", 168, 72, 75, 25)
$Label1 = GUICtrlCreateLabel("Insert the URL and press 'Check' to encode the URL", 8, 8, 312, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$List1 = GUICtrlCreateList("", 0, 104, 324, 75, BitOR($GUI_SS_DEFAULT_LIST,$WS_HSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Do
    
$Msg = GUIGetMsg()
    If 
$Msg == $button1 Then
        $len 
= stringlen(".jpg")
        
$len2 =stringlen(".jpeg")
        
        
$String = StringRegExp(BinaryToString(InetRead(GUICtrlRead($input1))), 'src="http://www.youtube.com/(.*?)"', 3)
        
$string2 = StringRegExp(BinaryToString(InetRead(GUICtrlRead($input1))), 'content="http://(.*?)"', 3)
        
$string3 = stringright(binarytostring(inetread(guictrlread($input1))), $len or $len2)
        
$string4 = StringRegExpReplace($String, 'http://www.youtube.com/embed/(.+)\?rel=0', 'http://www.youtube.com/watch?v=${1}')
        
        
        If 
IsArray($String) Then ;youtube
            guictrlsetdata
($list1, "["&@hour&":"&@min&":"&@sec&"]"&" "&$String[0])
            
ShellExecute("http://www.youtube.com/" &$String4[0])
            
        elseif 
IsArray($String2&$string3) Then
            guictrlsetdata
($list1, "["&@hour&":"&@min&":"&@sec&"]"&" "&$string2[0])
        
ShellExecute("http://" &$string2[0])
        
        elseif 
IsArray($String) or isArray($String2&$string3) = 0 Then
        MsgBox
(16, "Fehler", "Es wurde kein Video oder Bild gefunden!")
    
        endif
    endif
    
    if 
$msg = $button2 Then
        guictrlsetdata
($input1, "")
    EndIf
    
    
Sleep(10)
Until $Msg == -3 
06/06/2011 16:51 V8II#6
Wenn ich dich jetzt nicht falsch verstanden habe dann so :
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\ludder.luca\eigene dateien\facebooktool.kxf
$Form1 = GUICreate("Facebook Tool", 324, 176, 218, 255)
$Input1 = GUICtrlCreateInput("URL", 8, 40, 305, 21)
$Button1 = GUICtrlCreateButton("Check", 80, 72, 75, 25)
$Button2 = GUICtrlCreateButton("Clear", 168, 72, 75, 25)
$Label1 = GUICtrlCreateLabel("Insert the URL and press 'Check' to encode the URL", 8, 8, 312, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$List1 = GUICtrlCreateList("", 0, 104, 324, 75, BitOR($GUI_SS_DEFAULT_LIST, $WS_HSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Do
    
$Msg = GUIGetMsg()
    If 
$Msg == $Button1 Then
        $len 
= StringLen(".jpg")
        
$len2 = StringLen(".jpeg")

        
$String = StringRegExp(BinaryToString(InetRead(GUICtrlRead($Input1))), 'src="http://www.youtube.com/(.*?)"', 3)
        
$string2 = StringRegExp(BinaryToString(InetRead(GUICtrlRead($Input1))), 'content="http://(.*?)"', 3)
        
$string3 = StringRight(BinaryToString(InetRead(GUICtrlRead($Input1))), $len Or $len2)
        
$string4 = StringRegExpReplace($String, 'http://www.youtube.com/embed/(.+)\?rel=0', 'http://www.youtube.com/watch?v=${1}')
        
$String = StringReplace($String, "?rel=0", "")
        
$String = StringReplace($String, "embed/", "watch?v=")

        If 
Not IsArray($String) Then ;youtube
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $String[0])
            
ShellExecute("http://www.youtube.com/" & $string4[0])

        ElseIf 
IsArray($string2 & $string3) Then
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $string2[0])
            
ShellExecute("http://" & $string2[0])

        ElseIf 
IsArray($String) Or IsArray($string2 & $string3) = 0 Then
            MsgBox
(16, "Fehler", "Es wurde kein Video oder Bild gefunden!")

        EndIf
    EndIf

    If 
$Msg = $Button2 Then
        GUICtrlSetData
($Input1, "")
    EndIf

    
Sleep(10)
Until $Msg == -3 
... Da hat ja jemand gelernt mit Variablen zu arbeiten =)

Lg
06/06/2011 19:08 Ludder231#7
Quote:
Originally Posted by V8II View Post
Wenn ich dich jetzt nicht falsch verstanden habe dann so :

... Da hat ja jemand gelernt mit Variablen zu arbeiten =)

Lg
Nee nicht ganz, weil er öffnet ja youtube mit dem "www.youtube/embed/dhasiopd?rel=0" und er soll das "?rel=0" wegmachen und das "embed/" durch "watch?v=" ersetzen, damit das Video nicht mehr auf vollbild ist und man auf die direkte Youtubeseite gelangt.

D.h: Man müsste bei shellexecute iwie noch was hinmachen...?
PHP Code:
ShellExecute("http://www.youtube.com/" &$string[0]) 
So "addiert" er ja nur "embed/blabla?rel=0"(was ich aus dem $string ausgelsenen habe) auf das "www.youtube.com/" rauf...
Aber er soll das ja noch umändern damit das nicht emhr Vollbild ist...

P.S: Ja hab ich :D
06/06/2011 21:12 V8II#8
Das wird doch eh durch das
PHP Code:
********$String*=*StringReplace($String,*"embed/",*"watch?v=") 
erledigt oder?

P.S: Du musst es nicht per ShellExecute machen es geht auch per _IECreate und _IENavigate.

Edit: Ich sehe gerade dass ja gar nicht $String sondern $string4[0] aufgerufen wird. Einfach das StringRegExpReplace wegmachen und Shadows Lösung einfügen, die Variable $var in Shadows Script musst du halt noch in $string4[0] umbenennen. Ich kann es dir nicht machen, vom IPod ist es doch recht schwer ...
06/06/2011 21:18 Ludder231#9
Quote:
Originally Posted by V8II View Post
Wenn ich dich jetzt nicht falsch verstanden habe dann so :
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\ludder.luca\eigene dateien\facebooktool.kxf
$Form1 = GUICreate("Facebook Tool", 324, 176, 218, 255)
$Input1 = GUICtrlCreateInput("URL", 8, 40, 305, 21)
$Button1 = GUICtrlCreateButton("Check", 80, 72, 75, 25)
$Button2 = GUICtrlCreateButton("Clear", 168, 72, 75, 25)
$Label1 = GUICtrlCreateLabel("Insert the URL and press 'Check' to encode the URL", 8, 8, 312, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$List1 = GUICtrlCreateList("", 0, 104, 324, 75, BitOR($GUI_SS_DEFAULT_LIST, $WS_HSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Do
    
$Msg = GUIGetMsg()
    If 
$Msg == $Button1 Then
        $len 
= StringLen(".jpg")
        
$len2 = StringLen(".jpeg")

        
$String = StringRegExp(BinaryToString(InetRead(GUICtrlRead($Input1))), 'src="http://www.youtube.com/(.*?)"', 3)
        
$string2 = StringRegExp(BinaryToString(InetRead(GUICtrlRead($Input1))), 'content="http://(.*?)"', 3)
        
$string3 = StringRight(BinaryToString(InetRead(GUICtrlRead($Input1))), $len Or $len2)
        
$string4 = StringRegExpReplace($String, 'http://www.youtube.com/embed/(.+)\?rel=0', 'http://www.youtube.com/watch?v=${1}')
        
$String = StringReplace($String, "?rel=0", "")
        
$String = StringReplace($String, "embed/", "watch?v=")

        If 
Not IsArray($String) Then ;youtube
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $String[0])
            
ShellExecute("http://www.youtube.com/" & $string4[0])

        ElseIf 
IsArray($string2 & $string3) Then
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $string2[0])
            
ShellExecute("http://" & $string2[0])

        ElseIf 
IsArray($String) Or IsArray($string2 & $string3) = 0 Then
            MsgBox
(16, "Fehler", "Es wurde kein Video oder Bild gefunden!")

        EndIf
    EndIf

    If 
$Msg = $Button2 Then
        GUICtrlSetData
($Input1, "")
    EndIf

    
Sleep(10)
Until $Msg == -3 
... Da hat ja jemand gelernt mit Variablen zu arbeiten =)

Lg
Quote:
Originally Posted by V8II View Post
Das wird doch eh durch das
PHP Code:
********$String*=*StringReplace($String,*"embed/",*"watch?v=") 
erledigt oder?

P.S: Du musst es nicht per ShellExecute machen es geht auch per _IECreate und _IENavigate.

Edit: Ich sehe gerade dass ja gar nicht $String sondern $string4[0] aufgerufen wird. Einfach das StringRegExpReplace wegmachen und Shadows Lösung einfügen, die Variable $var in Shadows Script musst du halt noch in $string4[0] umbenennen. Ich kann es dir nicht machen, vom IPod ist es doch recht schwer ...
Aber ich bekomms nicht hin es in mein Script zu benutzen zmd funktioniert es nie :D
06/06/2011 22:00 BlackHybrid#10
Änder die Variable $string4 zu $string.
06/06/2011 22:15 Ludder231#11
Quote:
Originally Posted by BlackHybrid View Post
Änder die Variable $string4 zu $string.
Wenn ich das mache kommt aber nur "Http:www.youtube.com"
06/06/2011 23:11 BlackHybrid#12
Sorry habs mir net genau angekuggt.
Hier ist nochmal eine Alternative:
PHP Code:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <GUIListBox.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#Region ### START Koda GUI section ### Form=c:\dokumente und einstellungen\ludder.luca\eigene dateien\facebooktool.kxf
$Form1 = GUICreate("Facebook Tool", 324, 176, 218, 255)
$Input1 = GUICtrlCreateInput("URL", 8, 40, 305, 21)
$Button1 = GUICtrlCreateButton("Check", 80, 72, 75, 25)
$Button2 = GUICtrlCreateButton("Clear", 168, 72, 75, 25)
$Label1 = GUICtrlCreateLabel("Insert the URL and press 'Check' to encode the URL", 8, 8, 312, 20)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$List1 = GUICtrlCreateList("", 0, 104, 324, 75, BitOR($GUI_SS_DEFAULT_LIST, $WS_HSCROLL))
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###


Do
    
$Msg = GUIGetMsg()
    If 
$Msg == $Button1 Then
        $len 
= StringLen(".jpg")
        
$len2 = StringLen(".jpeg")
        
$string = "http://www.youtube.com/embed/r_JxFNU0F-Q?rel=0"
        
$string = StringSplit($string, "embed/",1)
        
$string = $string[1]&"watch?v="&$string[2]
        
$string2 = StringRegExp(BinaryToString(InetRead(GUICtrlRead($Input1))), 'content="http://(.*?)"', 3)
        
$string3 = StringRight(BinaryToString(InetRead(GUICtrlRead($Input1))), $len Or $len2)

        If 
Not IsArray($String) Then ;youtube
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $String[0])
            
ShellExecute("http://www.youtube.com/" & $string)

        ElseIf 
IsArray($string2 & $string3) Then
            GUICtrlSetData
($List1, "[" & @HOUR & ":" & @MIN & ":" & @SEC & "]" & " " & $string2[0])
            
ShellExecute("http://" & $string2[0])

        ElseIf 
IsArray($String) Or IsArray($string2 & $string3) = 0 Then
            MsgBox
(16, "Fehler", "Es wurde kein Video oder Bild gefunden!")

        EndIf
    EndIf

    If 
$Msg = $Button2 Then
        GUICtrlSetData
($Input1, "")
    EndIf

    
Sleep(10)
Until $Msg == -3 
06/07/2011 01:54 lolkop#13
würde noch empfehlen den html-code der seite nur einmalig zu laden.

die ganzen regexp funktionen kannste auch in einem schritt einlesen, so sparste dir noch jedes mal die regexp engine starten zu müssen.

zusätzlich kannst du noch alle funde in der listbox listen, und dann den gewünschten treffer in der listbox aussuchen und starten :)

das ganze könnte dann zb so aussehen:
06/07/2011 16:01 Ludder231#14
Quote:
Originally Posted by BlackHybrid View Post
Sorry habs mir net genau angekuggt.
Hier ist nochmal eine Alternative:
....
Ähm aber bei dir ist es ja eine Konstante adresse...Es wird ja eine mit Inetread rausgesucht aus einem Quellcode, also bringt mir das nciht viel ...
Trozdem danke :)
06/07/2011 16:07 BlackHybrid#15
Vielleicht kannst du den Link mit StringBetween rausfinden. Dann hast du deinen String.