Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem

[es] :: .NET :: .NET Desktop razvoj :: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem

[ Pregleda: 631 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

makisiki

Član broj: 232860
Poruke: 76



+14 Profil

icon VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem01.08.2022. u 05:16 - pre 20 meseci
... prvo mali uvod ...
Previse vremena provodim ispred monitora i treba mi jedan "TopMost" sat da ponekad bacim pogled i vidim da je vreme za gasenje kompjutera! :)
Sat sam napravio ali iz dosade sam dodao alarm, pa sam dodao radio, pa sam dodao tv, i ko zna sta cu jos sve da dodam ... :)

Koga zanima kako to trenutno izgleda ... https://www.mediafire.com/file...e4k61g75/DeskTopClock.zip/file
------------------------------------------------------------------------------------------------------------------------------

Imam par pitanja i problema koje ne mogu da resim pa ako neko hoce da pripomogne ...

Prvi problem je radio-IcyMetaData - na nekim stanicama dok traju reklame izbacuje neka bezveze slova, hoce da ukoci program, na nekim stanicama ime izvodjaca i pesme se promeni "posle pola sata" ... ima neki problem!
Kod sam postavio u tajmer i podesio na 10 sekundi. Da li je kod dobar i odakle ovo treba da se poziva i na koje vreme ?

Code:

 Private Sub IcyMetaData()
        Dim server As String = radioPlayer.URL
        Dim request As HttpWebRequest = Nothing
        Dim _response As HttpWebResponse = Nothing
        Dim metaInt As Integer = 0 ' blocksize of mp3 data
        Dim count As Integer = 0 ' byte counter
        Dim metadataLength As Integer = 0 ' length of metadata header
        Dim metadataHeader As String = "" ' previous metadata header, to compare with new header and find next song
        Dim buffer As Byte() = New Byte(511) {} ' receive buffer
        Dim socketStream As Stream = Nothing ' input stream on the web request
        Dim byteOut As Stream = Nothing ' output stream on the destination file
        Dim subst As String
        request = DirectCast(WebRequest.Create(server), HttpWebRequest) ' create web request
        request.Headers.Clear() ' clear old request header and build own header to receive ICY-metadata
        request.Headers.Add("Icy-MetaData", "1") 'request.Headers.Add("GET", serverPath + " HTTP/1.0");
        request.UserAgent = "WinampMPEG/5.09" ' needed to receive metadata informations
        Try ' execute request
            _response = DirectCast(request.GetResponse(), HttpWebResponse)
        Catch ex As Exception
            ' Form1.Label9.Text = "NOT AVAILABLE"
            Return
        End Try
        metaInt = Convert.ToInt32(_response.GetResponseHeader("icy-metaint")) ' read blocksize to find metadata header
        Try
            socketStream = _response.GetResponseStream() ' open stream on response
            While True ' rip stream in an endless loop
                Dim bufLen As Integer = socketStream.Read(buffer, 0, buffer.Length) ' read byteblock
                If bufLen < 0 Then
                    Return
                End If
                For i As Integer = 0 To bufLen - 1 ' if there is a header, the 'headerLength' would be set to a value != 0. Then we save the header to a string
                    If metadataLength <> 0 Then
                        metadataHeader += Convert.ToChar(buffer(i))
                        metadataLength -= 1
                        If metadataLength = 0 Then
                            Exit While
                        End If
                    Else
                        If System.Math.Max(System.Threading.Interlocked.Increment(count), count - 1) < metaInt Then ' write mp3 data to file or extract metadata headerlength
                            If byteOut IsNot Nothing Then ' write bytes to filestream
                                byteOut.Write(buffer, i, 1) ' as long as we don't have a songtitle, we don't open a new file and don't write any bytes
                                If count Mod 100 = 0 Then
                                    byteOut.Flush()
                                End If
                            End If
                        Else
                            metadataLength = Convert.ToInt32(buffer(i)) * 16 ' get headerlength from lengthbyte and multiply by 16 to get correct headerlength
                            count = 0
                        End If
                    End If
                Next
            End While
            Dim numberString As String = String.Empty
            Dim str2 As String = ""
            Dim numberString2 As String = String.Empty
            If metadataHeader.Contains("'") Then
                numberString = metadataHeader.IndexOf("'")
                numberString2 = metadataHeader.IndexOf(";")
                subst = metadataHeader.Substring(numberString + 1, numberString2 - numberString - 2)
                Label9.Text = subst
            Else
                '  Form1.Label9.Text = "NOT AVAILABLE"
            End If
        Catch ex As Exception
            ' Form1.Label9.Text = "NOT AVAILABLE"
        Finally
            If byteOut IsNot Nothing Then
                byteOut.Close()
            End If
            If socketStream IsNot Nothing Then
                socketStream.Close()
            End If
        End Try
        ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
        Label4.Text = " Bitrate: " + (_response.Headers("icy-br"))
        Label15.Text = " Genre: " + (_response.Headers("icy-genre"))
        Label16.Text = " Url: " + (_response.Headers("icy-url"))
        Label8.Text = (_response.Headers("icy-name"))
    End Sub


Ne znam kako se ponasa na drugim sistemima, ovo sam radio na Windows 11 64bit, Visual Studio 2022, Net Framework 4.8

p.s. Sve kodove sam pokupio sa interneta i preradio za moje potrebe.
 
Odgovor na temu

makisiki

Član broj: 232860
Poruke: 76



+14 Profil

icon Re: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem01.08.2022. u 05:26 - pre 20 meseci
Drugo pitanje bi bilo vezano za plejere ...

Za radio koristim radioPlayer As Object = CreateObject("WMPlayer.OCX")
Za tv je Vlc.DotNet.Forms - VlcControl

Namera mi je da aplikacija ima samo jedan .exe fajl i to je to.

Kako da izbegnem ovaj VLC (od 150 MB)

Moze li ovaj WMPlayer.OCX nekako na panel da prikaze sliku (neki TV stream) ?
 
Odgovor na temu

makisiki

Član broj: 232860
Poruke: 76



+14 Profil

icon Re: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem02.08.2022. u 03:33 - pre 20 meseci
Trece pitanje:

Kako da se sacuvaju podesavanja ...

sql - database - xml (fajl)
my.settings (fajl)
savesettings (registry)
config fajlovi raznoraznih ekstenzija

Postoji li neki nacin da se sacuva podesavanje a da nije neki od gore navedenih ?

... prosto da se direktno upise i sacuva tekst u textbox, listbox, combobox, bilo sta - a da se ne koristi nesto od ovog gore ?

Samo da ponovim jos jednom - ovo "komplikujem" cisto ono ako je moguce da mi aplikacija ima samo jedan fajl, i da preskocim upisivanje u registry - ako je nekako izvodljivo bice dobro - ako nije, opet dobro ... sta da se radi :)

 
Odgovor na temu

ravni

Član broj: 8894
Poruke: 373



+15 Profil

icon Re: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem02.08.2022. u 08:38 - pre 20 meseci
Moze u cloud npr AWS S3 ili Google Drive itd..
 
Odgovor na temu

makisiki

Član broj: 232860
Poruke: 76



+14 Profil

icon Re: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem10.08.2022. u 03:54 - pre 20 meseci
... program sada ima samo jedan fajl ali i dalje ne radi kako treba :)

trenutno je ovako ... https://www.mediafire.com/file...3iochuec/DeskTopClock.zip/file

- icy-metadata ... koci program
- ne znam kako da sacuvam podesavanja

- za tv mi je ovo trenutno jedino resenje ...
Code:

 Public Sub htmlPlayer()
        Dim html As String = "<html><head>"
        html += "<meta content='IE=Edge' http-equiv='X-UA-Compatible'/>"
        html += "<div style = 'position:absolute; left: 0;right: 0;top: 0;bottom: 0;background: black;'>"
        html += "<link href='https://unpkg.com/video.js/dist/video-js.css' rel='stylesheet'>"
        html += "<script src='https://unpkg.com/video.js/dist/video.js'></script>"
        html += "<script src='https://unpkg.com/videojs-contrib-hls/dist/videojs-contrib-hls.js'></script>"
        html += "<video id='my_video' class='video-js vjs-fluid vjs-default-skin' controls preload='auto' data-setup='{}' autoplay>"
        html += "<source src='" & ComboBox4.Text & "' type='application/x-mpegURL'>"
             WebBrowser1.DocumentText = html
    End Sub


... neke strimove moze neke ne (nije toliko bitno - sve su to neke free televizije koje se vrte po internetu)

Problem je:
Kako da stopiram plejer ? - (Button stop)
Kako da promenim stanicu ? - (comboBox.Text)
Kako da pojacam-smanjim ton ? - (TrackBar.Value)
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: VB.NET - DeskTopClock (alarm, radio, tv ...) IcyMetaData problem

[ Pregleda: 631 | Odgovora: 4 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.