Winamp aktuell gespieltes Lied ermitteln und senden

  • Tag

    Ich wollte ein Script schreiben welches das aktuell von Winamp gespielte Lied ermittelt und daraufhin via POST in der Chatbox meines Boards postet. Ich habe mir überlegt wie man das anstellen könnte, jedoch fällt mir keine gescheite Lösung ein. Hat jemand vllt. einen Lösungsansatz?

    Danke schonmal

    • Offizieller Beitrag

    Diese UDF : Winamp UDF

    mit folgenden Skript schreibt den Song in die Console.

    Spoiler anzeigen
    [autoit]

    #include <Array.au3>
    #include <Winamp_Library.au3>

    [/autoit] [autoit][/autoit] [autoit]

    _Winamp_Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func _Winamp_Example()
    ;This example will start winamp, check if there is some songs in the list, if not,
    ;will show "Select File" dialog to add some song(s),
    ;then will hit the Play button on some random song, set winamp's volume to 100%,
    ;and set song position to halth of the total song lenght.

    [/autoit] [autoit][/autoit] [autoit]

    _Winamp_Start(-1, 5)

    [/autoit] [autoit][/autoit] [autoit]

    If @error Then
    MsgBox(16, "Error", StringFormat("There was an error (%d) executing Winamp Player.", @error) & _
    @CRLF & @CRLF & "OK ===> EXIT")

    [/autoit] [autoit][/autoit] [autoit]

    Exit
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $aTracksList = _Winamp_GetPlayListToArray()
    _ArrayDisplay($aTracksList)
    ConsoleWrite('!' & $aTracksList[$aTracksList[0][0]][0] & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Local $iTotalSongs = UBound($aTracksList) - 1

    [/autoit] [autoit][/autoit] [autoit]

    If $iTotalSongs < 1 Then
    Local $sSelectedSong = FileOpenDialog("Select Song", "C:\", "Media files (*.mp3;*.wav;*.mdi)", 7)
    If @error Then Exit

    [/autoit] [autoit][/autoit] [autoit]

    If StringInStr($sSelectedSong, "|") Then
    Local $aSelectedSongs = StringSplit($sSelectedSong, "|")
    $iTotalSongs = 0

    [/autoit] [autoit][/autoit] [autoit]

    For $i = 2 To UBound($aSelectedSongs) - 1
    _Winamp_AddFile($aSelectedSongs[1] & "\" & $aSelectedSongs[$i])
    $iTotalSongs += 1
    Next
    Else
    _Winamp_AddFile($sSelectedSong)
    $iTotalSongs = 1
    EndIf
    EndIf

    [/autoit] [autoit][/autoit] [autoit]

    Local $iRandom_Song = Random(0, $iTotalSongs - 1, 1)

    [/autoit] [autoit][/autoit] [autoit]

    _Winamp_Play($iRandom_Song)
    _Winamp_SetVolume(255)

    [/autoit] [autoit][/autoit] [autoit]

    ;We wait untill the song starting to play...
    While _Winamp_GetCurrentTrackPlayStatus() <> 1
    Sleep(100)
    WEnd

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100)

    [/autoit] [autoit][/autoit] [autoit]

    Local $iTrack_Lenght = _Winamp_GetCurrentTrackOutputTime(1)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(100)

    [/autoit] [autoit][/autoit] [autoit]

    _Winamp_Seek(Ceiling($iTrack_Lenght / 2))
    EndFunc ;==>_Winamp_Example

    [/autoit]

    Mega

  • gidf.de( es gibt keine autoit funktion dafür= du musst was anderes benutzen, einen service oda so)


    Nun, dass es für das keine AutoIt Funktion gibt konnte ich mir schon denken :)

    Vielen Dank für die UDF, ich werde mir das mal ansehen.

  • Nun, habe mir das mit dem WinAmp angeschaut, scheint allerdings einfacher zu sein als gedacht. Jedenfalls wen's dann nachher darum geht dass an die Chatbox zu senden, gibt's ein Problem. Meine verwendetet Boardsoftware (vBulletin) hat aus Sicherheitsgründen ein Securitytoken welches bei jedem Laden ein neues ist. Ist es irgendwie möglich ein unsichtbare Sitzung bzw. die Seite aufzumachen und dessen Securitytoken verwendet werden kann? Wenn ich einfach den Securitytoken aus dem Sourcecode rauslese geht das nicht. Hier mal das kleine Script:

    [autoit]

    $Source = _InetGetSource("http://Domain.ch/forum/index.php")
    $Token = _StringBetween($Source, 'var SECURITYTOKEN = "', '";')
    _INetGetSourcePost("http://Domain.ch/forum/mgc_cb_evo_ajax.php", "securitytoken=" & $Token & "&do=ajax_chat&channel_id=0chat=" & $Songvariable & "&b=0&i=0&u=0&font=Arial&color=#2F4F4F&size=0")

    [/autoit]


    Würde gerne den Link zum Board selber posten damit ihr euch das anschauen könnt, da's aber ein geschlossenes Board ist, bringt das nicht viel.

  • Winamp läuft bei mir auf dem Rechner. Das Board befindet sich irgendwo im Internet. Das Script soll beim Rechner ausgeführt werden bei dem Winamp läuft, sonst kann er ja nicht rausfinden was gerade gehört wird.

  • Nun, ich könnte sonst schnell noch ein Forum auf meinem Funpic Server mit der verwendeten Chatsofware installieren. Ich geb dir Bescheid wen's bereit ist, sollte nicht allzu lange dauern.

  • Ok, ich hab jetzt schnell ein Forum aufgesetzt mit der gleichen Chatbox.
    Registrierung

    Edit: Es scheint als hätte Funpic genau zum richtigen Zeitpunkt Performance Probleme :(
    Edit2: Geht wieder!

    Einmal editiert, zuletzt von ahatius (13. August 2009 um 11:29)

  • Nun, das wäre machbar, allerdings ist das nicht allzu schön gelöst, und stört wenn man gerade was anderes macht, und bei jedem neuen Song sich das wiederholt.