IPB

Welcome Guest ( Log In | Register )

foo_lastfm_radio
nausea
post Aug 30 2008, 11:24
Post #1





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



This is a component for playing Last.fm radio stations in foobar2000.

Get version 0.5.7d here.

The component gives you several ways of adding stations. Artist stations can be added from the context menu. Your personal stations can be added from the "File/Open Last.fm Radio Station" menu, as can custom stations. The component will also catch Last.fm URIs entered from the "File/Add location..." dialog or command line, but these don't create automatically refreshing playlists.

Thanks to those that answered my questions during development. As usual, all feedback is welcome!

Regarding the future of this component
The component is still using the old Last.fm Radio API, which was due to be discontinued over half a year ago, and is therefore running on borrowed time. When the new radio API was released I went some way to updating, but hit some problems and then didn't have the time.

However the new radio API requires users to be subscribers in order to listen, and as I expect the continuing popularity of foo_lastfm_radio stems from the fact that you don't need to subscribe, it is unlikely that I'll update to the new API any time soon. This means that if and when the old radio API is deactivated, it will be RIP foo_lastfm_radio.

A note on Love/Ban
This functionality is part of a separate API, and additionally requires a corresponding audioscrobbler submission (see http://www.last.fm/api/show?service=260). It therefore won't be implemented in foo_lastfm_radio. Sorry.

Changed in version 0.5.x:
  • 0.5.7d: Removed limit on text length in custom station dialog.
  • 0.5.7c: Can assign keyboard shortcuts to Last.fm Radio contextmenu items.
  • 0.5.7b: Recompiled with latest foobar2000 v1.0 SDK; no noticeable changes.
  • 0.5.7: Updated to support foobar2000 v1.0.
  • 0.5.6b: Working again now? Let's hope so.
  • 0.5.6: New technical info field "lastfm:imageURL". Use $info(lastfm:imageurl) to retrieve.
  • 0.5.5: Removed 'fan' custom station as it only returns empty playlists.
  • 0.5.5: New advanced preference: cache album art to a file.
  • 0.5.4: Context menu for opening artist stations now uses %artist% rather than %album artist%. This was causing problems with various artist albums.
  • 0.5.4: Small usability improvements to the Custom Station dialog.
  • 0.5.3: Updated new advanced preference from 0.5.2 to also disable 'Playback Follows Cursor' setting if set.
  • 0.5.2: No longer possible to add non-Last.fm tracks to Last.fm playlists. This includes tracks cut from Last.fm playlists. Prevents reordering playlist contents and potential problems with playlists not refreshing.
  • 0.5.2: New advanced preference: Set playback order to 'Default' when playing Last.fm radio.
  • 0.5.1: Fixed: Custom station dialog OK button would remain disabled when first selecting an item from history.
  • 0.5.1: Adding lastfm:// URLs from the command-line or 'File/Add Location...' dialog creates automatically updating playlists. Note that adding from the command-line halts playback and clears your default or current playlist in the same way adding any other file does.
  • Option to reuse a single playlist for all stations.
  • Favourite stations: managed from the preferences page, accessed in the File/Last.fm Radio menu.
Changed in previous versions:
  • 0.4.2: FIX: Using the close button in the custom station dialog doesn't return control to the main window.
  • 0.4.2: FIX?: Rare crash on track selection/playback.
  • 0.4.1: Playlists update silently.
  • 0.4.1: No more obnoxious popups on expired tracks, or empty playlist retrievals.
  • 0.4.1: FIX: On startup, sometimes two lots of tracks will be retrieved for a single playlist.
  • 0.4.1: FIX: $if(%album%,then,else) always returns then, even if album tag is empty.
  • 0.4: Album art support. (Specify a default image in the preferences page.)
  • 0.4: Improved custom station dialog. Now remembers previous entries.
  • 0.4: Last.fm links can be accessed from the context menu.
  • 0.4: Improved error handling.
  • Fixed crash when attempting to write tags.
  • Fixed tags disappearing on playback.
  • Fixed non-ANSI characters not displaying correctly.
  • Improved auto-refresh playlist logic. Old tracks (tracks retrieved prior to the currently playing item) are removed from all playlists, which refresh when 3 tracks or less are remaining.
  • Fixed crash when selecting keyboard shortcuts preferences page.
  • Playlists are given friendlier names and can be renamed.
  • Fixed escaped characters in tags.

Note: Played tracks are not scrobbled. (Use foo_audioscrobbler with "Only submit tracks from the Media Library" disabled if you want this functionality.)
Note 2: Users of foo_playback_custom (or other components which write tags to files during playback) should check "Only tracks in the media library update playback statistics" in that component's options to avoid problems with playback.

This post has been edited by nausea: Jan 30 2010, 22:58
Go to the top of the page
+Quote Post
22 Pages V   1 2 3 > »   
Start new topic
Replies (1 - 24)
TomBarlow
post Aug 30 2008, 12:17
Post #2





Group: Members
Posts: 585
Joined: 30-July 07
Member No.: 45750



Oh my. This is awesome. One thing I would like is the ability to add stations to an existing playlist, as I have an "Internet Radio" playlist, and if I could add last fm stations to it that would be amazing! Also it doesn't seem to be scrobbling what you play, which would be good. Oh and another suggestion, it would be nice if playlists were called something like "TomBarlow's Recommended Station" instead of "lastfm://user/TomBarlow/recommended".

Really excited by this plugin though! Nice one!
Go to the top of the page
+Quote Post
Sounds Blast
post Aug 30 2008, 16:12
Post #3





Group: Members
Posts: 311
Joined: 30-May 08
Member No.: 53920



nausea, thank you so very much for this awesome pluggin. I am trying it out now. Report any problems i get. smile.gif
Go to the top of the page
+Quote Post
foosion
post Aug 30 2008, 17:41
Post #4





Group: FB2K Moderator (Donating)
Posts: 4433
Joined: 24-February 03
Member No.: 5153



I've just tested it and noticed a few things.

Context menu
The command is shown even though the artist tag is undefined (shows "?'s station"). The description of the command description only shows "Last.fm Radio".

Main menu
The command descriptions should end with a (single) period to be consistent with the style used by foobar2000 itself (core and official components). I also suggest to change the name of the root command to "Open Last.Fm Radio Station" and move it to the file_open section, file_playlist would be my second choice.

Playlists
It would be nice if the playlists had friendlier names and could be renamed. If you need to store information associated with a playlist, the best solution is to use a playlist property.

Tags
Non-ASCII characters do not display correctly. They look as if the strings had been converted from ISO 8859-1 to UTF-8 while they already where UTF-8 before. XML entities like &_amp_; appear untranslated (underscores added to keep the forum software from translating it).

There are several solutions for the tags-disappearing-on-playback problem:
  • Provide metadata for titleformatting through a metadb_display_field_provider. This limits you to a fixed set of fields, and components that do not use titleformatting will not be able to use the information (for example the properties window or the selection properties UI element).
  • Rewrite the URL and implement a "redirecting" input service. The rewritten URL would point to a file in a local cache or would use a custom scheme. Your input service would then internally open the input for the real file and forward all requests to it. For the metadata retrieval methods you would add the cached tag information to the data returned by the real input.


--------------------
http://foosion.foobar2000.org/ - my components for foobar2000
Go to the top of the page
+Quote Post
NEMO7538
post Aug 30 2008, 18:12
Post #5





Group: Developer
Posts: 815
Joined: 28-November 03
Member No.: 10088



I also frequently get this error when trying to play a song from a previously generated playlist:
Unable to open item for playback (Invalid ticket (403)):
"http://kingpin6.last.fm/user/c9aba423b670940774b96984f728630e.mp3"


This post has been edited by NEMO7538: Aug 30 2008, 18:14
Go to the top of the page
+Quote Post
foosion
post Aug 30 2008, 18:32
Post #6





Group: FB2K Moderator (Donating)
Posts: 4433
Joined: 24-February 03
Member No.: 5153



QUOTE (NEMO7538 @ Aug 30 2008, 19:12) *
I also frequently get this error when trying to play a song from a previously generated playlist:
Unable to open item for playback (Invalid ticket (403)):
"http://kingpin6.last.fm/user/c9aba423b670940774b96984f728630e.mp3"
The URLs returned by the last.fm server represent "tickets" which are only good for one use.

Actually, a few minutes after my last post I came to the conclusion that the component currently uses an approach that makes things more complicated than they need to be - both for users and for the implementation. I'm not an expert on Last.fm radio stations, but as far as I know they are conceptually streams that support skipping to the next song as a bonus features.

On the technical side, the server returns XSPF playlists for a given station that contain a few songs in the form of one-use URLs and metadata for the song. The most straightforward way to implement this in foobar2000 would be an input service that acts as a proxy to this "stream". When it is used for playback, it would retrieve the XSPF playlist from the server, open the input for the first track and report the songs metadata as dynamic track metadata (like a regular HTTP stream). When the track ends or playback of the stream is restarted (like when you double-click the playlist entry when it is already playing), it would go to the next. When it runs out of tracks, it would retrieve the XSPF playlist with the next few songs from the server.

There are a few technical issues - for example, the caching and retrieval of the XSPF playlist should not actually be handled by each input instance but by a central module - but overall I think this approach would make it easier to handle Last.fm stations in foobar2000. The current way with automatically updating playlists that contain one-use URLs seems a bit out-of-place.


--------------------
http://foosion.foobar2000.org/ - my components for foobar2000
Go to the top of the page
+Quote Post
nausea
post Aug 30 2008, 21:44
Post #7





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



Thanks for the feedback guys.

QUOTE (foosion @ Aug 30 2008, 17:32) *
The URLs returned by the last.fm server represent "tickets" which are only good for one use.

Yes, this is a little unfortunate. When I first started working on the component a few months ago the tickets weren't single use and you could replay tracks and jump around within the playlist (with some limits I believe), so the current method made sense. (I also observed this in other media players with Last.fm functionality.) I just started working on it again the other day and the behaviour had changed.

I still think it makes some sense to have playlists though as it means you can see which tracks are coming, and skip forward as you wish. The logic needs to be changed though, perhaps removing played or skipped tracks as well as adding new ones.

Thanks for the detailed points foosion. Are playlist properties persistent between opening and closing foobar2000?
Go to the top of the page
+Quote Post
foosion
post Aug 30 2008, 22:33
Post #8





Group: FB2K Moderator (Donating)
Posts: 4433
Joined: 24-February 03
Member No.: 5153



QUOTE (nausea @ Aug 30 2008, 22:44) *
Thanks for the detailed points foosion. Are playlist properties persistent between opening and closing foobar2000?
Yes, see the description of the playlist_manager_v2 class.


--------------------
http://foosion.foobar2000.org/ - my components for foobar2000
Go to the top of the page
+Quote Post
nausea
post Aug 31 2008, 22:02
Post #9





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



Updated original post with info about version 0.2. I'll work on the problems with tags for the next version.
Go to the top of the page
+Quote Post
Sounds Blast
post Aug 31 2008, 23:02
Post #10





Group: Members
Posts: 311
Joined: 30-May 08
Member No.: 53920



thanks for the update
Go to the top of the page
+Quote Post
m0rbidini
post Sep 1 2008, 01:29
Post #11





Group: Members
Posts: 212
Joined: 1-October 01
From: Lisbon, Portugal
Member No.: 127



Thanks for the plugin, nausea. Looking forward for further developments!
Go to the top of the page
+Quote Post
s33m33
post Sep 1 2008, 02:57
Post #12





Group: Members
Posts: 246
Joined: 4-January 07
Member No.: 39305



Nice plugin nausea. Thanks for the effort you're putting in.
Go to the top of the page
+Quote Post
Neszton
post Sep 1 2008, 09:04
Post #13





Group: Members
Posts: 7
Joined: 18-May 08
Member No.: 53612



It's good, but i'm waiting for the version 0.5 smile.gif

But this plugin is awesome. RESPECT! wink.gif
Go to the top of the page
+Quote Post
TomBarlow
post Sep 2 2008, 01:07
Post #14





Group: Members
Posts: 585
Joined: 30-July 07
Member No.: 45750



I'm getting a crash whenever I go to Prefs>General>Keyboard Shortcuts. I just tried it with and without this component, it seems to be the guilty one. Here's a log:

CODE
Illegal operation:
Code: C0000005h, flags: 00000000h, address: 0049B0A7h
Access violation, operation: read, address: 00000000h
Call path:
entry=>app_mainloop=>preferences_page::create
Code bytes (0049B0A7h):
0049B067h: FF 50 10 84 C0 74 D9 83 4C 24 3C FF 8B 4C 24 04
0049B077h: 85 C9 74 04 8B 01 FF 10 B0 01 EB 13 83 4C 24 3C
0049B087h: FF 8B 4C 24 04 85 C9 74 04 8B 01 FF 10 32 C0 8B
0049B097h: 4C 24 34 64 89 0D 00 00 00 00 5F 8B E5 5D C3 56
0049B0A7h: 8B 30 85 F6 74 07 8B 06 8B CE FF 50 04 8B 0F 85
0049B0B7h: C9 74 04 8B 01 FF 10 89 37 8B C7 5E C3 8B 41 04
0049B0C7h: 57 8B 7C 24 08 E8 D5 FF FF FF 5F C2 08 00 B8 70
0049B0D7h: 89 4B 00 E8 95 A1 01 00 83 EC 4C 8B 45 0C 53 56
Stack (0012F380h):
0012F360h: 015DFC4C 7C9C93C0 77F643DD 7C9C93C0
0012F370h: 00000004 00000000 015DF158 00000000
0012F380h: 0012F3C8 00413068 00000000 01724813
0012F390h: 0012F3C8 00000000 17C90275 0012F4B4
0012F3A0h: 00000001 0012F3E0 01743229 00000000
0012F3B0h: 01722FF0 0012F3C8 17C90255 00000000
0012F3C0h: 017724B0 00000000 00000000 017724C0
0012F3D0h: FFFFFFFE 00000004 0040CA30 017702B0
0012F3E0h: 0012F504 017439C0 FFFFFFFF 004271E0
0012F3F0h: 0012F42C 0012F478 0012F4B4 004DC010
0012F400h: 0012F600 00000000 00000000 00000080
0012F410h: 7C910551 01710718 00000000 00000000
0012F420h: 01715600 02A22190 00000048 004DD304
0012F430h: 00000000 00000000 00000000 00000000
0012F440h: 0012F288 017702C0 0012F490 7C90EE18
0012F450h: 7C917BB8 FFFFFFFF 7C917BB0 004A328C
0012F460h: 003E0000 00000001 02A1B208 004A32C3
0012F470h: 179826DE 0000000A 00000000 02A22230
0012F480h: 00000200 7C90EE18 0012F470 017725F0
0012F490h: 0012F4F8 017724A8 01770160 00000000
Registers:
EAX: 00000000, EBX: 00000000, ECX: 00000000, EDX: 004D1464
ESI: 0012F3C8, EDI: 0012F3C8, EBP: 0012F510, ESP: 0012F380
Crash location: "foobar2000", loaded at 00400000h - 0052B000h

Loaded modules:
foobar2000 loaded at 00400000h - 0052B000h
ntdll loaded at 7C900000h - 7C9B0000h
kernel32 loaded at 7C800000h - 7C8F5000h
COMCTL32 loaded at 773D0000h - 774D3000h
msvcrt loaded at 77C10000h - 77C68000h
ADVAPI32 loaded at 77DD0000h - 77E6B000h
RPCRT4 loaded at 77E70000h - 77F02000h
Secur32 loaded at 77FE0000h - 77FF1000h
GDI32 loaded at 77F10000h - 77F57000h
USER32 loaded at 7E410000h - 7E4A0000h
SHLWAPI loaded at 77F60000h - 77FD6000h
SHELL32 loaded at 7C9C0000h - 7D1D6000h
ole32 loaded at 774E0000h - 7761D000h
shared loaded at 10000000h - 1002A000h
COMDLG32 loaded at 763B0000h - 763F9000h
IMM32 loaded at 76390000h - 763AD000h
LPK loaded at 629C0000h - 629C9000h
USP10 loaded at 74D90000h - 74DFB000h
avgrsstx loaded at 00390000h - 00395000h
uxtheme loaded at 5AD70000h - 5ADA8000h
RocketDock loaded at 00A50000h - 00A62000h
PSAPI loaded at 76BF0000h - 76BFB000h
MSCTF loaded at 74720000h - 7476B000h
SynTPFcs loaded at 63000000h - 63013000h
VERSION loaded at 77C00000h - 77C08000h
msctfime loaded at 755C0000h - 755EE000h
foo_abx loaded at 00B00000h - 00B31000h
foo_albumlist loaded at 00B60000h - 00BCC000h
foo_appcommand loaded at 00BF0000h - 00C06000h
foo_audioscrobbler loaded at 00C30000h - 00C60000h
WS2_32 loaded at 71AB0000h - 71AC7000h
WS2HELP loaded at 71AA0000h - 71AA8000h
foo_autoplaylist loaded at 00C80000h - 00CB0000h
foo_burninate loaded at 00CD0000h - 00D07000h
foo_cdda loaded at 00D30000h - 00D71000h
foo_comserver2 loaded at 00DA0000h - 00DF6000h
OLEAUT32 loaded at 77120000h - 771AB000h
foo_converter loaded at 00E20000h - 00E87000h
foo_cwbowron loaded at 00EB0000h - 00EDA000h
gdiplus loaded at 4EC50000h - 4EDF3000h
foo_discogs loaded at 00F10000h - 00F8D000h
WINMM loaded at 76B40000h - 76B6D000h
foo_dsp_skip_silence loaded at 01020000h - 01033000h
libmmd loaded at 01050000h - 01301000h
MSVCR80 loaded at 78130000h - 781CB000h
foo_dsp_std loaded at 01330000h - 01379000h
foo_fileops loaded at 013A0000h - 013E6000h
foo_freedb2 loaded at 01410000h - 01450000h
foo_highlightplaying loaded at 01470000h - 01491000h
foo_input_monkey loaded at 014C0000h - 0150A000h
foo_input_mslive loaded at 01530000h - 015B3000h
WMVCore loaded at 15110000h - 1536A000h
WMASF loaded at 11C70000h - 11CAA000h
foo_input_std loaded at 015D0000h - 016FD000h
foo_lastfm_radio loaded at 01720000h - 0175B000h
foo_lyricsdb loaded at 01780000h - 017AF000h
WININET loaded at 017C0000h - 0189C000h
Normaliz loaded at 018A0000h - 018A9000h
urlmon loaded at 1A400000h - 1A52B000h
iertutil loaded at 5DCA0000h - 5DE55000h
foo_masstag loaded at 01AE0000h - 01B30000h
foo_navigator loaded at 01B50000h - 01B84000h
foo_playcount loaded at 01BB0000h - 01BDA000h
foo_rgscan loaded at 01C00000h - 01C5B000h
foo_son loaded at 01C80000h - 01C83000h
foo_uie_albumart loaded at 01C90000h - 01CCD000h
foo_uie_elplaylist loaded at 01CF0000h - 01D55000h
foo_uie_lyrics loaded at 01D80000h - 01DDC000h
foo_uie_lyrics_panel loaded at 01E00000h - 01E64000h
foo_uie_panel_splitter loaded at 01E90000h - 01ED8000h
foo_uie_quicksearch loaded at 01F00000h - 01F46000h
foo_uie_tabs loaded at 01F70000h - 01F9A000h
foo_uie_wsh_panel loaded at 01FC0000h - 01FF4000h
foo_ui_columns loaded at 02140000h - 0226C000h
foo_ui_std loaded at 02290000h - 02365000h
MSIMG32 loaded at 76380000h - 76385000h
foo_unpack loaded at 02390000h - 023BD000h
SXS loaded at 75E90000h - 75F40000h
CLBCATQ loaded at 76FD0000h - 7704F000h
COMRes loaded at 77050000h - 77115000h
jscript loaded at 63380000h - 63407000h
xpsp2res loaded at 20000000h - 202C5000h
mscms loaded at 73B30000h - 73B45000h
WINSPOOL loaded at 73000000h - 73026000h
mswsock loaded at 71A50000h - 71A8F000h
DNSAPI loaded at 76F20000h - 76F47000h
rasadhlp loaded at 76FC0000h - 76FC6000h
msi loaded at 7D1E0000h - 7D49E000h
hnetcfg loaded at 662B0000h - 66308000h
wshtcpip loaded at 71A90000h - 71A98000h
MOUDL32A loaded at 03ED0000h - 03EE3000h
imagehlp loaded at 76C90000h - 76CB8000h
DBGHELP loaded at 59A60000h - 59B01000h

Stack dump analysis:
Address: 00413068h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 01724813h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 01743229h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 01722FF0h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 0040CA30h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 017439C0h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 004271E0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004DC010h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C910551h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlFreeHeap" (+00000114h)
Address: 004DD304h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 7C917BB8h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlReAllocateHeap" (+000001BBh)
Address: 7C917BB0h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlReAllocateHeap" (+000001B3h)
Address: 004A328Ch, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A32C3h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 004D1464h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 7C9106F0h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlAllocateHeap" (+0000011Ch)
Address: 7C9106EBh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlAllocateHeap" (+00000117h)
Address: 01730A9Eh, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 01731066h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 004BBDD0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042770Eh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004D1464h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004D1214h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004D1214h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BCC4Fh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004280CAh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 01750784h, location: "foo_lastfm_radio", loaded at 01720000h - 0175B000h
Address: 004CDCCFh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042818Ch, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BD6EAh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00425221h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004F6360h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BD707h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00426347h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004F6360h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BDD8Fh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042601Ch, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BA9A0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0045A1EBh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7E4184FCh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 01100061h, location: "libmmd", loaded at 01050000h - 01301000h
Symbol: "_csqrtq_f90" (+000AD725h)
Address: 7E440457h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 7E418830h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000169h)
Address: 7E41882Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000163h)
Address: 7E41B89Bh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetParent" (+0000016Ch)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 004F6360h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004B9093h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0045A649h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0045A561h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0045B0D1h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00403FF5h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7E418734h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7E423745h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "PrivateExtractIconExW" (+000002B2h)
Address: 7E440457h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 7E423768h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "PrivateExtractIconExW" (+000002D5h)
Address: 7E423591h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "PrivateExtractIconExW" (+000000FEh)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 7E4184FCh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7E4185A4h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7E4184FCh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7E4185A4h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7E4237BCh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000022h)
Address: 7E418734h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 7E418816h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000014Fh)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 7E440457h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 7E418830h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000169h)
Address: 7E41B89Bh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetParent" (+0000016Ch)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 7E41B903h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "SendMessageW" (+00000049h)
Address: 773EAFF1h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal414" (+00000FB4h)
Address: 7E41882Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000163h)
Address: 7E41B89Bh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetParent" (+0000016Ch)
Address: 7E42379Ah, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DefDlgProcW" (+00000000h)
Address: 77407392h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001B4F2h)
Address: 77407720h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001B880h)
Address: 7E41BF78h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "RedrawWindow" (+0000000Ch)
Address: 7740885Ch, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001C9BCh)
Address: 774096BDh, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001D81Dh)
Address: 7740A4CBh, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E62Bh)
Address: 7E4188D1h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetWindowLongW" (+0000002Bh)
Address: 7E4184FCh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7E4185A4h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E4188D1h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetWindowLongW" (+0000002Bh)
Address: 7E4188DAh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetWindowLongW" (+00000034h)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7740AB7Fh, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001ECDFh)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E41F896h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "CallNextHookEx" (+0000003Bh)
Address: 7E418734h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E418734h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000006Dh)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E418816h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+0000014Fh)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E418830h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000169h)
Address: 7E440457h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 7E418830h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetDC" (+00000169h)
Address: 7E4189CDh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetWindowLongW" (+00000127h)
Address: 7740A549h, location: "COMCTL32", loaded at 773D0000h - 774D3000h
Symbol: "Ordinal384" (+0001E6A9h)
Address: 7E440457h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DeregisterShellHookWindow" (+000001CFh)
Address: 7E4189F0h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "GetWindowLongW" (+0000014Ah)
Address: 7E418A10h, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DispatchMessageW" (+0000000Fh)
Address: 7E42D99Dh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "IsDialogMessageW" (+000000DBh)
Address: 0042D9E2h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7E41DAEAh, location: "USER32", loaded at 7E410000h - 7E4A0000h
Symbol: "DestroyWindow" (+00000000h)
Address: 004B7789h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042DA58h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 10002589h, location: "shared", loaded at 10000000h - 1002A000h
Symbol: "uPrintCrashInfo_SetDumpPath" (+000000C8h)
Address: 0041DAEAh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042E4F7h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004D1214h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004DD304h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004DD304h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004DD2E8h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C90EE18h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "strchr" (+00000117h)
Address: 7C9106F0h, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlAllocateHeap" (+0000011Ch)
Address: 7C9106EBh, location: "ntdll", loaded at 7C900000h - 7C9B0000h
Symbol: "RtlAllocateHeap" (+00000117h)
Address: 004AAC33h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A52D0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004AAC33h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A9088h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 10002589h, location: "shared", loaded at 10000000h - 1002A000h
Symbol: "uPrintCrashInfo_SetDumpPath" (+000000C8h)
Address: 004D3AE8h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BE721h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004D3AE8h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 0042E736h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A34A1h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A349Bh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004C5B14h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004C3860h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A52D0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A349Bh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A34AFh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004C3860h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004BEB19h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004A4EBAh, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 00400000h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 015DF028h, location: "foo_input_std", loaded at 015D0000h - 016FD000h
Address: 004A52D0h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 7C816FD7h, location: "kernel32", loaded at 7C800000h - 7C8F5000h
Symbol: "RegisterWaitForInputIdle" (+00000049h)
Address: 015DF028h, location: "foo_input_std", loaded at 015D0000h - 016FD000h
Address: 7C839AA8h, location: "kernel32", loaded at 7C800000h - 7C8F5000h
Symbol: "ValidateLocale" (+000002B0h)
Address: 7C816FE0h, location: "kernel32", loaded at 7C800000h - 7C8F5000h
Symbol: "RegisterWaitForInputIdle" (+00000052h)
Address: 004A4F25h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004E0049h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 004F0044h, location: "foobar2000", loaded at 00400000h - 0052B000h
Address: 01C4D5EDh, location: "foo_rgscan", loaded at 01C00000h - 01C5B000h
Address: 004B0063h, location: "foobar2000", loaded at 00400000h - 0052B000h

Version info:
foobar2000 v0.9.5.5
UNICODE
Windows 5.1


Additional info:
Tabbed panel modified 0.2.5 (foo_uie_tabs)
RAR reader 1.1 (foo_unpack)
ABX Comparator 1.3.3 (foo_abx)
freedb Tagger 0.6 (foo_freedb2)
CD Audio Decoder 2.1.3 (foo_cdda)
Lyrics panel 0.35 (foo_uie_lyrics_panel)
foo_lyricsdb 0.0.7 beta 5 (foo_lyricsdb)
Album List 4.3 (foo_albumlist)
Album Art Panel 0.2.7.1 (foo_uie_albumart)
ZIP/GZIP reader 1.0 (foo_unpack)
Columns UI 0.3.4.1 (foo_ui_columns)
Last.fm Radio 0.2 (foo_lastfm_radio)
foobar2000 core 0.9.5.5 (Core)
Default User Interface 0.9.5 (foo_ui_std)
ReplayGain Scanner 2.0.8 (foo_rgscan)
Standard Input Array 1.0 (foo_input_std)
ELPlaylist 0.6.1.0(beta) (foo_uie_elplaylist)
File Operations 2.1 (foo_fileops)
Lyric Show Panel 0.3.3.2 [Aug 17 2008 - 15:30:33] (foo_uie_lyrics)
Masstagger 1.6 (foo_masstag)
Autoplaylist Manager 1.0 (foo_autoplaylist)
Highlight playing 0.1.0 (foo_highlightplaying)
APPCOMMAND multimedia key support 0.1 (foo_appcommand)
Navigator 0.63 (foo_navigator)
Stop On Next 0.0.2 (foo_son)
Playback Statistics 2.1.5 (foo_playcount)
Album Art Browser 0.0.5 [Jul 23 2007 - 08:27:55] (foo_cwbowron)
Standard DSP Array 1.0 (foo_dsp_std)
Quick Search Toolbar 2.8l (foo_uie_quicksearch)
Startup Actions 0.0.2 [Jul 23 2007 - 08:27:55] (foo_cwbowron)
Audio CD Writer 2.0.1 (foo_burninate)
COM Automation server 0.7 alpha 6 (foo_comserver2)
WSH Panel (uie) 0.7.2 (foo_uie_wsh_panel)
mslive 0.4.1 (Intel SSE) (foo_input_mslive)
Audioscrobbler 1.3.16 (foo_audioscrobbler)
Panel Stack Splitter 0.3.4(alpha) (foo_uie_panel_splitter)
Skip silence 0.1 (Intel SSE) (foo_dsp_skip_silence)
Monkey's Audio decoder 2.1.2 (foo_input_monkey)
Converter 1.1.2 (foo_converter)
Discogs Tagger 1.0 (foo_discogs)

Go to the top of the page
+Quote Post
nausea
post Sep 2 2008, 09:02
Post #15





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



Thanks for letting me know. See OP for fixed version.
Go to the top of the page
+Quote Post
Onkel Andy
post Sep 2 2008, 15:57
Post #16





Group: Members
Posts: 83
Joined: 28-July 08
Member No.: 56400



A really great plugin. I hope you can fix that tagging-problem as soon as possible. Because it's quite important to know what song you are listening to at the moment wink.gif

Thanks alot!
Go to the top of the page
+Quote Post
London Mike
post Sep 2 2008, 16:03
Post #17





Group: Members
Posts: 267
Joined: 17-June 08
From: Guess...
Member No.: 54439



Yes, this is potentially a great plug in, I have very high hopes for it smile.gif

Thanks cool.gif
Go to the top of the page
+Quote Post
joen
post Sep 2 2008, 16:07
Post #18





Group: Members
Posts: 93
Joined: 14-June 07
From: The Netherlands
Member No.: 44368



This is fantastic, I've been hoping for a plugin like this for a long time. Thanks a lot for sharing this! smile.gif

Oh btw, do you have any plans to implement the track ban and love features from LastFM in the future? That would make the awesomness grow even bigger biggrin.gif

This post has been edited by joen: Sep 2 2008, 17:57
Go to the top of the page
+Quote Post
Canar
post Sep 2 2008, 18:27
Post #19





Group: Super Moderator
Posts: 3361
Joined: 26-July 02
From: princegeorge.ca
Member No.: 2796



Awesome. Thanks. I've never really used this feature of Last.fm because I can't stand their crappy client.

I'd love this component even more if you'd implement foosion's suggestions!

Also, it'd be great if the tracks played got scrobbled. Right now it doesn't seem to.

This post has been edited by Canar: Sep 2 2008, 18:30


--------------------
You cannot ABX the rustling of jimmies.
No mouse? No problem.
Go to the top of the page
+Quote Post
eradumvelhinho
post Sep 3 2008, 17:20
Post #20





Group: Members
Posts: 101
Joined: 23-March 07
Member No.: 41759



QUOTE (Canar @ Sep 2 2008, 11:27) *
Awesome. Thanks. I've never really used this feature of Last.fm because I can't stand their crappy client.

I'd love this component even more if you'd implement foosion's suggestions!

Also, it'd be great if the tracks played got scrobbled. Right now it doesn't seem to.


+1.

Great job and great plugin. Many thanks
Go to the top of the page
+Quote Post
MusX
post Sep 4 2008, 23:06
Post #21





Group: Members
Posts: 135
Joined: 7-September 06
Member No.: 34900



it's great!!! I was looking for this for a very long time:
http://www.hydrogenaudio.org/forums/index....showtopic=54264
many thanks smile.gif

btw. does password stored encrypted? I just realized audioscrobbler plugin stores unencrypted password and report it, you plugin seems to encrypt it. Right? and how good this encrypion is? smile.gif

suggestion: auto normalize volume please, some tracks are much more louder than other, I think there is no other sollution cause files are streaming? it just can be normalized on the fly to play all files on same volume

This post has been edited by MusX: Sep 6 2008, 09:08


--------------------
my last.fm profile:
http://www.last.fm/user/MusX
Go to the top of the page
+Quote Post
nausea
post Sep 7 2008, 09:54
Post #22





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



Updated original post with info about version 0.3.

Regarding scrobbling tracks: I've had a look at the documentation for this and although I haven't tried it yet it looks like it may cause conflicts with other programs also retrieving sessions for the same user account (e.g. foo_audioscrobbler), causing both plug-ins to be repeatedly disconnected. This may not be a problem, but we'll see...

QUOTE (MusX @ Sep 4 2008, 22:06) *
btw. does password stored encrypted?

Yes, it's sent to Last.fm as a md5 hash, so that's how I store it.

Thanks for all the positive feedback!

This post has been edited by nausea: Sep 7 2008, 09:57
Go to the top of the page
+Quote Post
Hamallainen
post Sep 7 2008, 10:47
Post #23





Group: Members
Posts: 229
Joined: 1-April 04
Member No.: 13171



Thank you for your plugin.
This 0.3 version is working quite well for me
Go to the top of the page
+Quote Post
London Mike
post Sep 7 2008, 10:56
Post #24





Group: Members
Posts: 267
Joined: 17-June 08
From: Guess...
Member No.: 54439



Thanks, tags now working fine. Now how to display the album and artist images? All of the information is stored in the COMMENTS section of the Tag, for example...

CODE
image = http://userserve-ak.last.fm/serve/174s/8652249.jpg, lastfm:trackauth = 1a6e7, lastfm:albumId = 1428879, lastfm:artistId = 5705, http://www.last.fm/artistpage = http://www.last.fm/music/Rammstein, http://www.last.fm/albumpage = http://www.last.fm/music/Rammstein/Reise+Reise, http://www.last.fm/trackpage = http://www.last.fm/music/Rammstein/_/Ohne+dich, http://www.last.fm/buyTrackURL = http://www.last.fm/affiliate_sendto.php?link=catchdl&prod=1428879&rt=8&pos=9b944892b67cd2d9f7d9da1c934c5428&s=13, http://www.last.fm/buyAlbumURL = , http://www.last.fm/freeTrackURL = ,


And can the GENRE field be auto-filled too?

This is a truly great plug-in cool.gif

This post has been edited by London Mike: Sep 7 2008, 11:00
Go to the top of the page
+Quote Post
nausea
post Sep 7 2008, 12:25
Post #25





Group: Developer
Posts: 142
Joined: 4-March 03
Member No.: 5322



QUOTE (London Mike @ Sep 7 2008, 09:56) *
And can the GENRE field be auto-filled too?

No info on the genre is given by Last.fm, so no.

QUOTE (London Mike @ Sep 7 2008, 09:56) *
Now how to display the album and artist images?

I'll have to read up on those parts of the SDK, but if it's possible I'll try and get it done.

As you spotted I've dumped all the info given into the comment tag. Feel free to offer suggestions on what to do with it, the obvious being provide menu options to go to load those sites.
Go to the top of the page
+Quote Post

22 Pages V   1 2 3 > » 
Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



RSS Lo-Fi Version Time is now: 20th September 2014 - 17:11