fuzeman / Spotify2.bundle

Spotify music streaming for Plex (all platforms)
77 stars 45 forks source link

Searching doesn't always work #13

Open JeppeTh opened 10 years ago

JeppeTh commented 10 years ago

https://forums.plex.tv/index.php/topic/107169-rel-spotify2/page-2#entry636557

Sometimes I instead get "print 'unable to find node for "%s"' % key IOError: [Errno 9] Bad file descriptor"

2014-04-26 21:29:11,890 (5e4) : DEBUG (runtime:717) - Handling request GET /music/spotify/search?query=before%20the%20dawn 2014-04-26 21:29:11,890 (5e4) : DEBUG (runtime:814) - Found route matching /music/spotify/search 2014-04-26 21:29:11,890 (5e4) : INFO (logkit:16) - Search query: "before the dawn", type: all, limit: 7, plain: False 2014-04-26 21:29:11,890 (5e4) : DEBUG (logkit:13) - sent {"args":["before the dawn",15,7,0],"name":"sp/search","id":"21"} 2014-04-26 21:29:12,030 (1560) : DEBUG (logkit:13) - recv {"id":21,"result":"<?xml version='1.0' encoding='utf-8>"} 2014-04-26 21:29:12,108 (5e4) : CRITICAL (core:561) - Exception (most recent call last): File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\components\runtime.py", line 843, in handle_request result = f(d) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Codeinit.py", line 59, in search return sp_search.run(kwargs) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\code\sandbox.py", line 19, in _apply return apply(f, args, kwargs) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Code\search.py", line 95, in run media_append('Playlists', self.add_playlist, 'playlists') File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Code\search.py", line 70, in media_append items = list(getattr(result, 'get%s' % key)()) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Libraries\Shared\spotify_web\search.py", line 105, in getObjects yield self.parse(obj_type, item) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Libraries\Shared\spotify_web\search.py", line 95, in parse return Playlist.parse(item) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Libraries\Shared\spotify_web\search.py", line 303, in parse image_uri = cls.get_value(node, 'image') File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Spotify2.bundle\Contents\Libraries\Shared\spotify_web\search.py", line 123, in get_value print 'unable to find node for "%s"' % key IOError: [Errno 9] Bad file descriptor

fuzeman commented 10 years ago

Strange error, pretty sure I know what's happening here though.

Will include a fix for this in the next release.

fuzeman commented 10 years ago

This issue shouldn't exist in the beta release.

JeppeTh commented 10 years ago

It does: "UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 135: invalid start byte"...

2014-05-14 10:22:22,530 (1a30) : DEBUG (logkit:13) - [spotify.components.connection] send encoded: '{"args":["before the dawn",15,7,0],"name":"sp/search","id":"7"}' 2014-05-14 10:22:22,780 (74c) : DEBUG (logkit:13) - [pyemitter] emit(event: 'message', args: (), kwargs: {'message': '{"id":7,"result":"<?xml version=\'1.0\' encoding=\'utf-8\'?>11de1c0f49967a4b72a73adedc76f79fcfBefore The Dawne0aea1bd2a57c5e5c203346d5b8415ee0dc73f8e300300ae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.31<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,MF\"/>648c1a5c02462c43eea7c058680bb74162Rise Of The Phoenixde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbumf0ff51767849be967d4205ee5a97c0fdf15d132520645135c788b6665234c8768cf1e9bfdcfe39687c23ba0ca9ce3dd99e9210645842312f2655fa6a0.43<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CY,CZ,DE,DK,GR,HU,IT,MT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"upc\" id=\"727361287863\"/>cadf2094d1eb446887565ceee4cbfe1dDeathstar Risingde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum0b441dabfa2127fc2ac7f7c3fd5ca315a6da92f2fd994c47b0aa4388638466056643971b24c5dd4ca44cb3b79642c72538fd1452655a18babffe408a0.42<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CZ,DE,DK,GR,HU,IT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"upc\" id=\"727361271565\"/>584d392117f24781b48205feb4522ce3Deadlightde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbume0aea1bd2a57c5e5c203346d5b8415ee0dc73f8eae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.49<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BD,BL,BM,BN,BT,CA,CN,FM,GL,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,VA,VN\"/><external-id type=\"upc\" id=\"05099923560055\"/>eea49cfc347e4a96acee145f6e1739f9Soundscape Of Silencede1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.48<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"upc\" id=\"05099926538259\"/>d71ec61c79b54a93a2fc0cadae7ea273The Ghostde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum10d484798a41e4966e04c8e9fb7eb69bb9634c57a10f2b4eb433044cddfac64b41a708fc288fa062c303e9a4229a44eabf5e0d652224baf8cd9835ff0.42<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,BQ,CW,ME,MF,RS,SX\"/><external-id type=\"upc\" id=\"885686060025\"/>f0f67e12d38b4e82b6d1ed9c51e9d8d3Faithlessde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnsinglebfa5388bf48d021949dd16427908924fb009d993b72f4909ca6ed34655092a274f2f535d5e3112616cccf518e1c83f4c5080b6418fdce7bbfa73b5340.38<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,AS,BD,BL,BM,BN,BT,CA,CN,FM,GL,GU,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MP,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,UM,US,VA,VI,VN\"/><external-id type=\"upc\" id=\"05099923566453\"/>83ef7f0fd8c4421ab3e6f7c7c87c7ce0My Darknessde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum0ee58f3b476c0271c77db7409a09eeb9d7c0ed3658312b1c15ef420a5cb1bd4d111af3988bcf369e501910fbdd95bdf8de80731610bc613044609a5f0.37<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,BQ,CW,ME,MF,RS,SX\"/><external-id type=\"upc\" id=\"885686060018\"/>11174465f4ebf57d4ed5b96d52851a0b2adcDeadsongde1c0f49967a4b72a73adedc76f79fcfBefore The DawnDeadlight584d392117f24781b48205feb4522ce3Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20076203053<file id=\"96a210d5f8b991843f9b3bcc1c356f362889794e\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"cc9e9d97259fa130bf669532609d864810f232b0\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"fa23e6c224ad71ceb394311b3bf7b3148631f7b0\" format=\"Ogg Vorbis,96000,1,32,4\"/>e0aea1bd2a57c5e5c203346d5b8415ee0dc73f8eae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.44<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BD,BL,BM,BN,BT,CA,CN,FM,GL,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,VA,VN\"/><external-id type=\"isrc\" id=\"FI3SY0700006\"/>e18344f15737481d8bede7244ba31c1cDying Sunde1c0f49967a4b72a73adedc76f79fcfBefore The DawnSoundscape Of Silenceeea49cfc347e4a96acee145f6e1739f9Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20081191826<file id=\"0654bb983d1ab210155393127a6d4ceecac51b0c\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"a4b629842d4424b74d73dd42c98550e47a99f99c\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"485603af7265832a5023576e275578ec114e2f83\" format=\"Ogg Vorbis,96000,1,32,4\"/>2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.41<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"isrc\" id=\"FI3SY0800075\"/>4614fba641894f5f9cff583aef675b74Before the Dawn518a0af0215e4ca2a592efd01f7f4e44Judas PriestSingle Cutse5249acd0c474388b51161af3fb487c1Judas Priest518a0af0215e4ca2a592efd01f7f4e4420113201733<file id=\"69baaa312a731cd2261e9ac45b5ca0b0cd3cf5d2\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"9fbf1efa92528e95e6104fdcbbb012c2145b0aa1\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"47f736f2d667e48b3ee05305516d4c38a7c5e87d\" format=\"Ogg Vorbis,96000,1,32,4\"/>dfff1edb4ba05b8a4adfdca308d752b42dbfb8d5ee93f2429e1ca1f01ed1a3ececcfe0c8eef61b468c6c2468acb61143c1192db803b79ec52151f8260.31<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AS,AW,AX,BL,BQ,BV,CC,CW,CX,GG,GS,HM,IM,JE,JP,MF,NF,PR,SJ,SX,UM,US,VI\"/><external-id type=\"isrc\" id=\"GBBBN0102368\"/>62651530883a48f2b4e0e7bcd45c65b1Faithlessde1c0f49967a4b72a73adedc76f79fcfBefore The DawnFaithlessf0f67e12d38b4e82b6d1ed9c51e9d8d3Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20071197093<file id=\"3439f3989920e2ce259047de7a074ea7ca519dfa\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"a8d4263a845964c1bbf190e3b939cda5b7fc7c3a\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"689d92b11c3bdffef5379a05786df0a6ecdf4933\" format=\"Ogg Vorbis,96000,1,32,4\"/>bfa5388bf48d021949dd16427908924fb009d993b72f4909ca6ed34655092a274f2f535d5e3112616cccf518e1c83f4c5080b6418fdce7bbfa73b5340.37<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,AS,BD,BL,BM,BN,BT,CA,CN,FM,GL,GU,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MP,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,UM,US,VA,VI,VN\"/><external-id type=\"isrc\" id=\"FI3SY0700002\"/>3ba21233e6344e4fb586f798daccb71cDeathstarde1c0f49967a4b72a73adedc76f79fcfBefore The DawnDeathstar Risingcadf2094d1eb446887565ceee4cbfe1dBefore The Dawnde1c0f49967a4b72a73adedc76f79fcf20113211053<file id=\"e0b50765f4c04fa613b69cd385574deb9f398eb0\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"2726e7a8b119af9c7a85d176c93a2baf1c4a5bab\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"618bacbdce0f8f8f7aed2394e3724c0fcebae316\" format=\"Ogg Vorbis,96000,1,32,4\"/>0b441dabfa2127fc2ac7f7c3fd5ca315a6da92f2fd994c47b0aa4388638466056643971b24c5dd4ca44cb3b79642c72538fd1452655a18babffe408a0.33<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CZ,DE,DK,GR,HU,IT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"isrc\" id=\"FI3SY1000014\"/>170d1069460049e3a98d0dd2ac0d343ePhoenix Risingde1c0f49967a4b72a73adedc76f79fcfBefore The DawnRise Of The Phoenix8c1a5c02462c43eea7c058680bb74162Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20123282986<file id=\"e9c335a40343e4f10ee5a1c6076d743367ea5a12\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"f76125833ca7ac26efddc3f6c7b43ba5cdf6cb27\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"b2bf62b71a0b148421db1a9d6f0dd690746b25f4\" format=\"Ogg Vorbis,96000,1,32,4\"/>f0ff51767849be967d4205ee5a97c0fdf15d132520645135c788b6665234c8768cf1e9bfdcfe39687c23ba0ca9ce3dd99e9210645842312f2655fa6a0.31<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CY,CZ,DE,DK,GR,HU,IT,MT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"isrc\" id=\"FI3SY1200003\"/>f3a634f722084daaaf1a7c6738dac599Monstersde1c0f49967a4b72a73adedc76f79fcfBefore The DawnSoundscape Of Silenceeea49cfc347e4a96acee145f6e1739f9Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20088290800<file id=\"e8d1b069d6ce03d95d1a5e79c4dc33af7b8d846e\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"778c256837b6f5b12f04beb2d1381359f7487b3e\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"717528d2f0f2a3cb31fed086e721fc6331430205\" format=\"Ogg Vorbis,96000,1,32,4\"/>2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.36<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"isrc\" id=\"FI3SY0800080\"/>11spotify:user:asaric1994:playlist:0mNJ29IqPmA03NKYtCTErjBefore the Dawnspotify:mosaic:d586addf2450b2c9480397e1176393b371ea7480:2ad0a206dd23de786c971328795bbfbb3ccae105:8eaf16998617aea82ad9c79705a8f650b3d431f8:655ca18730ba79457d2db6e32224b3c74b890c58spotify:mosaic:392300e8bfbb3c3bfa2f5dbbcccaab3c4990a0fd:3757becb90040176ed799186a3208ba4a89c892f:a6d5f28a92a3491c1d7237e387bc05df196a1cd4:17df99c6b4ae7c690899b04eb2c0f6f329de2543spotify:mosaic:e1a2405ed5f06e61b74037f8910b91e8678d522e:35a162a947e905a997051acc881a87d277d363cb:28c495bac7b5b1daa8a321aabdb985692db2a897:45c388188db33a6b78c96cd6781089604664bda7spotify:user:musen27:playlist:5J7W6iDUc9bAN8VdmG52P9Before the dawnspotify:mosaic:10d484798a41e4966e04c8e9fb7eb69bb9634c57:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36spotify:mosaic:a10f2b4eb433044cddfac64b41a708fc288fa062:6a60abbbba19563f688ad0fdcf080d577d9bb330:6a60abbbba19563f688ad0fdcf080d577d9bb330:58312b1c15ef420a5cb1bd4d111af3988bcf369espotify:mosaic:c303e9a4229a44eabf5e0d652224baf8cd9835ff:73723d97144bcccc344a65a6d3856e260571ceba:73723d97144bcccc344a65a6d3856e260571ceba:501910fbdd95bdf8de80731610bc613044609a5fspotify:user:gliddy:playlist:5lepGQa2z2Enwj4ygWmDJrBefore the dawnspotify:mosaic:f0ff51767849be967d4205ee5a97c0fdf15d1325:10d484798a41e4966e04c8e9fb7eb69bb9634c57:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:f0ff51767849be967d4205ee5a97c0fdf15d1325spotify:mosaic:20645135c788b6665234c8768cf1e9bfdcfe3968:a10f2b4eb433044cddfac64b41a708fc288fa062:6a60abbbba19563f688ad0fdcf080d577d9bb330:20645135c788b6665234c8768cf1e9bfdcfe3968spotify:mosaic:7c23ba0ca9ce3dd99e9210645842312f2655fa6a:c303e9a4229a44eabf5e0d652224baf8cd9835ff:73723d97144bcccc344a65a6d3856e260571ceba:7c23ba0ca9ce3dd99e9210645842312f2655fa6aspotify:user:krlin02:playlist:2nJNmwFwTWuWsoAh5AcmaqBefore The Dawn \xe2\x80\x93 My Darknessspotify:mosaic:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36spotify:mosaic:58312b1c15ef420a5cb1bd4d111af3988bcf369e:58312b1c15ef420a5cb1bd4d111af3988bcf369e:58312b1c15ef420a5cb1bd4d111af3988bcf369e:58312b1c15ef420a5cb1bd4d111af3988bcf369espotify:mosaic:501910fbdd95bdf8de80731610bc613044609a5f:501910fbdd95bdf8de80731610bc613044609a5f:501910fbdd95bdf8de80731610bc613044609a5f:501910fbdd95bdf8de80731610bc613044609a5fspotify:user:seamusseamus:playlist:2sAAJa7eg3SsvAhM2OaNQaBefore the Dawn Heals Usspotify:mosaic:4cce673eae34ab0fd789ca9d98ab302881c3f56d:0dc444b00d4b973e8fa731b7a45b3e90148bdaf8:71204fa1537ed64ee3ffb258d8bad26a07e6b312:8c416a97347a3de6ed508e5a1d079a62a506d566spotify:mosaic:17a236916d87dc2d3df6476d07316b6a0bc843d0:e94f7febb8d2acd1a82b547d4b850ab1cb7e4666:8749651f7bde2df7732d5d96c020c57726d0158d:8b8cd1d14fc512f1bb51701073c5cfb564466f30spotify:mosaic:79b5b6e62dbbd15dd280d7bfca74eeafc0d08865:3ed7d066f3c985840f3813b1d9e98e88193b2135:dea863f92a10e10220a5cc1084d926d006c98ae6:0379ba8ac1f5338189dd8b5be263e5cf03adb4e1spotify:user:verenicemurillo:playlist:6AhA6iYqlNVSuygszTdZKyDarkerst before the dawnspotify:mosaic:dfddbfbe833050cc3482331e889656f2e40b2b10:1b30ac8739596f10751e4f312d304eb4927a496d:1fa64b7873864cb6d12207e16f9e0338c672ed50:c2da7a4125acfc1fd223a8409815d855ddcd7526spotify:mosaic:af11a8812ddd9579704d25d57226b4b1eee40646:f768c698de602de537f98f3ce9571b941df23460:74d9640334772d179684ed094c8a376f511aa667:25644806c8d1230ae85df23878dc7e34e91139daspotify:mosaic:be58690fead64e839b093c23a408ad38a8d29452:d3edddb29e31297b54c85f3db5d47bf6a8b3d69a:b730753f389d7fc17a41031e3387c756a7f95078:6b2ac76e90f997725bc66749e9c1666b86b1b19fspotify:user:courtpancakes:playlist:6hcMNkfN7X2Y8tMyvW9SXObefore the dawnspotify:mosaic:bef52a6debb32f1d6f08f9d1c6c17ca972de23e1:761c2985458e6277993cf5d13837dc4940dcef6f:9fb3183033ce7d1be75059807e39e5de4f7ca0f9:c899df4d636381a978159b2d8b906d093d9e02adspotify:mosaic:95b404b8abd3cf1745ae1e6f157d40bfecfaf68a:b9edf5114a7a344ea4bd204adb03113439e1e903:822d6ba083675186e621bdd6ec325dc6752b37fb:aed2a1c79074379c3223df21d3c7e72818f47f29spotify:mosaic:eddd8a73c233ff65c2791c321c1502b46bd424b4:eceb4f00405742b16139cdd8e2d70ca6fa783b97:77c2d1c6812ccc01dc4f8fbc96912573acf1ffa0:3cfdcd60bf00d80b6c99e8d44d0a8df78c3ba1d2"}'}) 2014-05-14 10:22:22,905 (13ac) : DEBUG (logkit:13) - [pyemitter] emit(event: 'success', args: (<spotify.core.search_response.SearchResponse object at 0x03EBB170>,), kwargs: {}) 2014-05-14 10:22:23,421 (1a30) : CRITICAL (core:561) - Exception when constructing response (most recent call last): File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\components\runtime.py", line 945, in construct_response el = result._to_xml() File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 613, in _to_xml el = Framework.modelling.objects.ModelInterfaceObjectContainer._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 382, in _to_xml root = Container._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 139, in _to_xml self._append_children(root, self._objects) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 145, in _append_children el = obj._to_xml() File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 79, in _to_xml el = ObjectWithHTTPHeaders._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 58, in _to_xml el = Framework.modelling.objects.Object._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 84, in _to_xml self._set_attribute(root, name, self._attributes[name]) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 73, in _set_attribute self._core.log_exception("Exception setting attribute '%s' of object %s to %s (type: %s)", name, str(self), str(value), str(type(value))) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 561, in log_exception self.log.critical(self.traceback(fmt % tuple(args))) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1194, in critical self._log(CRITICAL, msg, args, kwargs) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1268, in _log self.handle(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1278, in handle self.callHandlers(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1318, in callHandlers hdlr.handle(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 749, in handle self.emit(record) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 88, in emit self._core.sandbox.context.log.append(self.format(record)) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 724, in format return fmt.format(record) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 76, in format record.dict[key] = uni(record.dict**[key]) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\subsystem\ospathfix.py", line 51, in uni return unicode(s.decode('utf-8')) File "C:\Program Files\Plex\Plex Media Server\python27.zip\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 135: invalid start byte

fuzeman commented 10 years ago

Couldn't find what is causing unicode/utf-8 to fail and wasn't able to reproduce the issue on a Windows XP VM (this issue seems to be Windows XP/NT specific).

I've decided to just normalize everything to ASCII instead (removing all the use of unicode/utf-8), could you grab the development version (develop.zip) and let me know if this fixes searching.

JeppeTh commented 10 years ago

Is develop.zip ready for that? SInce when tried I still get UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 135: invalid start byte

fuzeman commented 10 years ago

Just noticed there were some places where unicode was still used, try the latest develop version now.

If you still find it breaking, let me know which view it breaks on (search results, artist, album, playlist) and send the full error stack-trace (like what you did with the original issue).

JeppeTh commented 10 years ago

I still get the same issue searching for e.g. "Before the dawn". I can try to collect logs later on...

JeppeTh commented 10 years ago

Heres the log

2014-05-23 13:52:41,546 (1730) : INFO (logkit:16) - Search query: "before the dawn", type: all, count: 7, plain: False 2014-05-23 13:52:41,546 (1730) : DEBUG (logkit:13) - [pyemitter] on(events: ['success'], func: <function on_search at 0x03EF8E70>) 2014-05-23 13:52:41,562 (1730) : DEBUG (logkit:13) - [spotify.components.connection] send encoded: '{"args":["before the dawn",15,7,0],"name":"sp/search","id":"11"}' 2014-05-23 13:52:41,717 (12b0) : DEBUG (logkit:13) - [pyemitter] emit(event: 'message', args: (), kwargs: {'message': '{"id":11,"result":"<?xml version=\'1.0\' encoding=\'utf-8\'?>11de1c0f49967a4b72a73adedc76f79fcfBefore The Dawne0aea1bd2a57c5e5c203346d5b8415ee0dc73f8e300300ae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.31<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,MF\"/>678c1a5c02462c43eea7c058680bb74162Rise Of The Phoenixde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbumf0ff51767849be967d4205ee5a97c0fdf15d132520645135c788b6665234c8768cf1e9bfdcfe39687c23ba0ca9ce3dd99e9210645842312f2655fa6a0.43<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CY,CZ,DE,DK,GR,HU,IT,MT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"upc\" id=\"727361287863\"/>cadf2094d1eb446887565ceee4cbfe1dDeathstar Risingde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum0b441dabfa2127fc2ac7f7c3fd5ca315a6da92f2fd994c47b0aa4388638466056643971b24c5dd4ca44cb3b79642c72538fd1452655a18babffe408a0.42<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CZ,DE,DK,GR,HU,IT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"upc\" id=\"727361271565\"/>584d392117f24781b48205feb4522ce3Deadlightde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbume0aea1bd2a57c5e5c203346d5b8415ee0dc73f8eae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.49<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BD,BL,BM,BN,BT,CA,CN,FM,GL,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,VA,VN\"/><external-id type=\"upc\" id=\"05099923560055\"/>eea49cfc347e4a96acee145f6e1739f9Soundscape Of Silencede1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.48<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"upc\" id=\"05099926538259\"/>d71ec61c79b54a93a2fc0cadae7ea273The Ghostde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum10d484798a41e4966e04c8e9fb7eb69bb9634c57a10f2b4eb433044cddfac64b41a708fc288fa062c303e9a4229a44eabf5e0d652224baf8cd9835ff0.41<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,BQ,CW,ME,MF,RS,SX\"/><external-id type=\"upc\" id=\"885686060025\"/>f0f67e12d38b4e82b6d1ed9c51e9d8d3Faithlessde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnsinglebfa5388bf48d021949dd16427908924fb009d993b72f4909ca6ed34655092a274f2f535d5e3112616cccf518e1c83f4c5080b6418fdce7bbfa73b5340.38<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,AS,BD,BL,BM,BN,BT,CA,CN,FM,GL,GU,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MP,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,UM,US,VA,VI,VN\"/><external-id type=\"upc\" id=\"05099923566453\"/>83ef7f0fd8c4421ab3e6f7c7c87c7ce0My Darknessde1c0f49967a4b72a73adedc76f79fcfBefore The Dawnalbum0ee58f3b476c0271c77db7409a09eeb9d7c0ed3658312b1c15ef420a5cb1bd4d111af3988bcf369e501910fbdd95bdf8de80731610bc613044609a5f0.37<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"BL,BQ,CW,ME,MF,RS,SX\"/><external-id type=\"upc\" id=\"885686060018\"/>11484465f4ebf57d4ed5b96d52851a0b2adcDeadsongde1c0f49967a4b72a73adedc76f79fcfBefore The DawnDeadlight584d392117f24781b48205feb4522ce3Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20076203053<file id=\"96a210d5f8b991843f9b3bcc1c356f362889794e\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"cc9e9d97259fa130bf669532609d864810f232b0\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"fa23e6c224ad71ceb394311b3bf7b3148631f7b0\" format=\"Ogg Vorbis,96000,1,32,4\"/>e0aea1bd2a57c5e5c203346d5b8415ee0dc73f8eae86e6c393a67a3819a71541f6c2221e544b2d2b50accf8f675e92314173451d470f44a9a9e9debf0.44<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BD,BL,BM,BN,BT,CA,CN,FM,GL,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,VA,VN\"/><external-id type=\"isrc\" id=\"FI3SY0700006\"/>e18344f15737481d8bede7244ba31c1cDying Sunde1c0f49967a4b72a73adedc76f79fcfBefore The DawnSoundscape Of Silenceeea49cfc347e4a96acee145f6e1739f9Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20081191826<file id=\"0654bb983d1ab210155393127a6d4ceecac51b0c\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"a4b629842d4424b74d73dd42c98550e47a99f99c\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"485603af7265832a5023576e275578ec114e2f83\" format=\"Ogg Vorbis,96000,1,32,4\"/>2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.41<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"isrc\" id=\"FI3SY0800075\"/>4614fba641894f5f9cff583aef675b74Before the Dawn518a0af0215e4ca2a592efd01f7f4e44Judas PriestSingle Cutse5249acd0c474388b51161af3fb487c1Judas Priest518a0af0215e4ca2a592efd01f7f4e4420113201733<file id=\"69baaa312a731cd2261e9ac45b5ca0b0cd3cf5d2\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"9fbf1efa92528e95e6104fdcbbb012c2145b0aa1\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"47f736f2d667e48b3ee05305516d4c38a7c5e87d\" format=\"Ogg Vorbis,96000,1,32,4\"/>dfff1edb4ba05b8a4adfdca308d752b42dbfb8d5ee93f2429e1ca1f01ed1a3ececcfe0c8eef61b468c6c2468acb61143c1192db803b79ec52151f8260.31<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AS,AW,AX,BL,BQ,BV,CC,CW,CX,GG,GS,HM,IM,JE,JP,MF,NF,PR,SJ,SX,UM,US,VI\"/><external-id type=\"isrc\" id=\"GBBBN0102368\"/>62651530883a48f2b4e0e7bcd45c65b1Faithlessde1c0f49967a4b72a73adedc76f79fcfBefore The DawnFaithlessf0f67e12d38b4e82b6d1ed9c51e9d8d3Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20071197093<file id=\"3439f3989920e2ce259047de7a074ea7ca519dfa\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"a8d4263a845964c1bbf190e3b939cda5b7fc7c3a\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"689d92b11c3bdffef5379a05786df0a6ecdf4933\" format=\"Ogg Vorbis,96000,1,32,4\"/>bfa5388bf48d021949dd16427908924fb009d993b72f4909ca6ed34655092a274f2f535d5e3112616cccf518e1c83f4c5080b6418fdce7bbfa73b5340.37<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,AS,BD,BL,BM,BN,BT,CA,CN,FM,GL,GU,HK,ID,IN,JP,KG,KH,KP,KR,LA,LK,MF,MK,MM,MN,MO,MP,MV,MY,NC,NP,NR,PG,PH,PK,PM,PS,SB,SG,TH,TW,UM,US,VA,VI,VN\"/><external-id type=\"isrc\" id=\"FI3SY0700002\"/>3ba21233e6344e4fb586f798daccb71cDeathstarde1c0f49967a4b72a73adedc76f79fcfBefore The DawnDeathstar Risingcadf2094d1eb446887565ceee4cbfe1dBefore The Dawnde1c0f49967a4b72a73adedc76f79fcf20113211053<file id=\"e0b50765f4c04fa613b69cd385574deb9f398eb0\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"2726e7a8b119af9c7a85d176c93a2baf1c4a5bab\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"618bacbdce0f8f8f7aed2394e3724c0fcebae316\" format=\"Ogg Vorbis,96000,1,32,4\"/>0b441dabfa2127fc2ac7f7c3fd5ca315a6da92f2fd994c47b0aa4388638466056643971b24c5dd4ca44cb3b79642c72538fd1452655a18babffe408a0.33<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CZ,DE,DK,GR,HU,IT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"isrc\" id=\"FI3SY1000014\"/>170d1069460049e3a98d0dd2ac0d343ePhoenix Risingde1c0f49967a4b72a73adedc76f79fcfBefore The DawnRise Of The Phoenix8c1a5c02462c43eea7c058680bb74162Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20123282986<file id=\"e9c335a40343e4f10ee5a1c6076d743367ea5a12\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"f76125833ca7ac26efddc3f6c7b43ba5cdf6cb27\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"b2bf62b71a0b148421db1a9d6f0dd690746b25f4\" format=\"Ogg Vorbis,96000,1,32,4\"/>f0ff51767849be967d4205ee5a97c0fdf15d132520645135c788b6665234c8768cf1e9bfdcfe39687c23ba0ca9ce3dd99e9210645842312f2655fa6a0.3<restriction catalogues=\"free,daypass,premium,shuffle\" allowed=\"AT,CH,CY,CZ,DE,DK,GR,HU,IT,MT,NO,PL,SE\"/><restriction catalogues=\"commercial\" allowed=\"\"/><external-id type=\"isrc\" id=\"FI3SY1200003\"/>f3a634f722084daaaf1a7c6738dac599Monstersde1c0f49967a4b72a73adedc76f79fcfBefore The DawnSoundscape Of Silenceeea49cfc347e4a96acee145f6e1739f9Before The Dawnde1c0f49967a4b72a73adedc76f79fcf20088290800<file id=\"e8d1b069d6ce03d95d1a5e79c4dc33af7b8d846e\" format=\"Ogg Vorbis,320000,1,32,4\"/><file id=\"778c256837b6f5b12f04beb2d1381359f7487b3e\" format=\"Ogg Vorbis,160000,1,32,4\"/><file id=\"717528d2f0f2a3cb31fed086e721fc6331430205\" format=\"Ogg Vorbis,96000,1,32,4\"/>2c1ba3cfddeacc809749e09eac89f53c13783e64086bfc5622e51e684404d03d85c942efa27a95475f1b94f0e524716a260d4402b88066553f31ca0f0.36<restriction catalogues=\"free,daypass,premium,shuffle,commercial\" forbidden=\"AF,BL,BM,GL,JP,KG,MF,MK,MM,PS,VA\"/><external-id type=\"isrc\" id=\"FI3SY0800080\"/>6spotify:user:1164035136:playlist:4KbWJKza30LmcZuv7Sb1I9Before The Dawnspotify:mosaic:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36:10d484798a41e4966e04c8e9fb7eb69bb9634c57:f0ff51767849be967d4205ee5a97c0fdf15d1325:b39e1464c5b1051f0e64f86f6e31498a3409bcfcspotify:mosaic:58312b1c15ef420a5cb1bd4d111af3988bcf369e:a10f2b4eb433044cddfac64b41a708fc288fa062:20645135c788b6665234c8768cf1e9bfdcfe3968:6a60abbbba19563f688ad0fdcf080d577d9bb330spotify:mosaic:501910fbdd95bdf8de80731610bc613044609a5f:c303e9a4229a44eabf5e0d652224baf8cd9835ff:7c23ba0ca9ce3dd99e9210645842312f2655fa6a:73723d97144bcccc344a65a6d3856e260571cebaspotify:user:1289344027:playlist:4bIBwquz6oMG2ZJixyomA9Before the dawnspotify:mosaic:10d484798a41e4966e04c8e9fb7eb69bb9634c57:10d484798a41e4966e04c8e9fb7eb69bb9634c57:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:3d84d117eabb740dd8da588a09bbad1bc6311660spotify:mosaic:a10f2b4eb433044cddfac64b41a708fc288fa062:a10f2b4eb433044cddfac64b41a708fc288fa062:6a60abbbba19563f688ad0fdcf080d577d9bb330:c3c5c70360d2258f763675824ef30590d4fab735spotify:mosaic:c303e9a4229a44eabf5e0d652224baf8cd9835ff:c303e9a4229a44eabf5e0d652224baf8cd9835ff:73723d97144bcccc344a65a6d3856e260571ceba:9a05cb961c28052fc0fb7d780368584ada5f9a36spotify:user:ninjapimp:playlist:5DGpWfvrBBWfoPcDpwVq4rbefore the dawnspotify:mosaic:10d484798a41e4966e04c8e9fb7eb69bb9634c57:10d484798a41e4966e04c8e9fb7eb69bb9634c57:10d484798a41e4966e04c8e9fb7eb69bb9634c57:f0ff51767849be967d4205ee5a97c0fdf15d1325spotify:mosaic:a10f2b4eb433044cddfac64b41a708fc288fa062:a10f2b4eb433044cddfac64b41a708fc288fa062:a10f2b4eb433044cddfac64b41a708fc288fa062:20645135c788b6665234c8768cf1e9bfdcfe3968spotify:mosaic:c303e9a4229a44eabf5e0d652224baf8cd9835ff:c303e9a4229a44eabf5e0d652224baf8cd9835ff:c303e9a4229a44eabf5e0d652224baf8cd9835ff:7c23ba0ca9ce3dd99e9210645842312f2655fa6aspotify:user:1259837317:playlist:6YVPgZwkJ8F3Vt4r9od3IHBefore The Dawnspotify:mosaic:10d484798a41e4966e04c8e9fb7eb69bb9634c57:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:3d84d117eabb740dd8da588a09bbad1bc6311660:10d484798a41e4966e04c8e9fb7eb69bb9634c57spotify:mosaic:a10f2b4eb433044cddfac64b41a708fc288fa062:6a60abbbba19563f688ad0fdcf080d577d9bb330:c3c5c70360d2258f763675824ef30590d4fab735:a10f2b4eb433044cddfac64b41a708fc288fa062spotify:mosaic:c303e9a4229a44eabf5e0d652224baf8cd9835ff:73723d97144bcccc344a65a6d3856e260571ceba:9a05cb961c28052fc0fb7d780368584ada5f9a36:c303e9a4229a44eabf5e0d652224baf8cd9835ffspotify:user:1115908863:playlist:1pEnuZKOGUT2zUoQJe9GKHBefore the Dawnspotify:mosaic:10d484798a41e4966e04c8e9fb7eb69bb9634c57:79fa025d1cf1b5c6ed986f7fafb399834c7de4d6:b39e1464c5b1051f0e64f86f6e31498a3409bcfc:0ee58f3b476c0271c77db7409a09eeb9d7c0ed36spotify:mosaic:a10f2b4eb433044cddfac64b41a708fc288fa062:ee300276a2ab14ce3d0f9a552ef5d69b70602725:6a60abbbba19563f688ad0fdcf080d577d9bb330:58312b1c15ef420a5cb1bd4d111af3988bcf369espotify:mosaic:c303e9a4229a44eabf5e0d652224baf8cd9835ff:aef135c36328f75ec20d463dcd70a04effe1a1e9:73723d97144bcccc344a65a6d3856e260571ceba:501910fbdd95bdf8de80731610bc613044609a5fspotify:user:1159643858:playlist:1CWL0XQbldMxs40rVQvkViBefore The Dawn \xe2\x80\x93 Deathstar Risingspotify:mosaic:0b441dabfa2127fc2ac7f7c3fd5ca315a6da92f2:f0ff51767849be967d4205ee5a97c0fdf15d1325:10d484798a41e4966e04c8e9fb7eb69bb9634c57:f0ff51767849be967d4205ee5a97c0fdf15d1325spotify:mosaic:fd994c47b0aa4388638466056643971b24c5dd4c:20645135c788b6665234c8768cf1e9bfdcfe3968:a10f2b4eb433044cddfac64b41a708fc288fa062:20645135c788b6665234c8768cf1e9bfdcfe3968spotify:mosaic:a44cb3b79642c72538fd1452655a18babffe408a:7c23ba0ca9ce3dd99e9210645842312f2655fa6a:c303e9a4229a44eabf5e0d652224baf8cd9835ff:7c23ba0ca9ce3dd99e9210645842312f2655fa6a"}'}) 2014-05-23 13:52:41,750 (330) : DEBUG (logkit:13) - [pyemitter] emit(event: 'success', args: (<spotify.core.search_response.SearchResponse object at 0x03DC9E10>,), kwargs: {}) 2014-05-23 13:52:42,000 (1730) : CRITICAL (core:561) - Exception when constructing response (most recent call last): File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\components\runtime.py", line 945, in construct_response el = result._to_xml() File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 613, in _to_xml el = Framework.modelling.objects.ModelInterfaceObjectContainer._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 382, in _to_xml root = Container._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 139, in _to_xml self._append_children(root, self._objects) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 145, in _append_children el = obj._to_xml() File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 79, in _to_xml el = ObjectWithHTTPHeaders._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\api\objectkit.py", line 58, in _to_xml el = Framework.modelling.objects.Object._to_xml(self) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 84, in _to_xml self._set_attribute(root, name, self._attributes[name]) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\modelling\objects.py", line 73, in _set_attribute self._core.log_exception("Exception setting attribute '%s' of object %s to %s (type: %s)", name, str(self), str(value), str(type(value))) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 561, in log_exception self.log.critical(self.traceback(fmt % tuple(args))) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1194, in critical self._log(CRITICAL, msg, args, kwargs) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1268, in _log self.handle(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1278, in handle self.callHandlers(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 1318, in callHandlers hdlr.handle(record) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 749, in handle self.emit(record) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 88, in emit self._core.sandbox.context.log.append(self.format(record)) File "C:\Program Files\Plex\Plex Media Server\python27.zip\logginginit.py", line 724, in format return fmt.format(record) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\Framework\core.py", line 76, in format record.dict[key] = uni(record.dict**[key]) File "C:\Documents and Settings\Owner\Local Settings\Application Data\Plex Media Server\Plug-ins\Framework.bundle\Contents\Resources\Versions\2\Python\subsystem\ospathfix.py", line 51, in uni return unicode(s.decode('utf-8')) File "C:\Program Files\Plex\Plex Media Server\python27.zip\encodings\utf_8.py", line 16, in decode return codecs.utf_8_decode(input, errors, True) UnicodeDecodeError: 'utf8' codec can't decode byte 0xa0 in position 135: invalid start byte

JeppeTh commented 10 years ago

It must be this that fails or? xml = etree.fromstring(data['result'].encode('utf-8'))

in Contents\Libraries\Shared\spotify\core\search_response.py

JeppeTh commented 10 years ago

In the latest version I changed a %s to a %r in search.py to get searching to work, Sometimes the number of songs is shown incorrectly - but at least I get a usable result

    title = '%s (%r)' % (
        cls.get_title(type, True),
        locale.format('%d', total, grouping=True)
    )
JeppeTh commented 10 years ago

it seems there are some unicode spaces or similar that mess things up '\xa0' - i.e. when hitting more than e.g. 1000 tracks.

This variant also seems to work (if you import re): title = '%s (%s)' % ( cls.get_title(type, True), re.sub("\xa0", "", locale.format('%d', total, grouping=True)) )

fuzeman commented 10 years ago

locale.format is used to format numbers to your locale (e.g. 1000 = 1,000 in NZ), looks like the \xa0 (non-breaking space) character is used in some locales as the grouping separator though.

I'll need to look at why "%r" is needed here, but will get this fixed in the main branch later today.