helix engine last.fm streaming broken?

Christie Harris dangle.baby at gmail.com
Tue Dec 12 01:23:07 UTC 2006


When trying to play a last.fm stream with the helix engine, I get the following console spew, and no sound output. 
Amarok THINKS it's connected to the stream according to the context browser, but the stream doesn't play. 
Looking at my network usage, it is actually streaming, and if I click stop it stops "streaming".

As far as I can tell, all that's changed here is a recent ruby update (gentoo) from ruby-1.8.5-r3 to ruby-1.8.5_p2, 
however downgrading ruby doesn't help.
Changing engine to xine allows the stream to play (console output follows helix stuff).

Cheers, Christie


--using helix engine
amarok: [LastFm] AMAROK_PROXY: host 87.117.229.83
amarok: [LastFm] AMAROK_PROXY: 36057
amarok: [LastFm] AMAROK_PROXY: running with port: 80 and host: 87.117.229.83
amarok: [LastFm] AMAROK_PROXY: "GET /lastfm.mp3 HTTP/1.1\r\n"
amarok: [LastFm] AMAROK_PROXY: "GET http://87.117.229.83/last.mp3?Session=94157025952bc5f306623afc0e4849ed HTTP/1.1\r\nHost: 87.117.229.83:80\r\n\r\n"
amarok: [LastFm] AMAROK_PROXY: GET /lastfm.mp3 HTTP/1.1
amarok: [LastFm]  but sending GET http://87.117.229.83/last.mp3?Session=94157025952bc5f306623afc0e4849ed HTTP/1.1
amarok: [LastFm] Host: 87.117.229.83:80
amarok: [LastFm]
amarok: [LastFm] AMAROK_PROXY: COPY from amarok -> serv
amarok: [LastFm] AMAROK_PROXY: cp_to_empty_outward( income => #<TCPSocket:0xb7ebc730>, output => #<TCPSocket:0xb7ebc320>
amarok: [LastFm] AMAROK_PROXY: Accept: */*
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: User-Agent: RMA/1.0 (compatible; RealMedia)
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Icy-MetaData: 1
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Language: en-US
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: RegionData: 0
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: ClientID: Linux_2.6_10.0.0.0_play32_RN01_EN_586
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: GUID: 00000000-0000-0000-0000-000000000000
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: SupportsMaximumASMBandwidth: 1
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Connection: Keep-Alive
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Host: localhost:36057
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Accept-Language: en-US
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: Accept-Encoding: gzip
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY:
amarok: [LastFm] AMAROK_PROXY: data sent.
amarok: [LastFm] AMAROK_PROXY: COPY from serv -> amarok
amarok: [LastFm] AMAROK_PROXY: cp_to_empty_inward( income => #<TCPSocket:0xb7ebc320>, output => #<TCPSocket:0xb7ebc730>
amarok: [LastFm] AMAROK_PROXY: HTTP/1.0 200 OK
amarok: [LastFm] AMAROK_PROXY: Server: last.fm Streaming Server
amarok: [LastFm] AMAROK_PROXY: Content-type: audio/mpeg
amarok: [LastFm] AMAROK_PROXY: Cache-control: no-cache
amarok: [LastFm] AMAROK_PROXY: Pragma: no-cache
amarok: [LastFm] AMAROK_PROXY: Date: Tue, 12 Dec 2006 00:48:19 GMT
amarok: [LastFm] AMAROK_PROXY:
amarok: [LastFm] AMAROK_PROXY: Before cp_all()
amarok: [LastFm] AMAROK_PROXY: cp_all( income => #<TCPSocket:0xb7ebc320>, output => #<TCPSocket:0xb7ebc730>
amarok: [LastFm] AMAROK_PROXY: SYNC
amarok: BEGIN: void LastFm::WebService::metaDataFinished(int, bool)
amarok:   [LastFm] price=
shopname=
clickthrulink=
streaming=true
discovery=-1
station=Global Tag Radio: psytrance
artist=DNA
artist_url=http://www.last.fm/music/DNA
track=The Sign
track_url=http://www.last.fm/music/DNA/_/The+Sign
album=Pavilion
album_url=http://www.last.fm/music/DNA/Pavilion
albumcover_small=http://static.last.fm/depth/catalogue/noimage/cover_large.gif
albumcover_medium=http://static.last.fm/depth/catalogue/noimage/cover_large.gif
albumcover_large=http://static.last.fm/depth/catalogue/noimage/cover_med.gif
trackduration=435
radiomode=1
recordtoprofile=1
amarok:
amarok: END__: void LastFm::WebService::metaDataFinished(int, bool) - Took 0.005s
in engine context, key is <HTTPProxyAutoConfig>
in engine context, key is <ProxyAutoConfig>
in engine context, key is <HTTPProxySupport>
in engine context, key is <CookiesEnabled>
in engine context, key is <MaxBandwidth>
in engine context, key is <LoadTest>
in engine context, key is <EnforceMaxBandwidth>
amarok: [LastFm] AMAROK_PROXY: error from output.write, Broken pipe
amarok: [LastFm] AMAROK_PROXY: ["/usr/kde/3.5/bin/amarok_proxy.rb:109:in `write'", "/usr/kde/3.5/bin/amarok_proxy.rb:109:in `safe_write'", "/usr/kde/3.5/bin/amarok_proxy.rb:160:in `cp_all_inward'", "/usr/kde/3.5/bin/amarok_proxy.rb:158:in `loop'", "/usr/kde/3.5/bin/amarok_proxy.rb:158:in `cp_all_inward'", "/usr/kde/3.5/bin/amarok_proxy.rb:98:in `initialize'", "/usr/kde/3.5/bin/amarok_proxy.rb:224:in `new'", "/usr/kde/3.5/bin/amarok_proxy.rb:224"]
amarok: [LastFm] AMAROK_PROXY: error from o.write, unexpected break
amarok: [LastFm] AMAROK_PROXY: EOF Detected, reconnecting
amarok: [LastFm] AMAROK_PROXY: cp_all( income => #<TCPSocket:0xb7ebc320>, output => #<TCPSocket:0xb7ebb970>
amarok: BEGIN: void LastFm::WebService::fetchImageFinished(KIO::Job*)
amarok:   [Moodbar] Resetting moodbar: /Psytrance
amarok: BEGIN: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool)
amarok:     [Scrobbler] It's still the same track.
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: END__: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool) - Took 0.13s
amarok: END__: void LastFm::WebService::fetchImageFinished(KIO::Job*) - Took 0.15s
amarok: BEGIN: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint)
amarok: END__: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint) - Took 0.0053s
amarok:   [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 0

--using xine engine

amarok: BEGIN: void EngineController::play(const MetaBundle&, uint)
amarok:   [controller] Loading URL: lastfm://globaltags/Psytrance
amarok:   [controller] Connecting to protocol: lastfm
amarok: BEGIN: KURL LastFm::Controller::getNewProxy(QString)
amarok:     [LastFm] Initialising Web Service
amarok: BEGIN: bool LastFm::WebService::handshake(const QString&, const QString&)
amarok:       [LastFm] result: session=94157025952bc5f306623afc0e4849ed
stream_url=http://87.117.229.83:80/last.mp3?Session=94157025952bc5f306623afc0e4849ed
subscriber=0
framehack=0
base_url=ws.audioscrobbler.com
base_path=/radio
amarok:       [LastFm] Proxy server using port: 39224
amarok: END__: bool LastFm::WebService::handshake(const QString&, const QString&) - Took 3.5s
amarok:     [LastFm] Changing station:lastfm://globaltags/Psytrance
amarok: END__: KURL LastFm::Controller::getNewProxy(QString) - Took 4.4s
amarok:   [controller] New URL is http://localhost:39224/lastfm.mp3
amarok: BEGIN: virtual bool XineEngine::load(const KURL&, bool)
amarok:     [xine-engine] Before xine_open() *****
amarok:     [xine-engine] After xine_open() *****
amarok: END__: virtual bool XineEngine::load(const KURL&, bool) - Took 1.2s
amarok: BEGIN: virtual bool XineEngine::play(uint)
amarok: BEGIN: void EngineSubject::stateChangedNotify(Engine::State)
amarok:       [virtual void Amarok::StatusBar::engineStateChanged(Engine::State, Engine::State)] Line: 147
amarok: BEGIN: virtual void ContextBrowser::engineStateChanged(Engine::State, Engine::State)
amarok: END__: virtual void ContextBrowser::engineStateChanged(Engine::State, Engine::State) - Took 0.0037s
amarok: END__: void EngineSubject::stateChangedNotify(Engine::State) - Took 0.0087s
amarok: END__: virtual bool XineEngine::play(uint) - Took 0.0097s
amarok: BEGIN: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool)
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: END__: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool) - Took 0.31s
amarok: END__: void EngineController::play(const MetaBundle&, uint) - Took 6s
amarok:   [LastFm] AMAROK_PROXY: host 87.117.229.83
amarok:   [LastFm] AMAROK_PROXY: 39224
amarok:   [LastFm] AMAROK_PROXY: running with port: 80 and host: 87.117.229.83
amarok:   [LastFm] AMAROK_PROXY: "GET /lastfm.mp3 HTTP/1.0\r\n"
amarok:   [LastFm] AMAROK_PROXY: "GET http://87.117.229.83/last.mp3?Session=94157025952bc5f306623afc0e4849ed HTTP/1.1\r\nHost: 87.117.229.83:80\r\n\r\n"
amarok:   [LastFm] AMAROK_PROXY: GET /lastfm.mp3 HTTP/1.0
amarok:   [LastFm]  but sending GET http://87.117.229.83/last.mp3?Session=94157025952bc5f306623afc0e4849ed HTTP/1.1
amarok:   [LastFm] Host: 87.117.229.83:80
amarok:   [LastFm]
amarok:   [LastFm] AMAROK_PROXY: COPY from amarok -> serv
amarok:   [LastFm] AMAROK_PROXY: cp_to_empty_outward( income => #<TCPSocket:0xb7e1f764>, output => #<TCPSocket:0xb7e1f354>
amarok:   [LastFm] AMAROK_PROXY: Host: localhost:39224
amarok:   [LastFm] AMAROK_PROXY: data sent.
amarok:   [LastFm] AMAROK_PROXY: Found xine user agent version 1.1.2
amarok:   [LastFm] AMAROK_PROXY: User-Agent: xine/1.1.2
amarok:   [LastFm] AMAROK_PROXY: data sent.
amarok:   [LastFm] AMAROK_PROXY: Accept: */*
amarok:   [LastFm] AMAROK_PROXY: data sent.
amarok:   [LastFm] AMAROK_PROXY: Icy-MetaData: 1
amarok:   [LastFm] AMAROK_PROXY: data sent.
amarok:   [LastFm] AMAROK_PROXY:
amarok:   [LastFm] AMAROK_PROXY: data sent.
amarok:   [LastFm] AMAROK_PROXY: COPY from serv -> amarok
amarok: BEGIN: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint)
amarok:     [xine-engine] Metadata received.
amarok: BEGIN: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool)
amarok:       [Scrobbler] It's still the same track.
amarok: END__: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool) - Took 0.14s
amarok:     [LastFm] AMAROK_PROXY: cp_to_empty_inward( income => #<TCPSocket:0xb7e1f354>, output => #<TCPSocket:0xb7e1f764>
amarok:     [LastFm] AMAROK_PROXY: HTTP/1.0 200 OK
amarok:     [LastFm] AMAROK_PROXY: Server: last.fm Streaming Server
amarok:     [LastFm] AMAROK_PROXY: Content-type: audio/mpeg
amarok:     [LastFm] AMAROK_PROXY: Cache-control: no-cache
amarok:     [LastFm] AMAROK_PROXY: Pragma: no-cache
amarok:     [LastFm] AMAROK_PROXY: Date: Tue, 12 Dec 2006 01:20:01 GMT
amarok:     [LastFm] AMAROK_PROXY:
amarok:     [LastFm] AMAROK_PROXY: Before cp_all()
amarok:     [LastFm] AMAROK_PROXY: cp_all( income => #<TCPSocket:0xb7e1f354>, output => #<TCPSocket:0xb7e1f764>
amarok:     [LastFm] AMAROK_PROXY: Using buffer fill workaround.
amarok:     [LastFm] AMAROK_PROXY: SYNC
amarok: END__: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint) - Took 0.78s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 1.5s
amarok: [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 1
amarok: BEGIN: void LastFm::WebService::metaDataFinished(int, bool)
amarok:   [LastFm] price=
shopname=
clickthrulink=
streaming=true
discovery=-1
station=Global Tag Radio: psytrance
artist=Alien Project
artist_url=http://www.last.fm/music/Alien+Project
track=Who Has The Marijuana (Quadra
track_url=http://www.last.fm/music/Alien+Project/_/Who+Has+The+Marijuana+%28Quadra
album=Delicious
album_url=http://www.last.fm/music/Various+Artists/Delicious
albumcover_small=http://static.last.fm/depth/catalogue/noimage/cover_large.gif
albumcover_medium=http://static.last.fm/depth/catalogue/noimage/cover_large.gif
albumcover_large=http://static.last.fm/depth/catalogue/noimage/cover_med.gif
trackduration=412
radiomode=1
recordtoprofile=1
amarok:
amarok: END__: void LastFm::WebService::metaDataFinished(int, bool) - Took 0.0045s
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: BEGIN: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint)
amarok: END__: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint) - Took 0.0026s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.085s
amarok: [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 0
amarok: [Scrobbler] Couldn't read similar artists response
amarok: BEGIN: void LastFm::WebService::fetchImageFinished(KIO::Job*)
amarok:   [Moodbar] Resetting moodbar: /Psytrance
amarok: BEGIN: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool)
amarok:     [Scrobbler] It's still the same track.
amarok: BEGIN: virtual void ThreadWeaver::Thread::run()
amarok: END__: void EngineSubject::newMetaDataNotify(const MetaBundle&, bool) - Took 0.22s
amarok: END__: void LastFm::WebService::fetchImageFinished(KIO::Job*) - Took 0.25s
amarok: BEGIN: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint)
amarok: END__: void CurrentTrackJob::showArtistsAlbums(const QString&, uint, uint) - Took 0.31s
amarok: END__: virtual void ThreadWeaver::Thread::run() - Took 0.97s
amarok: [ThreadWeaver] Job completed: CurrentTrackJob. Jobs pending: 0



More information about the Amarok mailing list