Hi Romain,
wow, that was one quick response.
Romain wrote:
> Well, I should prepare a new package..
That would be great.
> If you have time to propose a patch, I would be very happy to review and
> upload it..
Please find attached a proposal for a patch. I'm not a pro at this, so
feedback will be much appreciated if anything went wrong. I'd be happy
to do some testing of a fixed package -- just let me know what you need
me to do.
Thanks,
Daniel
diff -rc lastfmproxy-1.3b-origdeb/lastfm.py lastfmproxy-1.3b/lastfm.py
*** lastfmproxy-1.3b-origdeb/lastfm.py 2007-12-13 19:07:04.000000000 +0100
--- lastfmproxy-1.3b/lastfm.py 2010-12-19 18:04:42.494144984 +0100
***************
*** 8,15 ****
class lastfm:
def __init__(self):
! self.version = "1.3.1.1"
! self.platform = "linux"
self.host = "ws.audioscrobbler.com"
self.port = 80
self.info = None
--- 8,19 ----
class lastfm:
def __init__(self):
! self.version = "1.5.4.24567"
! self.platform = "win32"
! self.platformversion = "Windows%20XP"
! self.player = "LastFMProxy"
! # self.api_key = "9d1bbaef3b443eb97973d44181d04e4b"
! self.api_key = "d50ed5584be64a1564a5d1a12e3fef7f"
self.host = "ws.audioscrobbler.com"
self.port = 80
self.info = None
***************
*** 35,41 ****
def connect(self, username, password):
s = httpclient.httpclient(self.host, self.port)
! s.req("/radio/handshake.php?version=" + self.version + "&platform=" + self.platform + "&username=" + username + "&passwordmd5=" + password + "&language=en&player=lastfmproxy")
self.info = self.parselines(s.response)
--- 39,45 ----
def connect(self, username, password):
s = httpclient.httpclient(self.host, self.port)
! s.req("/radio/handshake.php?version=" + self.version + "&platform=" + self.platform + "&username=" + username + "&passwordmd5=" + password + "&language=en&api_key=" + self.api_key + "&player=" + self.player)
self.info = self.parselines(s.response)
***************
*** 52,57 ****
--- 56,62 ----
# debug
if self.debug:
+ sys.stderr.write("Saving playlist...\n")
if len(self.playlist.data.tracks):
f = open("playlist.xspf", "w")
f.write(s.response)
diff -rc lastfmproxy-1.3b-origdeb/main.py lastfmproxy-1.3b/main.py
*** lastfmproxy-1.3b-origdeb/main.py 2007-12-20 09:31:33.000000000 +0100
--- lastfmproxy-1.3b/main.py 2010-12-19 18:04:42.494144984 +0100
***************
*** 29,34 ****
--- 29,35 ----
self.basedir = "."
self.quit = False
self.skip = 0
+ self.redirect = 0
self.stop = False
self.version = "1.3b"
self.streaming = 0
***************
*** 293,302 ****
cont = u"np_streaming = " + str(self.streaming) + ";\n"
! if self.streaming:
!
try:
title = self.lastfm.playlist.data.title
except:
title = "Wait..."
--- 294,304 ----
cont = u"np_streaming = " + str(self.streaming) + ";\n"
! if self.streaming == 1:
!
try:
title = self.lastfm.playlist.data.title
+ title = "hello";
except:
title = "Wait..."
***************
*** 383,389 ****
cont = cont + "<link rel=\"icon\" href=\"/data/favicon.ico\" />\n"
cont = cont + "<link rel=\"icon\" type=\"image/png\" href=\"/data/nice_favicon.png\" />\n"
cont = cont + "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"data/" + config.theme + ".css\" />\n"
! cont = cont + "<script>\n"
cont = cont + "var host = 'http://" + http["Host"] + "';\n"
f = open(os.path.join(self.basedir, "data", "main.js"), "r")
cont = cont + f.read()
--- 385,391 ----
cont = cont + "<link rel=\"icon\" href=\"/data/favicon.ico\" />\n"
cont = cont + "<link rel=\"icon\" type=\"image/png\" href=\"/data/nice_favicon.png\" />\n"
cont = cont + "<link rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"data/" + config.theme + ".css\" />\n"
! cont = cont + "<script type=\"text/javascript\">\n"
cont = cont + "var host = 'http://" + http["Host"] + "';\n"
f = open(os.path.join(self.basedir, "data", "main.js"), "r")
cont = cont + f.read()
***************
*** 435,441 ****
cont = cont + gui
cont = cont + "</form>"
! cont = cont + "<script>\ntick();\n</script>\n"
cont = cont + "</body></html>\n"
try:
--- 437,443 ----
cont = cont + gui
cont = cont + "</form>"
! cont = cont + "<script type=\"text/javascript\">\ntick();\n</script>\n"
cont = cont + "</body></html>\n"
try:
***************
*** 572,623 ****
self.skip = 0
track = playlist.data.tracks[playlist.pos]
-
url = track["location"]
- url = "%s" % url
- url = string.split(url, "/", 3)
! host = string.split(url[2], ":")
! if len(host) != 2:
! host = [ host[0], 80 ]
! else:
! host[1] = int(host[1])
! if self.lastfm.debug:
! sys.stderr.write("GET http://" + host[0] + ":" + str(host[1]) + "/" + url[3] + " HTTP/1.0\r\n")
! # Connect to actual server and request stream
! streamsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
! if config.useproxy:
! streamsock.connect((config.proxyhost, config.proxyport))
! streamsock.sendall("GET http://" + host[0] + ":" + str(host[1]) + "/" + url[3] + " HTTP/1.0\r\n")
! else:
! streamsock.connect((host[0], host[1]))
! streamsock.sendall("GET /" + url[3] + " HTTP/1.0\r\n")
! streamsock.sendall("Host: " + host[0] + "\r\n")
! streamsock.sendall("\r\n")
!
! # Read HTTP headers
! while True:
! line = ""
while True:
! c = streamsock.recv(1)
! line = line + c
! if c == '\n':
break
! if self.lastfm.debug:
! sys.stderr.write("<<< " + line)
! # Handle "403 Invalid ticket" more gracefully
! if line[:6] == "HTTP/1":
! tmp = string.split(line, " ", 3)
! if tmp[1] != "200":
! self.skip = 1
break
! if line == "\r\n":
! break
if self.skip:
continue
--- 574,646 ----
self.skip = 0
track = playlist.data.tracks[playlist.pos]
url = track["location"]
! self.redirect=1
! while self.redirect == 1:
! url = "%s" % url
! url = string.split(url, "/", 3)
! host = string.split(url[2], ":")
! if len(host) != 2:
! host = [ host[0], 80 ]
! else:
! host[1] = int(host[1])
!
! if self.lastfm.debug:
! sys.stderr.write("GET http://" + host[0] + ":" + str(host[1]) + "/" + url[3] + " HTTP/1.0\r\n")
!
! # Connect to actual server and request stream
! streamsock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
! if config.useproxy:
! streamsock.connect((config.proxyhost, config.proxyport))
! streamsock.sendall("GET http://" + host[0] + ":" + str(host[1]) + "/" + url[3] + " HTTP/1.0\r\n")
! else:
! streamsock.connect((host[0], host[1]))
! streamsock.sendall("GET /" + url[3] + " HTTP/1.0\r\n")
! streamsock.sendall("Host: " + host[0] + "\r\n")
! streamsock.sendall("\r\n")
!
! # Read HTTP headers
while True:
! line = ""
! while True:
! c = streamsock.recv(1)
! line = line + c
! if c == '\n':
! break
!
! if self.lastfm.debug:
! sys.stderr.write("<<< " + line)
!
! if line[:9] == "Location:":
! # get redirected url
! tmp = string.split(line, " ")
! url = tmp[1][0:-2]
! streamsock.close()
! self.redirect = 1
break
! # Handle "403 Invalid ticket" more gracefully
! if line[:12] == "HTTP/1.1 403":
! tmp = string.split(line, " ", 3)
! if tmp[1] != "200":
! self.skip = 1
! self.redirect = 0
! break
! # Escape on "200 OK"
! if line[:12] == "HTTP/1.1 200":
! self.skip = 0
! self.redirect = 0
break
! if line == "\r\n":
! self.redirect = 0
! break
!
!
if self.skip:
continue