Hallo,
ich habe mir vorgenommen, eine UDF für die Last.FM -Nutzer zu schreiben, denn leider gibt es noch keine UDF dazu und leider ist die Beschreibung komplett in Englisch und es könnte ja vorkommen bzw wird, das ich viele Sachen nicht ganz verstehen werde. Deswegen dachte ich, dass man sollch eine UDF zusammen schreiben könnte . Wer Lust hat, kann ja hier ab und zu mal mithelfen.
Also hier erstmal die wichtigsten Links:
- http://www.lastfm.de/api/desktopauth ;Das sind die Erklärungen für Desktopanwendungen
- http://www.lastfm.de/api ;Hier sind alle Funktionen aufgelistet
Ich hab schonmal etwas angefangen:
Edit: Etwas erweitert:
Spoiler anzeigen
#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]AutoIt Version: 3.3.0.0
Author: myName
Script Function:
Template AutoIt script.
#ce ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]; Script Start - Add your code below here
[/autoit] [autoit][/autoit] [autoit]#include <md5.au3>
#include <Inet.au3>
#include <String.au3>
#include <Array.au3>
Global Const $API_KEY = "aa72a3b1161d33d0eba36f986fa1fb43"
[/autoit] [autoit][/autoit] [autoit]MsgBox(0, "", _LastFMGetSource("http://ws.audioscrobbler.com/2.0/?method=user.getInfo&api_sig=" & _api_signature() & "&sk=" & _auth_getSession() & "&api_key=" & $API_KEY))
[/autoit] [autoit][/autoit] [autoit]Func _request_authorization()
Local $GetToken = _auth_getToken()
If @error Then Return SetError(1, 0, 0)
Return ShellExecute("http://www.last.fm/api/auth/?api_key=" & $API_KEY & "&token=" & $GetToken)
EndFunc ;==>_request_authorization
Func _auth_getToken()
Local $Source = _LastFMGetSource("http://ws.audioscrobbler.com/2.0/?method=auth.gettoken&api_key=" & $API_KEY)
If StringInStr($Source, "error") Then
$Source = _StringBetween($Source, ">", "<")
Return SetError(1, "", $Source[2])
EndIf
$Source = _StringBetween($Source, "<token>", "</token>")
Return $Source[0]
EndFunc ;==>_auth_getToken
Func _auth_getSession()
Return _md5("api_key" & $API_KEY & "methodauth.getSessiontoken" & _auth_getToken() & "mysecret")
EndFunc ;==>_auth_getSession
Func _auth_Token($Username = "Nutzername", $Passwort = "Passwort")
Return _md5($Username & _md5($Passwort))
EndFunc ;==>_auth_Token
Func _api_signature()
Return _md5("api_key" & $API_KEY & "methodauth.getSessiontoken" & _auth_getToken() & "mysecret")
EndFunc ;==>_api_signature
Func _LastFMGetSource($s_URL, $s_Header = '')
If StringLeft($s_URL, 7) <> 'http://' And StringLeft($s_URL, <> 'https://' Then $s_URL = 'http://' & $s_URL
Local $h_DLL = DllOpen("wininet.dll")
Local $ai_IRF, $s_Buf = ''
Local $ai_IO = DllCall($h_DLL, 'int', 'InternetOpen', 'str', "LastFM Plug-In", 'int', 0, 'int', 0, 'int', 0, 'int', 0)
If @error Or $ai_IO[0] = 0 Then
DllClose($h_DLL)
SetError(1)
Return ""
EndIf
Local $ai_IOU = DllCall($h_DLL, 'int', 'InternetOpenUrl', 'int', $ai_IO[0], 'str', $s_URL, 'str', $s_Header, 'int', StringLen($s_Header), 'int', 0x80000000, 'int', 0)
If @error Or $ai_IOU[0] = 0 Then
DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
DllClose($h_DLL)
SetError(1)
Return ""
EndIf
Local $v_Struct = DllStructCreate('udword')
DllStructSetData($v_Struct, 1, 1)
While DllStructGetData($v_Struct, 1) <> 0
$ai_IRF = DllCall($h_DLL, 'int', 'InternetReadFile', 'int', $ai_IOU[0], 'str', '', 'int', 256, 'ptr', DllStructGetPtr($v_Struct))
$s_Buf &= StringLeft($ai_IRF[2], DllStructGetData($v_Struct, 1))
WEnd
DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IOU[0])
DllCall($h_DLL, 'int', 'InternetCloseHandle', 'int', $ai_IO[0])
DllClose($h_DLL)
Return $s_Buf
EndFunc ;==>_LastFMGetSource
Ist noch nicht so weit. Hab auch gerade erst angefangen.