Miten saan lisättyä musiikkitiedostoon uuden tietosarakkeen ja tiedon?
Se on mahdollista, koska foobarin lyrics plugin osaa ladata sanoitukset kappaleisiin lyricswikistä ja laittaa sen musiikkitiedoston tietoihin %LYRICS% sarakkeeseen ja sen saa näkymään aina kun soitan kyseistä kappaletta..
Ajattelin tehdä ohjelman joka lataa ultimate-guitarista kitaratabit samalla tavalla, mutta %TABS% sarakkeeseen..
En löydä googlella koska en keksi oikeita hakusanoja.
EDIT: Visual Basic 6:sta kyse.
Moikka JussiR!
Et löydä VB6:lle vaikka osaisitkin oikeat hakusanat...sensijaan jos C++ .NET taittuu suhteellisen vaivattomasti niin imppaa ihmeessä foo_lyricsgrabber'n sorsat täältä ja kirjoittele moinen viritelmä valmiille pohjalle...toisaalta jos Managed C++ ei ole tuttua niin voit kääntää koko projektin VS 2008 Conversion Wizard'lla VB.NET-projektiksi ja rakennella em. sorsien pohjalta parit .NET UserControl'it...
ja voilá, mikään ei sen jälkeen estä käyttelemästä niitä VB6-viritelmissäsi...
Moikka taas JussiR!
tässä hieman apuja mikäli Windows SDK for Windows Server 2008 & .NET Framework 3.5 on asennettuna...mikäli on, niin tarkista että Windowsin ympäristömuuttujan Path-asetuksista löytyy seuraavat polut:
C:\Program Files\Microsoft SDKs\Windows\v6.1\Bin
C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
C:\WINDOWS\system32\URTTemp tarkista myös, että C:\WINDOWS\system32\URTTemp -hakemistosta löytyy tiedosto: RegTlib.exe...jos ei löydy niin imppaa täältä...
Imppaa sitten täältä .zip paketti ja pura tiedostot NeoGTGrabber.dll & NeoGTGrabber.Tlb C:\WINDOWS\System32 -hakemistoon
Avaa Windowsin komentokehote-ikkuna...kirjoita CD \windows\system32 & paina enter-näpykkää...copy/pasteta seuraava putki komentokehotteen perään:
gacutil /i NeoGTGrabber.dll | ngen install NeoGTGrabber.dll | regasm NeoGTGrabber.dll | regtlib NeoGTGrabber.Tlb ja painele taas enter-näpykkää...
(asetuksien purkuun: regtlib /u NeoGTGrabber.Tlb | regasm /unregister NeoGTGrabber.dll | ngen uninstall NeoGTGrabber.dll | gacutil /u NeoGTGrabber)
ja testaa sitten toimivuutta oheisella VB6-viritelmällä...
' Projektiin referenssi: ' Guitar Tab Grabber Library ' (C:\WINDOWS\System32\NeoGTGrabber.Tlb) 'Formille nappi & 3 textbox'ia (song, artist & txtTab) 'txtTab: MultiLine = True; ScrollBars = ScrollBarsVertical Private Sub Command1_Click() txtTab = "" If song = "" Then song.SetFocus: Exit Sub End If If artist = "" Then artist.SetFocus: Exit Sub End If Dim TabGrabber As New NeoGTGrabber.GTClass txtTab = TabGrabber.GetTab(song, artist) End Sub
Kiitoksia vastauksesta. Tällä tavalla voi muokata esim esittäjää tai genreä: http://www.vbcodesource.info/downloads/
Onko uuden tiedon lisääminen siis täysin eri juttu eikä liity noihin tietoihin mitenkään?
Moikka taas JussiR!
juuri nyt ei ole fiiliksiä tutustua ton linkin matskuun...mutta tässä pikku esimerkki Windows Media Player TabGrabber viritelmästä VBA-versiona...
VBA-Projektiin referenssi:
Microsoft WinHTTP Services, Version 5.1
(C:\WINDOWS\System32\winhttp.dll)
----------------------------------------
VBA-projektiin:
UserForm (UserForm1)
ClassModule (Class1)
----------------------------------------
Formille:
WindowsMediaPlayer (WindowsMediaPlayer1)
CommandButton (CommandButton1)
TextBox (TextBox1)
----------------------------------------
ThisWorkBook:
Private Sub Workbook_BeforeClose(Cancel As Boolean) Saved = True End Sub Private Sub Workbook_Open() Application.WindowState = xlMinimized If Not UserForm1.Visible Then UserForm1.Show End If End Sub
UserForm1:
Private strFile As String Private Sub CommandButton1_Click() If WindowsMediaPlayer1.Status <> "" Then WindowsMediaPlayer1.Close song = "" artist = "" TextBox1.Text = "" End If Dim filename As Variant filename = Application.GetOpenFilename( _ "Windows Media Audio (*.wma), *.wma") If filename = "False" Then Exit Sub End If If Dir(filename) = "" Then Exit Sub End If Open filename For Binary As 1# strFile = Space(LOF(1)) Get #1, , strFile: Close #1 strFile = FixStrFile(strFile) WindowsMediaPlayer1.URL = filename End Sub Private Function FixStrFile(ByVal fstr As String) As String Dim bstr(0) As String For i = 1 To LenB(fstr) Select Case Asc(Chr(AscB(MidB(strFile, i, 1)))) Case 64 Exit For Case 32, 34, 40 To 41, 44 To 46, _ 48 To 58, 65 To 90, 97 To 122 bstr(0) = _ bstr(0) + Chr(AscB(MidB(fstr, i, 1))) End Select Next i FixStrFile = bstr(0): Erase bstr End Function Private Sub UserForm_QueryClose( _ Cancel As Integer, CloseMode As Integer) If WindowsMediaPlayer1.Status <> "" Then WindowsMediaPlayer1.Close End If Application.Quit End Sub Private Sub WindowsMediaPlayer1_StatusChange() If InStr(WindowsMediaPlayer1.Status, "Toistetaan") > 0 Then Static cnt As Integer cnt = cnt + 1 If cnt < 2 Then Dim strStatus As String strStatus = WindowsMediaPlayer1.Status strStatus = Replace(strStatus, "Toistetaan ", "") If InStr(strStatus, ":") Then strStatus = Left(strStatus, _ InStr(strStatus, ":") - 1) End If strStatus = Trim(strStatus) Dim strArray() As String If InStr(strFile, strStaus) > 0 Then strArray() = Split(strFile, strStatus) strFile = strArray(UBound(strArray)) Erase strArray If InStr(strFile, ", composer") > 0 Then strArray = Split(strFile, ", composer") strFile = Trim(strArray(LBound(strArray))) Erase strArray End If End If artist = strFile song = strStatus song = Replace(song, "Toistetaan ", "") song = Replace(song, ":", "") song = Replace(song, "'", "") If InStr(song, "(") Then song = Left(song, InStr(song, "(") - 1) song = Trim(song) End If If InStr(song, """") Then song = Left(song, InStrRev(song, """")) song = Replace(song, """", "") song = Trim(song) End If Dim TabGrabber As New Class1 TextBox1.Text = TabGrabber.GetTab(song, artist) Else cnt = 0 End If End If End Sub
Class1:
Public Function GetTab(ByVal song As String, _ ByVal artist As String) As String Dim baseURL As String Dim the_Artist As String Dim the_Song As String Dim the_First_chr baseURL = "http://www.ultimate-guitar.com/tabs/" the_Song = LCase(Replace(song, " ", "_")) the_Artist = LCase(Replace(artist, " ", "_")) the_First_chr = Left(the_Artist, 1) Dim theUrl As String theUrl = baseURL & the_First_chr & _ "/" & the_Artist & "/" & the_Song & "_tab.htm" Dim xhttp As WinHttp.WinHttpRequest Set xhttp = New WinHttp.WinHttpRequest On Error Resume Next xhttp.Open "GET", theUrl, False xhttp.SetRequestHeader "USER_AGENT", _ "Mozilla/5.0 (Windows; U; Windows NT 5.1; " & _ "fi; rv:1.9.0.13) Gecko/2009073022 " & _ "Firefox/3.0.13 (.NET CLR 3.5.30729)" xhttp.Send xhttp.GetAllResponseHeaders Dim strResponse As String strResponse = xhttp.ResponseText Set xhttp = Nothing If InStr(strResponse, "Tabbed by:") > 0 Then Dim tab_beg As Long Dim tab_end As Long Dim tab_len As Long If InStr(strResponse, "<xmp>") > 0 Then tab_beg = InStr(strResponse, "<xmp>") + 5 End If If InStr(strResponse, "</xmp>") > tab_beg Then tab_end = InStr(strResponse, "</xmp>") End If tab_len = tab_end - tab_beg If Err <> 0 Then GoTo Handler Else GetTab = Mid(strResponse, tab_beg, tab_len) Exit Function End If End If Handler: Err.Clear On Error GoTo 0 GetTab = _ "No tab has been found for " & song & " / " & artist & "..." End Function
Kiitoksia kiitoksia.. Tuo on oikeastaan järkevämpi kuin mun versio joka käyttää msinet.ocx:ää.
Aihe on jo aika vanha, joten et voi enää vastata siihen.