Here it is: the mIRC Lyrics Finder.
You can open it by typing /lyrics or right mouse click -> Lyrics.
It currently searches two site: http://songteksten.net and http://alivelyrics.com. I'm planning on adding more later.
Features:
-Easy lyrics search
-100% Result if correct title and artist are supplied (and lyrics is on website)
-Small algorithm to make sure you always get the best lyrics match
-Toggling between auto select of the lyrics and manual
-Saving lyrics
-Loading lyrics
-Easy clipboard function
-Progress of the search is visible
-If the lyrics loaded isn't the correct one, you can try the next one (Next lyrics button)
Feedback and/or comments are appreciated :)
Added another website! Alivelyrics.com.
Update:
It will now search songteksten.net, and if it's not on that site it will check alivelyrics.com!
dialog lyrics {
title "Lyrics Finder by Dani l11"
size -1 -1 218 251
option dbu
text "Status:", 1, 3 240 21 10
edit "", 2, 8 11 198 172, multi return vsbar
text "Displaying:", 3, 9 2 28 8
text "None", 4, 38 2 151 8
button "Copy lyrics to clipboard", 5, 8 184 63 10
button "Save this lyrics", 6, 73 184 51 10
check "Automatically save found lyrics", 7, 128 185 86 9
button "Find!", 8, 165 198 38 11
edit "", 9, 48 210 111 10
box "Find lyrics", 10, 4 194 210 42
text "Song name:", 11, 8 211 37 8
text "Artist/Band:", 12, 8 221 36 8
edit "", 13, 48 221 111 10
text "", 14, 26 240 184 10
button "Load Lyrics", 15, 165 222 38 11, multi
button "Next lyrics", 16, 165 210 38 11
list 17, 193 -3 17 15, hide size
check "Automatically select lyrics from webpage", 23, 8 201 115 8
list 18, 195 -1 17 15, hide size
list 19, 197 1 17 15, hide size
list 20, 199 3 17 15, hide size
list 21, 201 5 17 15, hide size
list 22, 201 5 17 15, hide size
}
on *:dialog:lyrics:close:0:{
if ($dialog(selsong)) dialog -x selslong selsong
sockclose lyric*
}
on *:dialog:lyrics:sclick:15:{
var %p = $sfile(*.txt,Select Lyrics,Select)
if (lyrics !isin %p) did -ra lyrics 14 Please select a valid lyrics!
else {
var %x = $remove(%p,$mircdir)
did -ra lyrics 4 $remove(%p,$mircdir,lyrics\,.txt)
did -r lyrics 14
did -r lyrics 2
var %y = 1
while ($lines(%p) >= %y) {
did -a lyrics 2 $read(%p,%y) $+ $crlf
inc %y
}
}
}
on *:dialog:lyrics:init:0:{
if (!$finddir($mircdir,lyrics,0)) { mkdir lyrics
writeini lyrics\settings.ini settings autoselect ON
writeini lyrics\settings.ini settings autosave OFF
echo -a Thanks for using Lyrics Finder by Dani l11. }
did -f lyrics 9
if ($readini(lyrics\settings.ini,settings,autosave)) did -c lyrics 7
if ($readini(lyrics\settings.ini,settings,autoselect)) did -c lyrics 23
else did -b lyrics 16
}
alias lyrics { dialog -md lyrics lyrics }
menu * {
-
Lyrics:{ dialog -md lyrics lyrics }
-
}
on *:dialog:lyrics:sclick:6:{
if (!$did(lyrics,2)) || (!$did(4)) || ($did(4) == none) halt
write -c $qt(lyrics\ $+ $did(4) $+ .txt)
var %x = 1
while (%x <= $did(lyrics,2).lines) {
write -n $qt(lyrics\ $+ $did(4) $+ .txt) $did(lyrics,2,%x) $+ $crlf
inc %x
}
run $qt(lyrics\ $+ $did(4) $+ .txt)
}
on *:dialog:lyrics:sclick:7:{
if ($did(7).state) writeini lyrics\settings.ini settings autosave ON
else remini lyrics\settings.ini settings autosave off
}
on *:dialog:lyrics:sclick:23:{
did -b lyrics 16
if ($did(23).state) { writeini lyrics\settings.ini settings autoselect ON
did -e lyrics 16 }
else remini lyrics\settings.ini settings autoselect off
}
on *:dialog:lyrics:sclick:5:{
var %x = 1,%z
while (%x <= $did(lyrics,2).lines) {
var %z = %z $+ $did(2,%x) $+ $crlf
inc %x
}
clipboard %z
}
on *:dialog:lyrics:sclick:16:{
if ($sock(lyrics)) halt
if (%lysn != $did(9)) || (%lysa != $did(13)) { did -ra $dname 14 Error. Use the 'Find Lyrics' button to search. | halt }
unset %lylist
did -ra lyrics 14 Connecting to Songteksten.net
sockopen lyricssongteksten songteksten.net 80
}
on *:dialog:lyrics:sclick:8:{
if ($sock(lyrics*)) sockclose lyrics*
if (!$did(9)) { did -ra $dname 14 Error. Please fill in a songname. | halt }
if ($len($did(9)) <= 2) { did -ra $dname 14 Error. Songname has to be atleast 3 characters. | halt }
set %lysn $did(9)
set %lysa $did(13)
unset %lylist
unset %npl
set %songsite 1
if ($dialog(selsong)) dialog -x selsong selsong
did -r lyrics 17-22
unset %cp
did -ra lyrics 14 Connecting to Songteksten.net
sockopen lyricssongteksten songteksten.net 80
}
on *:sockopen:lyricsalivelyrics:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
unset %lylist
Sockwrite -nt $sockname GET $iif(%npl,%npl,/cgi-bin/aseek.cgi?q= $+ $replace(%lysn,$chr(32),+)) HTTP/1.1
sockwrite -nt $sockname Host: search.alivelyrics.com
sockwrite -nt $sockname $crlf
unset %npl
}
on *:sockread:lyricsalivelyrics:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
if ($sockerr) { did -ra lyrics 14 Sockerror: $sockerr | sockclose $sockname | halt }
var %s
sockread %s
if (<p>Try to compose less restrictive search query or check spelling. == %s) { did -ra lyrics 14 Lyrics not found | sockclose $sockname | halt }
if (<a href="http://www.alivelyrics.com/* iswm %s) {
if (*http://www.alivelyrics.com/*/*/*.html* !iswm %s) { did -ra lyrics 14 Alivelyrics.com - Lyrics didn't match format | halt }
var %ar = $gettok($remove(%s,http://),3,47)
var %sn = $remove($gettok($gettok(%s,2,34),5,47),.html)
var %sli = $gettok(%s,2,34)
if ($did(lyrics,23).state) {
if (%lysa) {
if (%ar isin $remove(%lysa,$chr(32))) || ($remove(%lysa,$chr(32)) isin %ar) {
if ($remove(%lysn,$chr(32)) == %sn) did -a lyrics 17 %sli
if ($remove(%lysn,$chr(32)) isin %sn) did -a lyrics 18 %sli
}
}
if (!%lysa) {
if ($remove(%lysn,$chr(32)) == %sn) did -a lyrics 17 %sli
elseif ($remove(%lysn,$chr(32)) isin %sn) did -a lyrics 18 %sli
}
if ($did(lyrics,17,1)) goto lycfound
}
else {
did -a lyrics 20 $remove($htm(%s),lyrics)
did -a lyrics 21 %sli
}
did -ra lyrics 14 Alivelyrics.com - Possible lyrics found. Total possible lyrics found: $calc($did(lyrics,17).lines + $did(lyrics,18).lines + $did(lyrics,19).lines) $+ .
}
if ($htm(%s) == next || %s == </TR></TABLE> || </div> <!-- end of right --> == %s) && (%lylist) {
if ($htm(%s) == next) var %np = $remove($gettok(%s,4,34),amp;)
did -ra lyrics 14 Alivelyrics.com - End of lyrics list. Selecting lyrics.
var %x = 19,%z
while (%x >= 17) {
if ($did(lyrics,%x).lines) var %z = $calc(%z + $v1)
dec %x
}
sockclose $sockname
if ($did(lyrics,23).state) || (%z == 1) {
:lycfound
if ($sock($sockname)) sockclose $sockname
var %x = 19
while (%x >= 17) {
if ($did(lyrics,%x,1)) { var %bl = $v1 | did -d lyrics %x 1 }
dec %x
}
if (!%bl) { did -ra lyrics 14 Alivelyrics.com - No lyrics found. Moving to next $iif(!%np,lyricssite,page of Alivelyrics.com) $+ .
if (%np) { set %npl $remove(%np,http://search.alivelyrics.com)
unset %lylist
sockopen lyricsalivelyrics search.alivelyrics.com 80
}
else {
did -ra lyrics 14 Lyrics not found.
}
}
else {
did -ra lyrics 14 Lyrics found. Opening lyrics page.
sockopen lyricsalivelyrics2. $+ %bl www.alivelyrics.com 80
}
}
else {
if (%np) set %npl %np
dialog -mn selsong selsong
}
halt
}
if (<td><b>1.</b></td> == %s || </TR></TABLE> == %s) { set %Lylist alivelyrics }
did -ra lyrics 14 Alivelyrics.com - Loading page.
}
on *:sockopen:lyricsalivelyrics2.*:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
Sockwrite -nt $sockname GET $gettok($remove($sockname,http://www.alivelyrics.com),2-,46) HTTP/1.1
sockwrite -nt $sockname Host: www.alivelyrics.com
sockwrite -nt $sockname $crlf
}
on *:sockread:lyricsalivelyrics2.*:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
var %s
sockread %s
if ($did(lyrics,14) == Alivelyrics.com - Lyrics found. Filtering lyrics.) && ($remove(%s,$chr(32),-,_,',`,$chr(44),.,!,?,#) isalpha) did -ra lyrics 14 Alivelyrics.com - Lyrics found. Writing lyrics.
if (Alivelyrics.com - Lyrics found. Writing lyrics. == $did(lyrics,14)) {
if (</pre> == %s) { sockclose $sockname | did -r lyrics 14 | halt }
did -a lyrics 2 $rt($remove(%s,<br />,<div id="social">)) $crlf
;if (%s == $null) did -a lyrics 2 $crlf
if ($did(lyrics,7).state) {
write -n $qt(lyrics\ $+ $did(lyrics,4) $+ .txt) $rt($remove(%s,<br />,<div id="social">)) $+ $crlf
;if (%s == $null) write -n $qt(lyrics\ $+ $did(lyrics,4) $+ .txt) $crlf
}
}
if (*<h1>*</h1>* iswm %s) {
did -ra lyrics 14 Alivelyrics.com - Lyrics page loaded. Writing artist and songname.
var %ds = $htm(%s)
var %s
sockread %s
var %s = $remove(%s,* )
did -ra lyrics 4 $remove(%ds,lyrics) - $iif($gettok($htm(%s),2,46),$v1,$htm(%s))
}
if (<pre class="lyrics"> == %s) {
did -ra lyrics 14 Alivelyrics.com - Lyrics found. Filtering lyrics.
did -r lyrics 2
if ($did(lyrics,7).state) write -c $qt(lyrics\ $+ $htm(%s) $+ .txt)
}
}
on *:sockopen:lyricssongteksten:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
Sockwrite -nt $sockname GET $iif(%npl,%npl,/search/results.html?q= $+ $replace(%lysn,$chr(32),+) $+ &type=title) HTTP/1.1
sockwrite -nt $sockname Host: songteksten.net
sockwrite -nt $sockname $crlf
unset %npl
}
on *:sockread:lyricssongteksten:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
if ($sockerr) { did -ra lyrics 14 Sockerror: $sockerr | sockclose $sockname | halt }
var %s
sockread %s
if (%Lylist) {
did -ra lyrics 14 Songteksten.net - List of lyrics on page found.
if (http://songteksten.net/lyric/ isin %s) {
var %sn = $htm(%s)
var %sli = $gettok($gettok(%s,2,62),2,34)
var %x = 1
while ($did(lyrics,22,%x)) {
if (%sli == $did(lyrics,22,%x)) halt
inc %x
}
var %s
sockread %s
if ($did(lyrics,23).state) {
if (%lysa) {
if ($htm(%s) isin %lysa) || (%lysa isin $htm(%s)) {
if (%lysn == %sn) did -a lyrics 17 %sli
if (%lysn isin %sn) did -a lyrics 18 %sli
did -a lyrics 19 %sli
}
}
if (!%lysa) {
if (%lysn == %sn) did -a lyrics 17 %sli
else did -a lyrics 18 %sli
}
if ($did(lyrics,17,1)) goto lycfound
}
else {
did -a lyrics 20 $htm(%s) - %sn
did -a lyrics 21 %sli
}
did -ra lyrics 14 Songteksten.net - Possible lyrics found. Total possible lyrics found: $calc($did(lyrics,17).lines + $did(lyrics,18).lines + $did(lyrics,19).lines) $+ .
}
}
if (<!-- total view tracking --> == %s) { sockclose $sockname | nextsite | halt }
if (*<strong>*</strong>* iswm %s || </p><table border="0" width="100%"> == %s) && (%lylist) {
var %s
sockread %s
if ($htm(%s) isnum) var %np = $remove($remove($gettok($gettok(%s,1,62),2,34),http://songteksten.net),amp;)
did -ra lyrics 14 Songteksten.net - End of lyrics list. Selecting lyrics.
var %x = 19,%z
while (%x >= 17) {
if ($did(lyrics,%x).lines) var %z = $calc(%z + $v1)
dec %x
}
sockclose $sockname
if ($did(lyrics,23).state) || (%z == 1) {
:lycfound
if ($sock($sockname)) sockclose $sockname
var %x = 19
while (%x >= 17) {
if ($did(lyrics,%x,1)) { var %bl = $v1 | did -d lyrics %x 1 }
dec %x
}
if (!%bl) { did -ra lyrics 14 Songteksten.net - No lyrics found. Moving to $iif(!%np,Alivelyrics.com,next page of Songteksten.net) $+ .
if (%np) { set %npl %np
unset %lylist
sockopen lyricssongteksten songteksten.net 80
}
else {
nextsite
}
}
else {
did -ra lyrics 14 Lyrics found. Opening lyrics page.
sockopen lyricssongteksten2. $+ %bl songteksten.net 80
}
}
else {
if (%np) set %npl %np
dialog -mn selsong selsong
}
halt
}
if (<th>Titel</th> isin %s) {
var %s
sockread %s
if (<th>Artiest</th> isin %s) {
did -ra lyrics 14 Songteksten.net - List of lyrics on page found.
set %Lylist found
}
}
did -ra lyrics 14 Songteksten.net - Loading site.
}
on *:sockopen:lyricssongteksten2.*:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
Sockwrite -nt $sockname GET $remove($gettok($sockname,2-,46),http://songteksten.net) HTTP/1.1
sockwrite -nt $sockname Host: songteksten.net
sockwrite -nt $sockname $crlf
did -a lyrics 22 $gettok($sockname,2-,46)
}
on *:sockread:lyricssongteksten2.*:{
if (!$dialog(lyrics)) { sockclose $sockname | halt }
var %s
sockread %s
if ($did(lyrics,14) == Songteksten.net - Lyrics found. Writing lyrics.) {
if (<div class="button"> isin %s) { did -r lyrics 14 | sockclose $sockname | halt }
did -a lyrics 2 $rt($remove(%s,<br />,<div id="social">)) $crlf
if ($did(lyrics,7).state) write -n $qt(lyrics\ $+ $did(lyrics,4) $+ .txt) $rt($remove(%s,<br />,<div id="social">)) $+ $crlf
}
if (<div id="body_right"><h1> isin %s) {
did -r lyrics 2
did -ra lyrics 14 Songteksten.net - Lyrics found. Writing lyrics.
did -ra lyrics 4 $htm(%s)
if ($did(lyrics,7).state) write -c $qt(lyrics\ $+ $htm(%s) $+ .txt)
}
}
alias rt return $replace($1-,é,é,’,',$cr,$crlf)
alias htm return $remove($regsubex($regsubex($1-,/(^[^<]+|<.*>|<[^>]+$|&[^#].*;)/gU,),/&#(.*);/gU,$chr(\1)),$chr(9))
dialog Selsong {
title "Song select"
size -1 -1 162 33
option dbu
combo 1, 2 4 158 157, size hsbar drop
button "Select this song", 2, 8 17 73 12
button "Song not in here", 3, 84 17 73 12, multi
}
on *:dialog:selsong:init:0:{
var %x = 1
while (%x <= $did(lyrics,20).lines) {
did -a $dname 1 $did(lyrics,20,%x)
inc %x
}
did -c $dname 1 1
.timer 1 0.1 dialog -o $dname $dname
}
on *:dialog:Selsong:sclick:2:{
dialog -o lyrics lyrics
did -ra lyrics 14 Lyrics selected. Opening lyrics page.
if (%songsite == 1) sockopen lyricssongteksten2. $+ $did(lyrics,21,$did(1).sel) songteksten.net 80
if (%songsite == 2) sockopen lyricsalivelyrics2. $+ $did(lyrics,21,$did(1).sel) alivelyrics.com 80
dialog -x $dname $dname
}
on *:dialog:selsong:close:*:{
dialog -o lyrics lyrics
did -ra lyrics 14 Lyrics not found. Going to next $iif(%npl,page,website) $+ .
unset %lylist
did -r lyrics 17-21
var %z = $gettok(Songteksten.net-Alivelyrics.com,%songsite,45)
did -ra lyrics 14 Connecting to %z
if (%npl) thissite
else nextsite
}
on *:dialog:selsong:sclick:3:{
dialog -o lyrics lyrics
did -ra lyrics 14 Lyrics not found. Going to next $iif(%npl,page,website) $+ .
unset %lylist
did -r lyrics 17-21
var %z = $gettok(Songteksten.net-Alivelyrics.com,%songsite,45)
did -ra lyrics 14 Connecting to %z
if (%npl) thissite
else nextsite
dialog -x $dname $dname
}
alias thissite {
var %z = Songteksten.net-Alivelyrics.com
did -ra lyrics 14 Connecting to $gettok(%z,%songsite,45) $+ .
var %s = $remove($gettok(%z,%songsite,45),.com,.net)
if (%songsite == 2) sockopen lyrics $+ %s search. $+ $gettok(%z,%songsite,45) 80
else sockopen lyrics $+ %s $gettok(%z,%songsite,45) 80
}
alias nextsite {
inc %songsite
var %z = Songteksten.net-Alivelyrics.com
did -ra lyrics 14 Songteksten.net - No lyrics found. Searching Alivelyrics.com.
var %s = $remove($gettok(%z,%songsite,45),.com,.net)
if (%songsite == 2) sockopen lyrics $+ %s search. $+ $gettok(%z,%songsite,45) 80
else sockopen lyrics $+ %s $gettok(%z,%songsite,45) 80
}