Jump to content

ZigZagJoe

Dedicated Members
  • Posts

    895
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by ZigZagJoe

  1. The player actually has http control already, but only when run as part of SProxy which provides the HTTP parts. Eventually it could be possible to have the client output a stream as well, but it would require certain restrictions to be applied to the client; and currently the structure of the two is too different to support it. Might be able to do it if it sent silence between songs, though... the problem lies in that the caster aggressively prefetches a song while the client waits until the current one ends. If the caster ran out of data, it would be bad, hence. Sending silence would fix that, though. Can't do streams sync'd, the pandora URLs expire after one usage generally, and it'd stick out if they check the logs. So only one program can request a song at a time. Glad to hear it's useful for someone besides me!
  2. If you get an esoteric error while logging in, go into advanced settings, find __PandoraClient_Username, clear it, then close settings. The client should work then, though you will need to log in again.
  3. If you get an esoteric error while logging in, go into advanced settings, find __PandoraClient_Username, clear it, then close settings. The client should work then, though you will need to log in again.
  4. Yeah, that was caused by the keys changing. Clearing the username stored would have fixed it (and you would have to re login) What happened was the user and pass were stored using pandora's keys, but since those changed, the old ones produced garbage; but it didn't throw a normal bad user/pass error (pandora didn't), hence. I had partial code to catch it but evidently has not been good enough.
  5. No problem. I'm curious, why do you use the old one? The skinning is disabled when using the old one because many controls are moved slighly in addition for the offset of the title bar, and it's mean to be high-compatibility mode (ie for linux). It actually shouldn't be showing skinning or appearance if that is the case, just didn't think anyone forced the old UI mode.
  6. Are you sure you are downloading/running the new exe properly? I've just checked the uploaded version, and it is dated 10/7. You might have duplicates or something in your download dir.
  7. I've updated to add /historyjson and a sanity check for server name. (and uploaded) Hmm, i see your point. Will think about solutions. I suppose i could put in an artificial starve of data, but mplayer will disconnect after about a minute of that.
  8. No, that's wrong; at least with the protocol used by the desktop one. They use two static keys for crypting the URLs and post data, and these are what changed. The sync request returns an encrypted timestamp used for all further requests. I suspect that the set up boxes use a separate protocol entirely, as well as the embedded apps, as they didn't have to update. "Reload" rescans the dat files (.skin) in the sproxy folder for new skins. To apply you have to hit OK or apply. If it persists, go to file-> upload log and paste it here. also, Skinning will not work if you are under linux or have enabled the old-old UI (non-borderless window). The server returned a different error than i expected; to fix it, go into advanced settings and clear __PandoraClient_Username. The problem is, your login was encrypted with the old keys (and stored that way), but as those keys changed, the old ones are gibberish. I added a check to clear them automatically, but the server seems to return a different error sometimes. Sorry for the confusion. ....k?
  9. Glad to hear it. Play pause is actually supported in a manner already - if all connected clients are not accepting data (or none are connected), playback is essentially paused. Winamp and mplayer stop accepting data when their buffer is full, so there you are. Local playback would honestly be a pain to implement, especially in a cross-platform compatible way. I have a library called naudio on windows, but it doesn't support mono in any way shape or form due to using dllimports to the windows api. Would be possible to add an auto-launch command, at least... putting a full built in player would be a pain. Yeah, setting the correct server name is important. I'm going to add a sanity check to make sure it can connect to itself via it for the future. Can put in a history call, yeah. Will do that shortly.
  10. Update deployed that vifxes this. Get it from the website~
  11. update dployed to fix versin changed ----- 10/7/2010 1.3.3 build 1104 Pandora version has incremented. You will need to log into pandora again, the first time after updating. Props go to lizthegrey, lassiter, promyloph, and the rest of #saver2 at coldfront for reversing the keys. Client: PROTOCOL VERSION INCREMENTED! Client: The main window will no longer be placed offscreen, ever. Client: Added message for bad IP with directions Client: Will be brought to front if the button is clicked again while active Client: Rebuffering % will now be displayed properly Client: Added a log message for anon users Client: Repeat hidden if output stage does not support seeks Client: Fixed an error on exit Client: Added a prompt for when pandora one expires, because music can't be played until user goes to pandora.com and fixes it IRC: Cleaned source somewhat IRC: Added periodic server pings to check for disconnect Pandora: Fixed an error with flash client feedback urls Grooveshark: Added writing to playlists Saver2: Added a log message for what saver mode is enabled SProxy: Fixed a problem with literal null values in settings and toHTML SProxy: Increased log upload timeout SProxy: Added more debug logging with debuglevel at 100 Documentation: Added a bit more to noobhelp.html TODO: Browser upgrade prompt check country code in tor?
  12. It's been solved, thanks to lassiter on saver2 irc.
  13. By 'it', I meant grooveshark, you fruitcake.
  14. Unable to replicate it here. You might try another song, it does that sometime. I'm seeing getStreamKeyFromSongID but no follow up request... Aha, the request timed out. Grooveshark made an oopsy. Or your internet.
  15. PANDORA PROTOCOL HAS IMPLEMENTED, WORKING ON FIXING THIS NOW.
  16. PANDORA PROTOCOL HAS IMPLEMENTED, WORKING ON FIXING THIS NOW.
  17. PANDORA PROTOCOL HAS IMPLEMENTED, WORKING ON FIXING THIS NOW.
  18. Shameless plug for my new toy, pandoracaster: http://www.hak5.org/forums/index.php?showtopic=17704
  19. So basically i've been a little bored oer the last two weeks, and after shooting the wind with pegasus some I had an idea. To keep it simple, it streams pandora radio over a shoutcast protocol, and presents a web interface to manage it. Presenting (copyn paste from readme.txt): ** PandoraCaster v1.0 by ZZJ ** Application to serve Pandora Radio via a shoutcast-like protocol. Provides a web interface to control various pandora functions. Features: * Fully supported by any media player that supports shoutcast! * Supports "instant" station change, or two types of delayed * Supports skipping of current OR next song * Streams at 128kbs or 192kbs mp3 (depends on pandora one) * Low system resource usage; no re-encoding music like shoutcast * Supports using proxies, including SOCKS [tor] * Instant buffering for newly connecting clients * Fully supported under mono, and does not require an X server * Can stream local only, over the network, or even over the internet * Supports pandora feedback and implicit station change links * Extensible Web interface w/ AJAX built-in, see below. Behavior/Quirks: Playback will be paused until a client connects, or if all connected clients are paused Slow clients will finish their current song when overflow is reached then skip to realtime Distribution agorithm is not quite perfect; multiple clients may overflow over time Don't chain this with sproxy and enable turbo mode, bad things will happen. DOES NOT SAVE MUSIC! NEVER WILL! DON'T ASK! Requires: .NET 2.0 or Mono ~64mb RAM, max ~300kb disk space (+log) Any CPU ==== USAGE ==== Usage: (mono) Caster.exe [arguments] ---- ARGUMENTS -------------------------------- --[linux|wine|nossl] - disable SSL for login, neccisary for WINE/mono (mono will be detected automatically) -h, --help - this -l, --login - change saved login info and validate interactively, then exit -a, --promiscuous - listen on all interfaces instead of loopback only -p, --port [port] - sets the server's listen port -n, --name [name] - sets server name (hostname/domain, or IP) -d, --debug - enables debug logging -s, --save - save settings set via cmd line (they are temporary otherwise) By default, the caster only listens on localhost and will not allow external connections. To change this, you can either use the command line options detailed above, or you can edit caster.conf In the config, change LocalOnly to false, and set ServerName to a sensible value. --OR-- Pass -n "name" -a -s to caster.exe, where name is a name that can be resolved to the current computer. an IP works as well. The web interface is located at http://servername:port/ - nothing fancy to it. If the status page is not automatically refreshing on song change, make sure JS is enabled and you only have one window open, as some browsers will not duplicate requests, but not return the duplicate when completed, so only one page will update. (I'm looking at you, firefox.) ==== caster.conf settings ==== An empty setting is stored as <string />, otherwise <string>value</string> "" in the chart below means empty, not literal "" --------------------------------------------------------------------------------------------- | NAME | DEFAULT | SHORT DESC --------------------------------------------------------------------------------------------- StationChangeMode | 2 | behavior when changing station, see below ProxyNeedAuth | false | proxy needs authentication ProxyType | "" | blank=off, http, socks4, socks4a, socks5 ProxyAddr | 127.0.0.1 | valid ipv4 IP addr for the proxy ProxyPort | 8080 | proxy port ProxyUser | "" | plaintext user ProxyPass | "" | plaintext pass ProxyXMLOnly | true | only use proxy for XML data CacheSize | (256*1024) | amount downloaded before a song is queued Username | "" | encoded user, do not mess with this Password | "" | encoded pass, use -login to change login CurrentStation | "" | last station ID ListenPort | 3001 | server listen port LocalOnly | true | only allow connections from localhost ServerName | Dns.GetHostName() | server name, see below. domain, hostname, or ip NoSSL | false | don't use SSL, needed on mono/wine Debug | false | print additional debug output ServeLocalFiles | false | serve files in LocalFilesPath LocalFilesPath | ./www/ | directory to serve files from MaxListeners | 32 | max # of listeners that can be connected AnonWebControl | true | allow anyone to skip and rate songs NoWebStyle | false | don't use the embedded stylesheet LowMem | false | use disk backing for song data Notes: StationChangeMode 0 = play this song and the next song, station changes after that 1 = skip next song, if possible, new song will be of the new station 2 = skip this song and next song (change to new station "immediately") ServerName needs to be a domain, ip, or hostname which the listenport connects to _this_ system unimportant if in localhost only mode. AnonWebControl On by default, when disabled, to perform any actions that affect the broadcast you must log in using the same password used to log in to pandora. ==== Web interface ==== If AnonWebControl is false, you need to log in prior to using web interface functions like skip, song ratings, station changing, etc. The web interface's extensibility is enabled by default. To disable, set ServeLocalFiles to false. The path served is set via LocalFilesPath. File starting with . will not be served, or .., though relative paths are supported within a url (http://server/dir/../otherdir/file.ext) Edit LocalFilesPath/.links to add new navigation links. If a file's name matches a built in URL, the built in page will be overridden. Create a file named index.htm (or html) to replace the status page (/). If you have a file with extension html, htm, txt, xml, or css in the dat file, a few variables will be replaced when it is displayed: %statusjson% -> json formatted status (same as /status request) %stationsjson% -> json formatted stations (same as /stations request) %listenport% -> server listen port %servername% -> server name %serverurl% -> full server url (http://servername:serverip/) %nowplaying% -> now playing song (artist - title) %station% -> current station %style% -> embedded stylesheet %authenticated% -> is current requestor authenticated? (true | false) %header% -> standard header with nav %footer% -> standard footer Built-in paths: / | built in status page /; | serves audio stream (shoutcast emulation requirement) /listen | serves audio stream /listen/id | attempts to change station to ID and serves audio stream /station/id | sets station to ID /lovecurrent | loves the now playing song /hatecurrent | hates the now playing song /skip | skips the now playing song /skipnext | skips the next song /listeners | table of listeners and various info for debugging /listeners/ar | auto-refresh listeners page /newstation | new station ajax page /history | returns song history /historyjson | returns song history as a json object /status | returns a JSON object with various now playing info /stations | returns a JSON object with stations /changestations | page to change stations for non-js browsers /nextsong | returns the next song artist-title. blocks until next song ready. /7.html | now playing in shoutcast's 7.html format /nowplaying | returns now playing song's artist-title /autocomplete/query | queries pandora's autocomplete server /loadsharedstation/sid | loads a shared station from sid and changes to it (returns 0|1) /createstation/id | trie creates a new station from ID and switches to it (returns 0|1) /createstation/id/redir | tries to create a station then redirects to status page /songchanged | blocks until song changes, then returns status /blank.png | 1 x 1px transparent png /listen.m3u | returns listen playlist in m3u format /listen.pls | returns listen playlist in pls format /favicon.ico | returns (static) favicon /setstationchgmode/0-2 | sets station change mode (0-2, see above for details) /clearmaxdata | clear each listener's maxdata variable (for listeners page) Most of the actions like skip return a 302 redirect back to the status page. ==== WARRANTY (or lack therof) ==== No function is implied or in any way guaranteed. Try not to hurt yourself. ==== THANKS ==== pegasus, from IRC: giving me the intial idea and helping with the broadcast "algorithm" NAudio project: for the Id3v2Tag code and some random mp3 reading bits lizthethegray, lassiter, promyloph, and the rest of #saver2: getting pandora's new keys ==== MISC ==== Just shy of 5k lines of source. Pretty much the culmination of SProxy and the Pandora client, go go code reuse! Plus bits from saver2, and other utilities I wrote. Not open source atm, and honestly not likely to become so without VERY good reason. ---------------------------------------------------------------- *** Pandora is a registered trademark of Pandora Media, Inc. *** ----------------------------------------------------------------
  20. skin info: http://zzj.itf-inc.com/downloads/PCskininf.zip Pressing the little button at lower left (the one with two arrows) enables shuffle, it causes the station to change every 4 songs. The button next to it repeats the current song endlessly until skipped or disabled.
  21. @Rusty, from irc: turbo mode not playing music is by design and is what makes it turbo mode.
  22. can put it back, i was just curious as to why you wanted all the settings
  23. Looks like a value with a literal null value was added (to the settings) in the last patch, internal one used for the client, it causes an error on the sproxy page also. Woops. But, why do you need to access toHtml? it was made internal in the working version (not released yet)
×
×
  • Create New...