LastFMProxy

LastFMProxy is a proxy server for the last.fm radio streams. It allows you to use your regular old audio player to listen to the last.fm streams. It does this by acting as a player itself, connecting to the server on your behalf, but instead of playing the stream, it simply relays it to whichever other application connecting to it.

It’s only tested under Linux, but it’s written in python, and should be pretty portable. If not, feel free to inform me. Maybe I can fix it.) (It’s been reported to work under various versions of Windows, Mac OS X and Pocket PC. Thanks to the feedbackers.)

[Dec 20th 2007] New version: LastFMProxy-1.3b. A few annoying bugs managed to sneak under the radar, so here’s a minor mainenance release. The bugs were (still) broken charset conversion and it was impossible to turn “Record to profile” off. Links below.

[Dec 19th 2007] New version: LastFMProxy-1.3! Here is the latest and greatest version of LastFMProxy so far. The previous version had more than a few quirks, and hopefully these have now been taken care of. Changes are mostly related to charset issues, but new features include “audioscrobbling” (submission of tracks to your Last.FM profile) and much faster metadata updates; they should be about “live” now. Download links below, and here is the latest ChangeLog.txt and README.txt.

[Nov 22nd 2007] New version! A change on the Last.FM server has rendered LastFMProxy and several other players dysfunctional. Staff has informed me that it’s only a temporary issue and that things will return to normal soon. I nevertheless seized the opportunity to update LastFMProxy to use the new XSFP playlist format, and to throw in some tiny tweaks. So if you don’t want to wait any longer, run to the download section below and pig out. ;-)

[Mar 23rd 2006] Note! Due to some changes on the server side, the proxy has been rather unstable lately. There is a simple fix outlined in this post from the Last.FM forum. Or you can wait for a new version to appear – which hopefully should be out real soon.

[Mar 30th 2007] Update! If you keep getting error messages about “funky metadata”, there seems to have been some changes on the server side of things. There are two “solutions” (work-arounds), and either of these should work;

  • Open the streaming link in your player directly; http://localhost:1881/lastfm.mp3 – when the music starts, the web interface should function normally again.
  • Download an updated version of lastfm.py and save it over your current one.

Expect that new version that addresses this issue properly soon(ish). :-)

For more info, here’s the README, and here’s the ChangeLog.

Also, feel free to drop by the newly created LastFMProxy group at last.fm.

Download

The latest version is: 1.3b – Released Dec 20th 2007
Get it: lastfmproxy-1.3b.tar.gz – or lastfmproxy-1.3b.zip

Support LastFMProxy

If you like LastFMProxy and would like to encourage further development, please feel free to make a donation with the button below.

This entry was posted in Uncategorized. Bookmark the permalink.

178 Responses to LastFMProxy

  1. LastRites says:

    Sweet

  2. Grepfruit says:

    Winamp “”integration”"

    Probably lot of people know this, but I just discovered it and decided to put it here.:)
    When you use LastFMProxy with Winamp. Put two tracks into winamp playlist: first will be “http://localhost:1881/skip” and the second
    “http://localhost:1881/lastfm.mp3″. When you want to skip a track, just say winamp to play last track… It will jump to the URL, invoke skip and then find out that it’s not valid stream and jump to the next track – the right stream.
    I personaly use ban and love the same way in connection with global hotkeys and jump to file.
    Easier than writing plugin and not much worse than what plugin would do.

  3. Salocin says:

    Re: Winamp “”integration”"

    I don’t think that will work because Winamp disconnects from the proxy, tries to open the /skip URL, jumps back to the proxy stream. You can do just the same if you simply press play again, which causes winamp to stop and then reopen the stream. While this all works with skip, I seriously doubt that it works with love and ban, because it appears that the proxy notices that you stopped listening to the stream and stops the stream it gets from the last.fm server. After it did this, you tell the proxy to love/ban something, but at that its not playing anything anymore, so nothing should happen.

  4. Shoot says:

    connecting to last.fm server doesn’t work anymore here. they had a short crash. after that nothing worked anymore :-(

  5. Shoot says:

    connecting to last.fm server doesn’t work anymore here. they had a short crash. after that nothing worked anymore :-(

  6. sebster says:

    1.1a5 works without problems!

  7. Cutter says:

    Hi,

    Thank you very much for this program. It allowed me to finally use the last.fm radio without needing the last.fm player wich doesn’t work under Windows 98. The only (minor) problem is that Firefox still doesn’t recognize the lastfm:// links. I followed the indication that I found in the readme, but Firefox (1.5) ignores them. Please, can you help me? Thanks in advance.

  8. Vincent says:

    Let Fx recognise lastfm:// links

    In Firefox about:config made a new string called network.protocol-handler.app.lastfm
    and then in the value added the path to the player (/usr/bin/lastfm-player in my case)

    Source: http://my.opera.com/mysurface/blog/show.dml/107013

  9. Salocin says:

    Re: Let Fx recognise lastfm:// links

    That’s how you get Firefox to work with the “official” last.fm player. If you want it to work with LastFMProxy, you have to use the path to your changestation.py as value for network.protocol-handler.app.lastfm

  10. Eric says:

    The unstable development version: 1.1alpha5

    What is so unstable about this version? I have been using it for three days now without a glitch. It does what it says it does for me. I am very happy with it. It works great with QCD/w98 as a dedicated recording station.

    I agree w/ Cutter that FireFox 1.5 /w98 fails to recognize the lastfm:// links. But who cares, I dont mind getting around by typing and/or copy/pasting the links.

    Suggestion:
    It would be great if LastFMProxy had a feature that detects the stream was dropped and attempted to pick up the stream again in intervals specified in the config.py file. I think that would make it quite robust.

  11. Marius says:

    Actually firefox will recognize the lastfm links…

    while firefox 1.5 seems to ignore them if you simply click on em. Try right-clicking on the and selecting “open in new tab” . Works for me every time.

  12. Gabe Kangas says:

    User responsible for the song?

    Is there any way to display what user is responsible for having that song played? It’s especialy nice in group and neighbour radio.

  13. Ben says:

    What a goregous piece of software

    Can’t believe how well this works. I have an old laptop hooked up to my stereo, and I can run the proxy on there, play it on the command line, and sit and watch the tracks and album art go by in a browser window by connecting to the proxy on another machine. Beautiful. Well done!

  14. ph says:

    This is the war!

    Great,thanks for this :)

  15. ddc says:

    Using with mythtv!

    Hey, this thing works very well. I’m using it (1.1a5) in combination with Mythstream to access Last.fm from Mythtv!

  16. Victor says:

    I don’t know how to do!!!

    Hello… I can’t make out how to get this to work. In the second step, you should open the “Now you can start the proxy. This is done by simply running “main.py”.
    It will then show the URL at which you must aim your player.” Hmm… I can’t find any URL in that code…

  17. MLL says:

    Timeouts ans solution

    Folks, if you get random timeouts, I suggest you read this.

    (Edit: fixed link. –vidar)

  18. wr says:

    Does it stream the album?

    Great tool! I couldn’t get the lastfm player working on linux, but by using this proxy, I am able to listen now on linux. One comment:

    It appears that the proxy streams the song title and artist, but not the album name. Vidar, can you verify this? Thanks!

  19. Alexander says:

    Thank you so much for creating Last.fm proxy! It works wonderfully well! This is really what I’ve been looking for all the time. Now I can use keybindings in Fvwm combined with wget for loving and banning, and keybindings combined with Xmms and the playlist-trick for skipping and playing. Absolutely fantastic! One of my favorite applications. Love you man. :-)

  20. Anonymous says:

    bye X

    finally; my last concern about a text-only environment is resolved :)
    combining this with links and mpg123 bring last.fm to your commandline,
    excellent stuff! thnx man.

    - b^4

  21. Kon says:

    Great work

    Thanks a lot. The original lastfmplayer segfaults like hell on my Gentoo box, and your scripts work like a charm. :)

  22. Thesa says:

    Hello !

    I wrote an amaroK script to play last.fm radios in amaroK, based on the lastFMProxy. You can find it here: http://kde-apps.org/content/show.php?content=39883

  23. Pingback: HanfBlog » Last.FM-Radio über amaroK hören - Tobias Haf bloggt

  24. kr1stof says:

    Thanks for this wonderful idea / app!
    It even runs on BeOS / ZETA.
    http://www.kristof-doebner.com/Last.fm.jpeg

    http://www.kristof-doebner.com/Last.fm1.jpeg

    I’ve always missed last.fm whilst using BeOS.
    You are a hero, you made my day!

    regards
    Kristof

  25. d.phens says:

    It often fails to refresh metadata both on the page and in the player stream. Nothing helps. Just restarting…

  26. dq says:

    when last.fm is unresponsive part of the proxy (which shows the web user interface) dies with exception and does not restart. however streaming and commands continue to work.

    restarting the proxy helps of course, but it would be nice if I didn’t have to :)

    Exception in thread Thread-1:
    Traceback (most recent call last):
    File “/usr/lib/python2.4/threading.py”, line 442, in __bootstrap
    self.run()
    File “/usr/lib/python2.4/threading.py”, line 422, in run
    self.__target(*self.__args, **self.__kwargs)
    File “./main.py”, line 60, in metadataloop
    self.checkmetadata()
    File “./main.py”, line 43, in checkmetadata
    if not self.lastfm.getmetadata():
    File “/dima/lastfmproxy-1.1/lastfm.py”, line 61, in getmetadata
    s.req(self.info["base_path"] + “/np.php?session=” + self.info["session"])
    File “/dima/lastfmproxy-1.1/httpclient.py”, line 41, in req
    s.connect((self.host, self.port))
    File “”, line 1, in connect
    error: (111, ‘Connection refused’)

  27. BYK says:

    A really nice program congratulations to the author! :) I had solved the “Firefox” problem with a reg file with a little help from google :) But I just could’nt the “now playing” feature work. It always displays the winamps default page and never changes. Whatever, here is the reg file’s content, but you have to change the paths for your system:

  28. BYK says:

    The reg file’s content didn’t showed up in the previous comment here it is:

    Windows Registry Editor Version 5.00

    [HKEY_CLASSES_ROOT\lastfm]
    @=”"URL:lastfm protocol”"
    “URL Protocol”=”"”"

    [HKEY_CLASSES_ROOT\lastfm\DefaultIcon]
    @=”C:\Program Files\lastfmproxy-1.1\data\favicon.ico”

    [HKEY_CLASSES_ROOT\lastfm\shell]

    [HKEY_CLASSES_ROOT\lastfm\shell\open]

    [HKEY_CLASSES_ROOT\lastfm\shell\open\command]
    @=”"C:\Program Files\Python\python.exe” “C:\program files\lastfmproxy-1.1\changestation.py” %1″

  29. d.phens says:

    WHAT SHOULD BE IMPROVED:

    -love, skip, ban buttons and they should be more separated.
    Not just text links all in 1 line.
    the best is vertical. it’s a known issue
    (i.e. airplane dashboards have their important controls
    pretty scattered-around).

    -forget stupid [space],[enter],[backspace] shortcuts!
    hell I’ve banned maybe 30 songs intending to set them as loved.
    Programmers know how close to enter the backspace key sometimes is :)

    -more frequent metadata refreshes.

    -perhaps a html gui for configuration.

    -some text imput fields to insert station URLs.

    -the proxy should die if last.fm connection hangs.
    the user now must do it now manually.

    -some kind of remote controls,
    at least a help file
    with URL links to ban, love, refresh, etc.
    at best 4 more streams to operate the proxy.
    if the client program attempts

    to open localhost:1881/ban

    the server should understand it and ban the song.
    same /love, /skip, /refresh

    (refresh is important when you start to hear Dj Shadow while the player says it’s
    Buena Vista (and you’re not on pot) – man would just feel angry)

  30. d.phens says:

    UPDATE
    (some things I wrote could be a bit harder to understand – sorry :) )

    -some text imput fields to insert station URLs.
    means: a text box on the http://localhost:1881/ page
    to imput the station url…

    -the proxy should die if last.fm connection hangs.
    of course not just die but restart.

  31. djsucre says:

    I don’t know but I can connect and listen streaming with lastfmproxy but http://hostname:1881 doesn’t show any info neither Ban or Love buttons.

  32. llassett says:

    thanks!!!!

    finally last.fm for linux that doesn’t break in fc5!!

    regards,

    hopefully will donate soon,

    lance

  33. christoph says:

    This is great, thanks!!!

  34. lillek says:

    Killer app!

    Finally i can use Rhythmbox for scrobbling and enjoy it’s notification area features, lacking in official Last.fm_Client_1.0.0b.

    Lookig forward for richer web interface (as Last.fm_Client_1.0.0b have over Last.fm-1.1.4)

    Also possibility to connect more than one player to the stream http://localhost:1881/lastfm.m3u would be great.

    Thanks

  35. Sean F says:

    I love this app.. I’ve had zero luck getting the official client to work, and last-exit doesn’t buffer enough for my crummy internet connection. Your proxy lets me use LastFM in the player of my choice without sacrificing any LastFM functionality. Thanks!

    A pyGTK wrapper to provide a system tray icon to restart/stop/open in browser would be most welcome :)

  36. Gabe Kangas says:

    Hey all. I really liked what lastfm proxy was doing to allow you to listen to last radio with your own player. I thought i’d try something with a richer interface. If you want to try it out it’s at http://pandorafm.real-ity.com and there’s a tab for the last.fm player. It sends you a m3u after clicking an icon to connect to your last stream while having a interface to type change stations.

  37. Ilya Voyager says:

    That’s a great project! Now I can listen Last.Fm stations with my favourite mpd music mplayer daemon. Thanks a lot, Vidar!

  38. maf654321 says:

    This is awsome! Works great on Panther and iTunes!

  39. Rolf G says:

    The program is fine!

    I run it on a debian-based NSLU2. There is only a little calculating power and no graphic on it, so I’d like to use mpd for hearing music. A link to localhost:1881 doesn’t work for playing. But streamripper will work and do his work ($streamripper localhost:1881/lastfm.mp3). But there is no possibility for using streamripper’s relay facilities: nothing will be sent.

    I think, there is only a small thing to do, but ????

  40. Balki says:

    It runs perfectly on my wl-500g deluxe wifi router with oleg’s firmware.

    Good work !

  41. Javier says:

    The website has an error in the Categories subsection.
    Also I am having problems with the proxy in Windows. To reproduce do:
    1. Use it.
    2. Don’t use it for a while.
    3. Try to use it again.

    Then the name of the song won’t be updated and the website of the proxy won’t work well.

    Finally, thank you very much for this program. It rocks!

  42. Niklas says:

    Hi, I’m using Winamp + Streamripper to download the tracks on last.fm. the lastfmproxy-website displays a picture to each track. is there any possibility to download the picture automatically?

    thanx, niklas

  43. Pingback: opencomponentry » Blog Archive » music = solved..

  44. Dr.More says:

    Exception in thread Thread-1:
    Traceback (most recent call last):
    File “C:\PYTHON25\lib\threading.py”, line 460, in __bootstrap
    self.run()
    File “C:\PYTHON25\lib\threading.py”, line 440, in run
    self.__target(*self.__args, **self.__kwargs)
    File “C:\Programmi\lastfmproxy-1.1\main.py”, line 60, in metadataloop
    self.checkmetadata()
    File “C:\Programmi\lastfmproxy-1.1\main.py”, line 43, in checkmetadata
    if not self.lastfm.getmetadata():
    File “C:\Programmi\lastfmproxy-1.1\lastfm.py”, line 61, in getmetadata
    s.req(self.info["base_path"] + “/np.php?session=” + self.info["session"])
    File “C:\Programmi\lastfmproxy-1.1\httpclient.py”, line 41, in req
    s.connect((self.host, self.port))
    File “”, line 1, in connect
    error: (10055, ‘No buffer space available’)

    What can I do?

  45. Pingback: Сохрание музыки с Last.fm в mp3 файлы

  46. Pingback: slacko.org » Mostrare le canzoni ascoltate su Last.fm su Live Messenger

  47. Michel says:

    Jusqu’à présent, j’utilisais lastfmproxy sans probléme.
    Depuis quelques jours j’obtiens :
    getmetdata: got funky metadata: (‘\xef\xbb\xbfstreaming’: ‘false’)

    que se passe-t-il ?
    Merci de vos conseils

  48. Michel says:

    In English, for more comprehension.

    Until now, I used lastfmproxy without problem.
    For a few days I have obtained:

    getmetdata: got funky metadata: (’\xef\xbb\xbfstreaming’: ‘false’)

    What can I do ?
    Thanks for your Help

  49. jasz says:

    Great job with this man!

  50. Pingback: LastFMProxy, un adaptateur universel pour Last.fm « Humble Ogre Bondissant

  51. Pingback: Transparent consoleprograms for linux i use. « Minimalistic Transparent X-Desktop

  52. Pingback: Radiomuffel at alltagskakophonie.de

  53. Sebastian says:

    It seems like something has been changed with Last.FM. You can’t get the names of the songs anymore…
    Thanks for helping!

  54. Vincenzo Vitale says:

    The problem seems now solved… LastFMProxy definetevely rocks!!!

  55. Pingback: oriolrius lifestream » vidar.gimp.org » LastFMProxy

  56. James says:

    With some changes, this proggy lets me access last.fm from work! sweet!!

  57. Tom says:

    skip stopped working :-( see this thread. i hope a fix comes soon…

    http://www.lastfm.de/group/LastFMProxy/forum/22620/_/299441

  58. Pingback: Ripping last fm | Everything about ripping streams...

  59. Pingback: “Ripping” da Last.fm « ::: BuzZ :::

  60. EnvergydER says:

    Very nice app!
    I am using it in windows+foobar without any problem so far.
    I can actually use last.fm website itself to change station.
    Just add URL http://localhost:1881/lastfm.mp3 to your player. Whenever you want to change your station, just stop the stream in your player, then login to last.fm, start playing with another station in your browser. Stop it when it starts, and go back to your player and start streaming again, and you will be listening to the new station.

  61. Pingback: Cogito ergo sum… » Blog Archiv » Last FM auf meinem Standalone MP3 Player

  62. fastfinge says:

    Hi, you might want to update this article to say that the last.fm proxy no longer works at all, because of the last.fm change to xspf playlists. See the discussion in the last.fm proxy group.

  63. last4fm says:

    Now, lastfmproxy1.1 works again. Good news.

  64. Eric says:

    Like your tool very much. Thanks.

  65. BlaBlaBla says:

    Hi,
    the new lastfmproxy doesn’t work with me:
    Traceback (most recent call last):
    File “./main.py”, line 13, in ?
    import lastfm
    File “/usr/share/lastfmproxy/lastfm.py”, line 5, in ?
    import hashlib
    ImportError: No module named hashlib

  66. Oli-P says:

    Hey, thank you so much for this marvellous pice of code!
    I just installes python 2.5.1 on my XP box and clicked on main.py (after filling my log-in data), and everything works just fine!
    Now my Noxon will never be quiet again :D

    Tonight I’ll try and install this on my NSLU2 or the fritz!box

  67. wyrd says:

    The ‘ImportError: No module named hashlib’ problem can be resolved by running the script with Python2.5.

    eg:
    python2.5 main.py

    At least this is how I’ve got it working, in Debian

  68. amon says:

    The 1.2 download links do not work.

  69. user1 says:

    Is it somehow possible to run lastfmproxy on lookback interface only?

    As a temporary workaround I use iptables

    # lsof -i :1881
    COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
    streamrip 31644 user1 3u IPv4 73784 TCP localhost:33814->localhost:1881 (ESTABLISHED)
    python 32024 lastfmproxy 3u IPv4 70286 TCP *:1881 (LISTEN)
    python 32024 lastfmproxy 7u IPv4 73783 TCP localhost:1881->localhost:33814 (ESTABLISHED)

  70. Ernie says:

    This is great! Thanks Vidar.

  71. Rantanplan says:

    Hi all,

    thanx for this cool tool. I use it with streamripper, but it seems to stop running sometimes at my ubuntu 7.10 desktop (sometimes crushing completely, sometimes not producing any data – mostly when switching from one song to another). So I wrote a short script around your tool to restart lastfmproxy if neccessary. If you are interested in publishing it, you give me a hint.

  72. rogle says:

    Hi,

    thanks for new version!

    It works well in python2.5, but it crashes after changing to next song if there are non-ascii letters like äöü in the line Track. I’ve tried icytag=icytag.decode(“ascii”,”ignore”) in line 620 in main.py, but it doesn’t work. Is a call
    LANG=utf-8 python2.5 …
    helpful?

  73. Hugo says:

    Hi there!

    I’m using Lastfm Proxy 1.1 and this one works.
    If I use the 1.2 I always get the error “no tracklist???”

    Keep Up The Good Work!

    Thx! :-)

  74. rogle says:

    Hi,

    I’ve reported a problem with “äöü” and so on. It is helpful to enter a line like
    trackname = trackname.encode(‘ascii’,'ignore’)
    after line 620 in main.py. All non-ascii characters will be supressed, but lastfmproxy plays wonderful.

    Thanks lot for Your nice work!

  75. rogle says:

    Hi,

    please correct my infos given shortly before…

    I’ve reported a problem with non-ascii letters like “ÄÖÜäöü” in the trackname: lastfmproxy will crash by beginning the next song.

    It is helpful to enter a line like
    trackname = (trackname).encode(‘ascii’,'ignore’)
    after line 619 and before icytag = … in main.py. All non-ascii characters will now be supressed, but lastfmproxy plays now wonderful without interruption.

    Thanks lot for Your nice work!

  76. Hugo says:

    Here’s the correct error:

    Starting LastFMProxy 1.2…
    Connecting to last.fm server…
    To tune in, point your browser to:
    http://localhost:1881/
    Internal error: No tracks in playlist??

    But when I try with 1.1 it works…

  77. tigert says:

    Dude!

    This is just awesome! It’s funny to google for something and find a friend’s hacking project =)

    //Tuomas

  78. elchubi says:

    Please, someone write a chumby widget for this… It’s great we are getting CD covers, track titles, etc…

  79. LoneStar says:

    This is simply great!
    You should work on making it a winamp plugin ;)

    btw, how do you clear the Stations history? I want to reset it to empty..

  80. Pingback: “Súbele el volumen” a Last.fm

  81. herb says:

    Nice piece of work! It’s running on my NSLU2 and streaming music on my Soundbridge. I love it!

  82. blub says:

    @lonestar delete the corresponding file: bookmarks.txt

  83. man says:

    first thing i installed on my macbook air?
    python.

    second?
    last.fm proxy xD

  84. eugen says:

    Hello
    I have a question. How can i listen to last.fm if i am at work and our IT department blocked it?!

    Is there some way to access it even if it has been blocked by admin?!

    Thanks

  85. cunzler says:

    hi.
    anyone out there using lastFMProxy on a webserver and knows how to modify firefox about:config to redirect URIs like ‘lastfm://globaltags/rock’ to ‘http://myServer:1881/lastfm://globaltags/rock’?
    i’m using an ubuntu server running lastFMProxy but i’m working on a windows machine. clicking on a lastfm-link starts the last.fm software. in about:config i made this key: ‘network.protocol-handler.app.lastfm’ – ‘C:\Programme\Mozilla Firefox\firefox.exe -new-tab http://myServer:1881/%s‘ but nothing happens. i don’t know, if %s is the correct variable for pasting clicked URI. furthermore typing something like ‘lastfm://…’ in firefox adress bar causes firefox to launch, so i edited the registry entry, but nothing works.

    anyone with some hints?
    thanks.

    .cunzler

    ps: by the way: great work!

  86. cunzler says:

    sorry, made a typing error. [...] typing something like ‘lastfm://…’ in firefox adress bar causes firefox to launch [...] – not firefox launches but lastfm.exe.

  87. John says:

    hello, thanks for this script. It worked perfectly on windows xp 64 (v1.3b)

  88. k0in says:

    Hello,
    I found a bug – in file main.py on line ~550
    after
    ‘if config.useproxy:
    streamsock.connect((config.proxyhost, config.proxyport))’

    must go

    ‘streamsock.send(“Proxy-Authorization: Basic ” + base64.b64encode(config.proxyuser + “:
    ” + config.proxypass) + “\r\n”)’

  89. k0in says:

    Sorry, I did not find bug reporting form =)

  90. k0in says:

    By the way, thank you, good work!

  91. Pingback: Internet-Radiogerät “IP-dio mini” « Die Memoiren des Josh K. Phisher

  92. alex s says:

    Boy, this is absolutely awesome. Great, great work!! :)

  93. Daniel says:

    Hi there, your program works great for me. Many thanks !!!

  94. El Buen Chubi says:

    Hi, is there a debug mode? I’m having problems with ActivePython on AppleTV
    Web page loads but there it is not forwarding any sound
    ============================
    -bash-2.05b$ ./main.py
    Starting LastFMProxy 1.3b…
    Connecting to last.fm server…
    audioscrobbler: Handshake error:

    To tune in, point your browser to:
    http://localhost:1881/

  95. El Chubi says:

    I removed the error when I installed Perl, so Perl is needed as well, however, I am still not able to hear a thing… web page loads, it even shows album art and song info but it cannot “lock” to a song…

  96. El Chubi says:

    This is what I’m getting at terminal–>
    ======================================
    Exception in thread Thread-30:
    Traceback (most recent call last):
    File “/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/threading.py”, line 488, in __bootstrap_inner
    self.run()
    File “/Library/Frameworks/Python.framework/Versions/2.5/lib/python2.5/threading.py”, line 448, in run
    self.__target(*self.__args, **self.__kwargs)
    File “./main.py”, line 604, in gotconnection
    c = streamsock.recv(1)
    error: (54, ‘Connection reset by peer’)

  97. Marcel says:

    Hi Vidar,

    first I want to thank you for the realy cool and realy realy usefull LastFMProxy. Since I used it I did not use any more one of my own MP3 files. Thank you a lot!

    Second my question to you: IN the past days I experience a lot of errors and now its impossible to use LastFMProxy any more. It gives these errors:
    ======
    audioscrobbler: Handshake error:

    To tune in, point your browser to:
    http://localhost:1881/
    Exception in thread Thread-10:
    Traceback (most recent call last):
    File “C:\Python25\lib\threading.py”, line 460, in __bootstrap
    self.run()
    File “C:\Python25\lib\threading.py”, line 440, in run
    self.__target(*self.__args, **self.__kwargs)
    File “c:\Program Files\LastFMProxy\main.py”, line 604, in gotconnection
    c = streamsock.recv(1)
    error: (10054, ‘Connection reset by peer’)
    ======

    May it be that LastFM is vorbidding the access to its music without viewing its advertising or so?

    If you want to have some help at analyzing the problem I could offer my little help. I am able to use wireshark ;-)

    Thanks,
    Marcel

  98. Jörg says:

    Thanks for the great script. It runs well un my NSLU2 with uNSLUng, using a Soundbridge to listen to the stream.

    However, I’m not certain about the traffic: does the script stays “connected” to last.fm (causing some internet traffic 24/7), or will it connect only when listening to the stream from the proxy (in my case, only when the Soundbridge is on)?

    Jörg

  99. Johan says:

    Thanks a lot for this great script. Just wonder if there is a Windows version aviable?

    BR,
    Johan

  100. matt says:

    Do you know of a php version of this script?

  101. Pingback: » Como rippear canciones desde last.fm virus

  102. Anal says:

    once a user commented that she was able to listen last.fm through MPD via lastfmproxy. I just wonder HOW.

    Any tips?

  103. Walter says:

    Hello Vidar!

    I’ve written an extension to your actual version of LastFM-Proxy v1.3b. It adds support to autosave all mp3s streamed by the proxy to hard-disc.

    I hope you don’t mind me publishing the complete patched package on my webpage:
    http://wwerther.de/?ref=/lastfmproxy

    Best Regards

    Walter

  104. Daniel says:

    Hi!

    Very nice, thanks a lot! I have integrated LastFMProxy into my MythTV mediacenter through the use of Mythstream, works like a charm. A small perl script (I don’t know python…) is then executed from irexec to perform the “love”, “ban” and “skip” functions, the perl script simply connects to the LastFMProxy webserver.

    Regards
    Daniel

  105. dz0ny says:

    Hello Vidar!
    Great program! For those who are getting error: (10054, ‘Connection reset by peer’), I’ve got it working by using proxy(Privoxy)!
    When I will have time I will look into code, to see why doesn’t work direct connection to server.

  106. dz0ny says:

    Ok! I’ve found it, the user-agent header is missing! Find
    streamsock.sendall(“Host: ” + host[0] + “\r\n”)
    and in new line add
    streamsock.sendall(“User-Agent: LastFMProxy\r\n”)
    Now it works like a charm!

    BR,janez

  107. est says:

    Thank you vidarino for the wonderful software.

    Can LastfmProxy support minilyrics? It will be super cool if I can display lyrics for my favorate music on Last.fm

  108. est says:

    Or just add ID3 tag to LastfmProxy HTTP mp3 streaming.

  109. Ralf says:

    just installed your software -> great!

  110. ave says:

    Hi!
    I got problem. I configured all but when I run m3u file I got message Server Full (http://localhost:1881/lastfm.mp3)
    Hmm… any suggestions? Thank you in advance.

  111. Pingback: The Playstation3 as a Media Centre « Art Of Beer

  112. Pingback: Free Music! | florian.demmer.org

  113. ernesto says:

    does anybody know how to register a protocol handler in osx (not just for ff3, but system-wide)? should be possible, because if you install lastfm.app, it creates one.

  114. dave says:

    so class, thank you so much for this! :)

    D

  115. Mattatron says:

    I was about to click ‘purchase’ on the Airfoil website when I decided to Google a bit more – and boy am I happy I did!

    Thanks for this great tool; you saved me $25!

  116. overload says:

    this + streamripper is exactely what i craved for a long time. i even thought of hacking a ripper of some kind into shell-fm, but your solution is so much better — now i can even use cmus to listen to last-fm!
    i think i’m in love with you ;)

  117. Hannes Walter says:

    @ave Why don’t you just connect your strem to localhost:10069
    or whatever iot says in your Realy Port text box..??

  118. Jos van Hees says:

    Thank you for this great app! I’ll try to make a nice page around it for the PSP :D

  119. Asbjørn says:

    I just installed LastFMProxy on my NAS, and now my Sonos is playing Last.fm straight into my stereo – no PC (or Mac) needed! :-) Awesome!!!

    I don’t know what LastFMProxy scrobbles into my Last.fm’s profile, but I’d prefer it if the proxy replicate don’t scrobble a track before it’s played halfway trough.

    Having said that, the ability to play live like this is really, really nice! :-)

  120. nettezzaumana says:

    hi, thanks for this piesce of sw.

    lastfmproxy works for me in version 1.1, in version 1.3 occurs following error ::

    Exception in thread Thread-31:
    Traceback (most recent call last):
    File “/usr/lib/python2.5/threading.py”, line 486, in __bootstrap_inner
    self.run()
    File “/usr/lib/python2.5/threading.py”, line 446, in run
    self.__target(*self.__args, **self.__kwargs)
    File “./main.py”, line 574, in gotconnection
    track = playlist.data.tracks[playlist.pos]
    IndexError: list index out of range

    regards by ntz

  121. Pingback: Recipe for musical exploration | Metameat

  122. Julian says:

    I downloaded (lastfmproxy-1.3b.tar.gz) to my desktop but cannot open it. how do I install it?
    Thanks

  123. Sebastian says:

    Hello there!

    Does anyone use LastFMProxy with Winamp and Streamripper?

    Ive the Issue that every 15 seconds the proxy switches to the next song, but only if streamripper is active.

    Some ideas on this issue?

  124. Heinz says:

    Hello, I want to listen to last.fm with my new noxon iRadio for ipod. Putting http://localhost:1881/lastfm.mp3 to my favotites doesn’t work. Any suggestions? Thanks in advance.

  125. Mick says:

    Hi – I can’tget this to work on my mac – I get a ‘Parameter error’. It tries to open safari with http://localhost:1881/lastfm.m3u but gets an error. When I open thi in script editor it highlights open location http://localhost:1881/lastfm.m3u.
    Can you please advise?
    iTunes 8.01(11),Mac OS X 10.5.5, MacBook Pro Intel 2.17

    Thanks,

    Mick

  126. Sigurd says:

    Hi!

    This is (probably) something I really need. But it seem that the software is not written for ordinary users. I have no clue whatsoever how to make this work. My problem starts already when I am supposed to edit the config.py file. Where the hell should I put my LastFM username and password?

    When I open the config.py file I get this in the terminal window (Mac OS):
    “Last login: Mon Dec 8 17:57:32 on ttyp1
    “/usr/bin/pythonw” “/Users/Sigurd/Library/iTunes/Scripts/lastfmproxy/config.py” && echo Exit status: $? && exit 1
    Welcome to Darwin!
    sv-blia-ans035:~ Sigurd$ “/usr/bin/pythonw” “/Users/Sigurd/Library/iTunes/Scripts/lastfmproxy/config.py” && echo Exit status: $? && exit 1
    Exit status: 0
    logout
    [Process completed]

  127. Pingback: » Atkariigais BlogZ

  128. Pingback: Streaming Audio is even better with Airfoil, m3u2iTunes , and these other cool tools. - daveraffaele.com

  129. Hi,

    first I wanted to test locally, before finding a hosted service for python. but if I run python (3.0!!) I get syntax errors for main.py, pointing to quotation marks on e.g. print statements. I am no python wiz, but the syntax looks ok … would you know what is the problem?

  130. Peter says:

    Hi Vidar, good software, congratulation as well to your family. I want to playback the playlists (genre based) thru a KISS DP-500. There is a way to stream “shoutcast style” playlists. I tried it with yours, (URL based) but it fails. If you might have an idea, thanks for your answer. Regards, Peter

  131. pepijn says:

    hi,

    great software!
    works very well under mac os x 10.5.5 using a macports install of python 2.5.1

    one thing i would like is more command line control, things like getstation, gettrack, slip, love, ban
    that would allow me to make some wrapper application, or at least some applescript or automator actions.
    or are there url commands i could use to do so?

    also some documentation wouldn’t hurt.

  132. PhyshBourne says:

    Awesome!
    cheers, m8!
    Thank you very much indeed!

  133. FROHLICH says:

    Please give me more informations about
    function amorak and lastfm!

  134. Haloowarm says:

    Hallo !

    I’ve discovered a problem with lastfmproxy:

    After some time the music keeps playing and the scrobbling stops.

    After having restarted lastfmproxy with “/etc/init.d/lastfmproxy restart ”

    The scrobbling works again.

    Why is this ??

    Thanks a lot for this great program !

    Haloowarm

  135. Maddog says:

    Hi,

    Thanks for this great script, I use it to listen to Last.fm on my Playstation3 via TVersity.

    It was really easy to configure and use – everything worked like a charm on the very first startup.

    (Except that it doesn’t work with Python 3)

    thanks!!

  136. Pingback: links for 2009-02-18 « Breyten’s Dev Blog

  137. luh3417 says:

    I do not suppose there is a LastFMProxy for mobiles such as for the Symbian s60v3 Internet Radio Player?

  138. ejonesss says:

    it would be nice to relay the flash player online to an external player.

  139. Anuvrat says:

    Hey, thanks for the wonderful plugin. Works like a charm. Also easy to configure and the urls are so intuitive :) . Using lastfmproxy with amarok on ubuntu intrepid. Thanks once again.

  140. ejonesss says:

    i am getting

    audioscrobbler: Submission error:
    ‘BADSESSION\n’
    Error sending data to client: Broken pipe

    on the latest version

  141. ejonesss says:

    i am not able to connect i am getting 403 invalid ticket constantly

    looks like the service was being abused and they changed something.

    can someone look into this and fix it

  142. Jesper says:

    If i have a mac can i do this to?

  143. Jesper says:

    ever tihng works fin, but i cant get itunes to start play. it only connecting and de songs in de web dosent play ether its only changes all the time, what can i do?

  144. kevin says:

    hmm it seems to be having problems extracting the new track list..

  145. kevin says:

    Strangeness! No tracks in playlist? Sending station update…
    Trying station lastfm://artist/Foo%2BFighters/similarartists
    Strangeness! No tracks in playlist? Sending station update…
    Trying station lastfm://artist/Foo%2BFighters/similarartists
    Unable to change station or get a playlist. Stopping.
    Exception in thread Thread-105:
    Traceback (most recent call last):
    File “threading.py”, line 460, in __bootstrap
    self.run()
    File “threading.py”, line 440, in run
    self.__target(*self.__args, **self.__kwargs)
    File “main.py”, line 574, in gotconnection
    track = playlist.data.tracks[playlist.pos]
    IndexError: list index out of range

    that’s the error i got..it stops after the first track :(

  146. ejonesss says:

    update as of 2/27/2009 at 4 pm eastern time

    i am able to connect again !!!!!!WHEW!!!!!

  147. Stevie says:

    >>luh3417 Says:
    February 21st, 2009 at 12:53
    I do not suppose there is a LastFMProxy for mobiles such as for the Symbian s60v3 Internet Radio Player?

  148. rain says:

    Thank you for this great app, running here with the Noxon iRadio.

    backlink: Noxon iRadio und last.fm IV (sorry,it’s in german :-)

  149. Ryan says:

    I hear that the streaming protocol that this app uses is going to be discontinued by LastFm, Any idea on if there will be an update so we can keep using this great app?

  150. Lostin says:

    why does this seem so easy to everyone but me!!!!!! i’ve tried everything, and can’t get anywhere. tried python 3, trying python 2.5 what’s supposed to happen? i edited the config file to include user name and password, thru the python gui. then what? tried running main.py through command, nothin. tried looking for the url in main.py, also tried running module. what am i missing?

  151. Stefan says:

    Thanks very much for last.fm_proxy, it works like a charm!!
    Thanks for your work and for sharing.

  152. Steffen says:

    Thank you so much! Finally I can use my MPD to hear last.fm!
    This is great stuff!

  153. Dick Middleton says:

    Hi,

    It seems LastFM have just changed their API so client sw needs a client key. Old apps no longer work. Are you planning to implement the necessary changes?

    Dick

  154. Hi,
    I just wanted to say: Great job!
    I just emerged (Gentoo guy ;) the lastfmproxy and am finally able to properly record and listen to my favorite songs from lastfm.
    Thanks very much and thumbs up for this great project.

  155. Times says:

    So the lastfmproxy is dead now?

  156. Another request: support for putting MD5 digest of password instead of plaintext one in configfile – as we use digest anyway.

  157. A says:

    Hi,

    lastfmproxy is a great programm, but there is a problem
    with the love/ban-button.
    Has last.fm changed the code? (Maybe to API??)

    Here is the error code after pressing the ban-button:

    audioscrobbler: Submission error:
    ‘BADSESSION\n’
    (urk? [''] )
    (urk? [''] )
    (urk? ['404 Not Found'] )
    (urk? [''] )
    (urk? ['Not Found'] )
    (urk? ['The requested URL /radio/control.php was not found on this server.'] )
    Too many errors parsing response.
    command ban returned:{}
    hmm? {}
    (urk? [''] )
    (urk? [''] )
    (urk? ['404 Not Found'] )
    (urk? [''] )
    (urk? ['Not Found'] )
    (urk? ['The requested URL /radio/control.php was not found on this server.'] )
    Too many errors parsing response.
    command ban returned:{}
    hmm? {}

  158. stefanobeck says:

    This software work? I presume the date is very old . Thx

  159. Moritz says:

    I found this entry:

    Let Fx recognise lastfm:// links

    In Firefox about:config made a new string called network.protocol-handler.app.lastfm
    and then in the value added the path to the player (/usr/bin/lastfm-player in my case)

    Source: http://my.opera.com/mysurface/blog/show.dml/107013

    Ist there an explanation how to get Fx running lastfmproxy without linkingto another website linking to another website etc???

  160. Peter says:

    Thanks, going to try it

  161. John says:

    Just discovered this app, and can’t wait to get it working. Theoretically I’ll be able to listen on my Palm Centro. Just wondering – any chance of someone doing something similar w/ pandora? I use both pandora and lastfm (neither is perfect), and I’d love to be able to listen to both from my phone.

  162. Chris says:

    Hi,

    is LastFMProxy still working for someone?

    I can open the proxy site with my browser, but there are no songs to choose from.
    At least in Germany it seems that LastFMProxy is not working anymore.

    Cheers
    Chris

  163. N'Gonka says:

    It works pretty well. You have to read the Readme file to see the Basic usage.
    By the way, there are some encoding errors with the Unicode Apostrophe. Shall I post the fix?

  164. newb says:

    so i’m trying to get through the “read me” so i can get this to work, but im not even sure if i have a “python” environment on my mac. the read me has a link to get python, but that link is not helpful – there are dozens of downloads there and im not sure wha to run.

    anyway, im getting a parameter error when i try to run this from the scripts menu in itunes. help?

  165. this script isnt working anymore… :( does anyone know another software which I can use as a remote control? (windows)

  166. Simon says:

    It is definetly not working, not on linux and not on OSX.

  167. Tried to get it running with my dockstar (kirkwood chipset):

    main.py:23: DeprecationWarning: the md5 module is deprecated; use hashlib instead
    import md5
    Exception in thread Thread-20:
    Traceback (most recent call last):
    File “/usr/lib/python2.6/threading.py”, line 532, in __bootstrap_inner
    self.run()
    File “/usr/lib/python2.6/threading.py”, line 484, in run
    self.__target(*self.__args, **self.__kwargs)
    File “main.py”, line 124, in gotconnection
    self.log_print(“Unhandled method: ” + req[0])
    TypeError: cannot concatenate ‘str’ and ‘list’ objects

    :(

  168. Moredread says:

    Gabi Frings published an updated version under http://www.gabifrings.de/download.html

  169. Carsten Otto says:

    Hey, if it works (I’ll try now) I’d love to flattr (www.flattr.com) you – I don’t have a Paypal account and I’m pretty sure I never will.

  170. BZEMER says:

    When I start main.py I get:
    File “d:\Programs\LastFM Proxy\main.py”, line 78
    tupel = socket.getaddrinfo(bind_address,1881)
    ^
    TabError: inconsistent use of tabs and spaces in indentation

    I’m using Win7 x64 and Python 3.1 x64. Any suggestions?

  171. finferflu says:

    Hmm, this doesn’t really seem to work for me:

    $ ./main.py
    Starting LastFMProxy 1.3b...
    Connecting to last.fm server...
    To tune in, point your browser to:
    http://localhost:1881/
    Strangeness! No tracks in playlist? Sending station update...
    Trying station lastfm://artist/Clogs/similarartists
    Unable to change station or get a playlist. Stopping.

    Any ideas? Thanks!

Leave a Reply

Your email address will not be published.

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>