Jump to content

error removing <br>, <i> and </i> tag


Recommended Posts

I am trying to create a lyric grabber... the script will get the source from a webpage and display it in an edit box.

but I am stuck at removing the <br>, <i> and </i> tags... I had tried replacing the tags with @crlf but it would end up displaying a tiny square box

in the edit box. Below is the current script

OnAutoItExitRegister("_exit")
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <INet.au3>
#include <IE.au3>
Global $file, $txt
Global $lyricData[2],$lyricOBJ

$Form1 = GUICreate("Lyric Finder", 625, 443, 294, 186)
$Edit1 = GUICtrlCreateEdit("", 50, 96, 500, 289,BitOR($ES_CENTER,$ES_WANTRETURN,$WS_VSCROLL))
GUICtrlSetFont(-1, 13, 800, 0, "vernada")
GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1, 0x000000)
GUICtrlSetLimit(-1, 35)
GUICtrlSetResizing(-1, $GUI_DOCKWIDTH)
GUICtrlSetData(-1, "")
$Pic1 = GUICtrlCreatePic("", 8, 96, 249, 289, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
$Label2 = GUICtrlCreateLabel("Song name:", 28, 32, 61, 17)
$Label3 = GUICtrlCreateLabel("Artist name:", 28, 56, 56, 17)
$songInput = GUICtrlCreateInput("", 88, 32, 249, 21)
$ArtistInput = GUICtrlCreateInput("", 88, 56, 249, 21)
$Button1 = GUICtrlCreateButton("Search", 344, 24, 105, 57, $WS_GROUP)
$Button2 = GUICtrlCreateButton("Exit", 464, 24, 105, 57, $WS_GROUP)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
    Case $GUI_EVENT_CLOSE
        Exit
Case $Button2
    Exit
Case $Button1
    $a= GUICtrlRead($ArtistInput)
    $s= GUICtrlRead($songInput)
    $result = getLyrics($a,$s)
    GUICtrlSetData($Edit1, $result)
EndSwitch
WEnd

Func getLyrics($a="",$s="")
$x = StringReplace($a, " ", "") 
$y = StringReplace($s, " ", "")
$lyricURL = "http://www.azlyrics.com/lyrics/" & $x & "/" & $y & ".html"
$String = BinaryToString(InetRead($lyricURL, 1))
$lyricData = _StringBetween2($String,"<!-- start of lyrics -->","<!-- end of lyrics -->")
$String = StringReplace($lyricData, '<br>', @crlf)
$String= StringReplace($String, '<i>', "")
$String= StringReplace($String, '</i>', "")
if StringLen($String) == 0 Then $String = @crlf & "Lyrics not found."
    Return ($String)
EndFunc

Func _StringBetween2($s, $from, $to)
    $x = StringInStr($s, $from) + StringLen($from)
    $y = StringInStr(StringTrimLeft($s, $x), $to)
    Return StringMid($s, $x, $y)
EndFunc

Func _exit()
    Exit
EndFunc

Hope the masters can help me... :huh2:

Edited by personant
Link to comment
Share on other sites

Ok, only because you said 'masters' ;P

#AutoIt3Wrapper_Au3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 -d

OnAutoItExitRegister("_exit")

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>

#region ;### Koda GUI section ###
GUICreate("Lyric Finder", 625, 443, 294, 186)

Global Const $Edit1 = GUICtrlCreateEdit('', 50, 96, 500, 289, BitOR($ES_CENTER, $ES_WANTRETURN, $WS_VSCROLL))
GUICtrlSetFont($Edit1, 13, 60, 0, "Verdana")
GUICtrlSetColor($Edit1, 0xFFFFFF)
GUICtrlSetBkColor($Edit1, 0x000000)
GUICtrlSetLimit($Edit1, 35)
GUICtrlSetResizing($Edit1, $GUI_DOCKWIDTH)

Global Const $Pic1 = GUICtrlCreatePic('', 8, 96, 249, 289, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))

GUICtrlCreateLabel("Song name:", 28, 32, 61, 17)
Global Const $songInput = GUICtrlCreateInput('numb', 88, 32, 249, 21)

GUICtrlCreateLabel("Artist name:", 28, 56, 56, 17)
Global Const $ArtistInput = GUICtrlCreateInput('linkin park', 88, 56, 249, 21)

Global Const $search_btn = GUICtrlCreateButton("Search", 344, 24, 105, 57, $WS_GROUP)
Global Const $exit_btn = GUICtrlCreateButton("Exit", 464, 24, 105, 57, $WS_GROUP)

GUISetState(@SW_SHOWNORMAL)
#endregion

Global $result

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $exit_btn
            Exit
        Case $search_btn
            $result = getLyrics()
            GUICtrlSetData($Edit1, $result)
    EndSwitch
WEnd

Func getLyrics()
    Local Const $artist = StringStripWS(GUICtrlRead($ArtistInput), 8)

    Local Const $song = StringStripWS(GUICtrlRead($songInput), 8)

    Local Const $lyricURL = StringLower("http://www.azlyrics.com/lyrics/" & $artist & '/' & $song & ".html")

    Local Const $lyrics = BinaryToString(InetRead($lyricURL, 1))

    If @error = 1 Then
        Return "Lyrics not found." & @CRLF
    EndIf

    Local $lyricData = _StringBetween($lyrics, "<!-- start of lyrics -->", "<!-- end of lyrics -->")

    $lyricData = StringStripWS($lyricData[0], 7)
    $lyricData = StringReplace($lyricData, "<br>", @CRLF)
    $lyricData = StringReplace($lyricData, "<i>", '')
    Return StringReplace($lyricData, "</i>", '')
EndFunc

Func _exit()
    Exit
EndFunc
Edited by LaCastiglione
Link to comment
Share on other sites

Ok, only because you said 'masters' ;P

#AutoIt3Wrapper_Au3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 -d

OnAutoItExitRegister("_exit")

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>

#region ;### Koda GUI section ###
GUICreate("Lyric Finder", 625, 443, 294, 186)

Global Const $Edit1 = GUICtrlCreateEdit('', 50, 96, 500, 289, BitOR($ES_CENTER, $ES_WANTRETURN, $WS_VSCROLL))
GUICtrlSetFont($Edit1, 13, 800, 0, "Verdana")
GUICtrlSetColor($Edit1, 0xFFFFFF)
GUICtrlSetBkColor($Edit1, 0x000000)
GUICtrlSetLimit($Edit1, 35)
GUICtrlSetResizing($Edit1, $GUI_DOCKWIDTH)

Global Const $Pic1 = GUICtrlCreatePic('', 8, 96, 249, 289, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))

GUICtrlCreateLabel("Song name:", 28, 32, 61, 17)
Global Const $songInput = GUICtrlCreateInput('', 88, 32, 249, 21)

GUICtrlCreateLabel("Artist name:", 28, 56, 56, 17)
Global Const $ArtistInput = GUICtrlCreateInput('', 88, 56, 249, 21)

Global Const $search_btn = GUICtrlCreateButton("Search", 344, 24, 105, 57, $WS_GROUP)
Global Const $exit_btn = GUICtrlCreateButton("Exit", 464, 24, 105, 57, $WS_GROUP)

GUISetState(@SW_SHOWNORMAL)
#endregion

Global $result

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $exit_btn
            Exit
        Case $search_btn
            $result = getLyrics()
            GUICtrlSetData($Edit1, $result)
    EndSwitch
WEnd

Func getLyrics()
    Local Const $artist = StringStripWS(GUICtrlRead($ArtistInput), 8)

    Local Const $song = StringStripWS(GUICtrlRead($songInput), 8)

    Local Const $lyricURL = StringLower("http://www.azlyrics.com/lyrics/" & $artist & '/' & $song & ".html")

    Local Const $lyrics = BinaryToString(InetRead($lyricURL, 1))

    If @error = 1 Then
        Return @CRLF & "Lyrics not found."
    EndIf

    Local $lyricData = _StringBetween($lyrics, "<!-- start of lyrics -->", "<!-- end of lyrics -->")

    $lyricData = StringReplace($lyricData[0], "<br>", @CRLF)

    $lyricData = StringReplace($lyricData, "<i>", '')

    $lyricData = StringReplace($lyricData, "</i>", '')

    Return StringStripWS($lyricData, 3)
EndFunc

Func _exit()
    Exit
EndFunc   ;==>_exit

still getting those square boxes.... :huh2:

Posted Image

Link to comment
Share on other sites

founded a way to remove those boxes...but the lyrics will mess up.. is there anyone who can make the lyrics line up again...please

#AutoIt3Wrapper_Au3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 -d

OnAutoItExitRegister("_exit")

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>

#region ;### Koda GUI section ###
GUICreate("Lyric Finder", 625, 443, 294, 186)

Global Const $Edit1 = GUICtrlCreateEdit('', 50, 96, 500, 289, BitOR($ES_CENTER, $ES_WANTRETURN, $WS_VSCROLL))
GUICtrlSetFont($Edit1, 10, 800, 0, "arial")
GUICtrlSetColor($Edit1, 0xFFFFFF)
GUICtrlSetBkColor($Edit1, 0x000000)
GUICtrlSetLimit($Edit1, 35)
GUICtrlSetResizing($Edit1, $GUI_DOCKWIDTH)

Global Const $Pic1 = GUICtrlCreatePic('', 8, 96, 249, 289, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))

GUICtrlCreateLabel("Song name:", 28, 32, 61, 17)
Global Const $songInput = GUICtrlCreateInput('', 88, 32, 249, 21)

GUICtrlCreateLabel("Artist name:", 28, 56, 56, 17)
Global Const $ArtistInput = GUICtrlCreateInput('', 88, 56, 249, 21)

Global Const $search_btn = GUICtrlCreateButton("Search", 344, 24, 105, 57, $WS_GROUP)
Global Const $exit_btn = GUICtrlCreateButton("Exit", 464, 24, 105, 57, $WS_GROUP)

GUISetState(@SW_SHOWNORMAL)
#endregion

Global $result

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $exit_btn
            Exit
        Case $search_btn
            $result = getLyrics()
            GUICtrlSetData($Edit1, $result)
    EndSwitch
WEnd

Func getLyrics()
    Local Const $artist = StringStripWS(GUICtrlRead($ArtistInput), 8)

    Local Const $song = StringStripWS(GUICtrlRead($songInput), 8)

    Local Const $lyricURL = StringLower("http://www.azlyrics.com/lyrics/" & $artist & '/' & $song & ".html")

    Local Const $lyrics = BinaryToString(InetRead($lyricURL, 1))

    If @error = 1 Then
        Return @CRLF & "Lyrics not found."
    EndIf

    Local $lyricData = _StringBetween($lyrics, "<!-- start of lyrics -->", "<!-- end of lyrics -->")

    $lyricData = StringReplace($lyricData[0], "<br>", @CRLF)

    $lyricData = StringReplace($lyricData, "<i>", @cr)

    $lyricData = StringReplace($lyricData, "</i>", @cr)
    
    $lyricData = StringReplace($lyricData, @cr, "")

    $lyricData = StringReplace($lyricData, @lf, "")
    
    Return StringStripWS($lyricData, 3)
EndFunc

Func _exit()
    Exit
EndFunc   ;==>_exit#AutoIt3Wrapper_Au3Check_Parameters=-w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7 -d

OnAutoItExitRegister("_exit")

#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <String.au3>

#region ;### Koda GUI section ###
GUICreate("Lyric Finder", 625, 443, 294, 186)

Global Const $Edit1 = GUICtrlCreateEdit('', 50, 96, 500, 289, BitOR($ES_CENTER, $ES_WANTRETURN, $WS_VSCROLL))
GUICtrlSetFont($Edit1, 10, 800, 0, "arial")
GUICtrlSetColor($Edit1, 0xFFFFFF)
GUICtrlSetBkColor($Edit1, 0x000000)
GUICtrlSetLimit($Edit1, 35)
GUICtrlSetResizing($Edit1, $GUI_DOCKWIDTH)

Global Const $Pic1 = GUICtrlCreatePic('', 8, 96, 249, 289, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))

GUICtrlCreateLabel("Song name:", 28, 32, 61, 17)
Global Const $songInput = GUICtrlCreateInput('', 88, 32, 249, 21)

GUICtrlCreateLabel("Artist name:", 28, 56, 56, 17)
Global Const $ArtistInput = GUICtrlCreateInput('', 88, 56, 249, 21)

Global Const $search_btn = GUICtrlCreateButton("Search", 344, 24, 105, 57, $WS_GROUP)
Global Const $exit_btn = GUICtrlCreateButton("Exit", 464, 24, 105, 57, $WS_GROUP)

GUISetState(@SW_SHOWNORMAL)
#endregion

Global $result

While 1
    Switch GUIGetMsg()
        Case $GUI_EVENT_CLOSE, $exit_btn
            Exit
        Case $search_btn
            $result = getLyrics()
            GUICtrlSetData($Edit1, $result)
    EndSwitch
WEnd

Func getLyrics()
    Local Const $artist = StringStripWS(GUICtrlRead($ArtistInput), 8)

    Local Const $song = StringStripWS(GUICtrlRead($songInput), 8)

    Local Const $lyricURL = StringLower("http://www.azlyrics.com/lyrics/" & $artist & '/' & $song & ".html")

    Local Const $lyrics = BinaryToString(InetRead($lyricURL, 1))

    If @error = 1 Then
        Return @CRLF & "Lyrics not found."
    EndIf

    Local $lyricData = _StringBetween($lyrics, "<!-- start of lyrics -->", "<!-- end of lyrics -->")

    $lyricData = StringReplace($lyricData[0], "<br>", @CRLF)

    $lyricData = StringReplace($lyricData, "<i>", @cr)

    $lyricData = StringReplace($lyricData, "</i>", @cr)
    
    $lyricData = StringReplace($lyricData, @cr, "")

    $lyricData = StringReplace($lyricData, @lf, "")
    
    Return StringStripWS($lyricData, 3)
EndFunc

Func _exit()
    Exit
EndFunc   ;==>_exit

Posted Image

Edited by personant
Link to comment
Share on other sites

Try this

Func getLyrics($a="",$s="")
$x = StringReplace($a, " ", "") 
$y = StringReplace($s, " ", "")
$lyricURL = "http://www.azlyrics.com/lyrics/" & $x & "/" & $y & ".html"
$String = BinaryToString(InetRead($lyricURL, 1))
$lyricData = _StringBetween2($String,"<!-- start of lyrics -->","<!-- end of lyrics -->")
$String = StringReplace($lyricData, '<br>', @cr)
; or second variant: $String = StringReplace($lyricData, '<br>', @lf)
$String= StringReplace($String, '<i>', "")
$String= StringReplace($String, '</i>', "")
if StringLen($String) == 0 Then $String = @crlf & "Lyrics not found."
    Return ($String)
EndFunc
Link to comment
Share on other sites

Another thing you might want to look at is your use of Verdana font in that Edit control. Try either the Default or another common one like Arial.

<i> and </> refer to italics so that doesn't mean they should be replaced with line feeds or CRs anyway.

$sString = BinaryToString(InetRead(<Some URL>))
$sString = StringRegExpReplace($sString, "<.*?br>", @CRLF)
$sString = StringRegExpReplace($sString, "<.+?>", "")

George

Question about decompiling code? Read the decompiling FAQ and don't bother posting the question in the forums.

Be sure to read and follow the forum rules. -AKA the AutoIt Reading and Comprehension Skills test.***

The PCRE (Regular Expression) ToolKit for AutoIT - (Updated Oct 20, 2011 ver:3.0.1.13) - Please update your current version before filing any bug reports. The installer now includes both 32 and 64 bit versions. No change in version number.

Visit my Blog .. currently not active but it will soon be resplendent with news and views. Also please remove any links you may have to my website. it is soon to be closed and replaced with something else.

"Old age and treachery will always overcome youth and skill!"

Link to comment
Share on other sites

Try this

Func getLyrics($a="",$s="")
$x = StringReplace($a, " ", "") 
$y = StringReplace($s, " ", "")
$lyricURL = "http://www.azlyrics.com/lyrics/" & $x & "/" & $y & ".html"
$String = BinaryToString(InetRead($lyricURL, 1))
$lyricData = _StringBetween2($String,"<!-- start of lyrics -->","<!-- end of lyrics -->")
$String = StringReplace($lyricData, '<br>', @cr)
; or second variant: $String = StringReplace($lyricData, '<br>', @lf)
$String= StringReplace($String, '<i>', "")
$String= StringReplace($String, '</i>', "")
if StringLen($String) == 0 Then $String = @crlf & "Lyrics not found."
    Return ($String)
EndFunc

Thanxx... It works! thanks to all of you for helping me out.... :huh2:

Now I can start working on the interface ;)

Edited by personant
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...