Jump to content


Active Members
  • Posts

  • Joined

  • Last visited

Contact Methods

  • AIM
  • MSN
  • Website URL
  • ICQ
  • Yahoo

Profile Information

  • Location
    Annapolis, MD

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

MrDave2176's Achievements


Newbie (1/14)

  1. What version of Pandora's jar are you running? Have you tried a clean install? Have you tried deleting all of your temp files? Do you have the relevant bits of your log? What version of FLASH are you using? We don't mind helping, but you have to give us something to work with.
  2. upload it to a webstorage like http://files.to or anything else The problem with that is that there is versioning to consider. It isn't the space (or the bandwidth either) it is someone who will keep track of which version does what and why. Also I like to see that the folks who make contributions are being recognised. Anyone can upload to those spots. In which case any joe blow could upload a corrupt or virused version and say it is an update. I'd like to think that if someone makes a clear commitment that they are hosting something (and can therefore be held liable) that they'd insure it was safe. That's my take on it. I apologise for the two weeks it took me to switch ips but going from cable internet to FiOS has been trickier than anticipated (since Verizon blocks port 80 those bastards). www.wildandbad.com and wildandbad.com both redirect to ww2.wildandbad.com:8181 and because of that can take a second or 30 to get to your page. If you get a 'page cannot be displayed' try reloading, it might be faster next time. if you want to go directly to the page try the ww2.wildandbad.com:8181 and see if that runs faster for you. I hesitate to use the LateNightGames as a mirror for this (unless W&B is completely down) since I have pretty strict bandwidth usage there. Anyone else who'd provide an ftp or http mirror for the files is welcome...I'll gladly link them directly. L0ki - yes, you can shut up now. (joke) You can still download 7.2 and (most) older versions from wildandbad.com. I've archived them there. Scroll down the page to HISTORY and look for the links on the versions. If you want to try to assemble your own 7.3 repack (which is 7.3 with the 7.2 jar file)
  3. As a sidenote...this may help making sense of the whole. With the next release I suggest we start a new thread. Then each successive release will start a new thread after that. This may help cut down on a lot of the redundant questions, mixed versions and lost people. It will also mean having to un-sticky the old thread or locking them after they are done, but hopefully some of the hak5 admins will help us with that.
  4. As always, I am glad to host. I use 7.3.1 and it works fine for me. I am running Flash 8 and the latest Java on Firefox I did find that putting the jacob.dll in my system32 folder fixed the itunes stuff. I'll gladly forwared the src files to you barley!!! I have if it'll help. I am very new to Java and so may have made mistakes along the way. But hopefully this will help to make a cohesive whole of the mixes.
  5. Current releases (skins and such) are always updated in the N00b's guide and I have the most current versions and an archive of old versions on http://wildandbad.com/article/pandoras-jar
  6. I agree. That's why I use it as a timeshifting app. I shift a bunch of stuff while at work and then listen on the drive home and back on my ipod. I then synch when I get home and the ipod dumps everything that was on it. I am - admittedly - the likely exception to the rule. But that is why I support this app like I do. I get to discover new music, keep my last.fm up to date and occasionally learn new things (like Java programming for instance.) Even though I have never watched a single eppisode of the show (I know - sacreledge!) I am glad they did it since it brought me here.
  7. No problem. Flash 9 doesn't cache the files in the same place so they cannot be found by Pandora. If you have not dumped your cache then Pandora just keeps copying the same song over and over and over.
  8. Posted in the wrong place but answered in the N00bs Guide
  9. Actually what it needs is a seperate "forum" for it.
  10. Until this becomes a paying deal, it has to take a backseat to the job. There are still some things I'd like to get ironed out before a new release, and I've been trying to post them here. I had never done any Java programming in my life until I started tackling this project. I had done programming, just not in Java so it has been a learning curve for me. This is a ffairly easy project to work on since most of the hard stuff is done. Roll up you sleeves, and download the SDK and Ant. Plunge in with both feet. Trust me it has been educational and fun.
  11. Last.fm has changed it's site and so until i get the newer version up the lastfm bio lookup stuff is not working. here is the code for LastFmLookup.java with my corrections for the new last.fm for those who are self-compiling. package util; import org.xml.sax.SAXException; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.dom4j.DocumentException; import org.dom4j.Document; import org.dom4j.Element; import org.dom4j.io.SAXReader; import java.io.IOException; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.net.URL; import java.security.NoSuchAlgorithmException; import java.security.MessageDigest; import java.util.Date; import java.util.Iterator; import java.text.DateFormat; import java.text.SimpleDateFormat; import com.meterware.httpunit.*; import server.Request; public class LastFmLookup { private static Log LOG = LogFactory.getLog(LastFmLookup.class); public static final String ERROR_BIO_NOT_FOUND = "band info not found"; public static final String ERROR_NOT_FRIENDS_NOT_FOUND = "top friends not found"; public static final String ERROR_SONG_STATS_NOT_FOUND = "No Stats found for song"; public static final String ERROR_SONG_ART_NOT_FOUND = "No Album Art found for song"; public static final String ERROR_SONG_LIKE_NOT_FOUND = "No Similar Artists found for song"; public static String getBio(String artist) throws IOException, SAXException { WebConversation wc = new WebConversation(); // Disable errors of javascript HttpUnitOptions.setExceptionsThrownOnScriptError( false ); WebResponse resp = wc.getResponse("http://last.fm/music/" + URLEncoder.encode(artist, "UTF-8") + "/+wiki"); String text = resp.getText(); int i = text.indexOf("View wiki recent changes page"); if (i == -1) { throw new RuntimeException(ERROR_BIO_NOT_FOUND); } String startSearchString = "<div class="f">"; String endSearchString = "<br style="clear:both;" />"; int startBioIndex = text.indexOf(startSearchString) + startSearchString.length(); if (startBioIndex < startSearchString.length()) { throw new RuntimeException(ERROR_BIO_NOT_FOUND); } int endBioIndex = text.indexOf(endSearchString, startBioIndex); if (endBioIndex == -1) { throw new RuntimeException(ERROR_BIO_NOT_FOUND); } return Util.addLastFmUrl(text.substring(startBioIndex, endBioIndex)); } public static String getTopFans(String artist, String song) throws IOException, SAXException { LOG.info("looking up top fans"); WebConversation wc = new WebConversation(); HttpUnitOptions.setScriptingEnabled(false); HttpUnitOptions.setExceptionsThrownOnScriptError( false ); String s = "http://www.last.fm/music/" + URLEncoder.encode(artist, "UTF-8") + "/_/" + URLEncoder.encode(song, "UTF-8"); WebRequest req = new GetMethodWebRequest(s); WebResponse resp = wc.getResponse(req); String text = resp.getText(); String startSearchString = "id="c_fanspanel" >"; int startTopArtistIndex = text.indexOf(startSearchString) + startSearchString.length();; if (startTopArtistIndex < startSearchString.length()) { throw new RuntimeException(ERROR_NOT_FRIENDS_NOT_FOUND); } int endTopArtistIndex = text.indexOf("<span class="mozillasucks">", startTopArtistIndex); return Util.addLastFmUrl(text.substring(startTopArtistIndex, endTopArtistIndex)); } public static LastFmTrackStats getTrackStat(String artist, String song) throws IOException, SAXException { LastFmTrackStats lastFmTrackStats = new LastFmTrackStats(); WebConversation wc = new WebConversation(); HttpUnitOptions.setScriptingEnabled(false); HttpUnitOptions.setExceptionsThrownOnScriptError( false ); String s = "http://www.last.fm/music/" + URLEncoder.encode(artist, "UTF-8") + "/_/" + URLEncoder.encode(song, "UTF-8"); WebRequest req = new GetMethodWebRequest(s); LOG.info("fetching stats: " + s); WebResponse resp = wc.getResponse(req); String text = resp.getText(); setTrackStats(text, lastFmTrackStats); setAlbumImageLocation(text, lastFmTrackStats); setSimilarArtist(text, lastFmTrackStats); return lastFmTrackStats; } private static void setSimilarArtist(String text, LastFmTrackStats lastFmTrackStats) { String startSearchString = "id="c_simpanel" >"; int startSimilarIndex = text.indexOf(startSearchString) + startSearchString.length(); if (startSimilarIndex < startSearchString.length()) { throw new RuntimeException(ERROR_SONG_LIKE_NOT_FOUND); } int endSimilarIndex = text.indexOf("<span class="mozillasucks">", startSimilarIndex); lastFmTrackStats.setSimilarArtist("<span>Similar Artists:</span> <br/>" + Util.addLastFmUrl(text.substring(startSimilarIndex, endSimilarIndex).trim())); } private static void setAlbumImageLocation(String text, LastFmTrackStats lastFmTrackStats) { String startSearchString = "<div class="cover">"; String imgLoc = ""; int endImageIndex = 0; int startImageIndex = text.indexOf(startSearchString) + startSearchString.length(); if (startImageIndex < startSearchString.length()) { LOG.info("No Amazon image, gotta look for a LastFM image"); startSearchString = "c_avatarPanel">"; startImageIndex = text.indexOf(startSearchString) + startSearchString.length(); if(startImageIndex < startSearchString.length()) { throw new RuntimeException(ERROR_SONG_ART_NOT_FOUND); } endImageIndex = text.indexOf("" border=", startImageIndex); imgLoc = text.substring(startImageIndex, endImageIndex).trim(); imgLoc = imgLoc.substring(imgLoc.indexOf("src="") + 5, imgLoc.length()); if(imgLoc == "http://static.last.fm/depth/sidebars/vw_view.gif") { throw new RuntimeException(ERROR_SONG_ART_NOT_FOUND); } } else { endImageIndex = text.indexOf("" alt", startImageIndex); imgLoc = text.substring(startImageIndex, endImageIndex).trim(); imgLoc = imgLoc.substring(imgLoc.indexOf("src="") + 5, imgLoc.length()); } lastFmTrackStats.setAlbumImageLocation(imgLoc); LOG.info("got image location:" + imgLoc); } private static void setTrackStats(String text, LastFmTrackStats lastFmTrackStats) { String startSearchString = "id="c_infoPanel">"; int startStatIndex = text.indexOf(startSearchString) + startSearchString.length(); if (startStatIndex < startSearchString.length()) { throw new RuntimeException(ERROR_SONG_STATS_NOT_FOUND); } int endStatIndex = text.indexOf("<div class="f"", startStatIndex); lastFmTrackStats.setTrackStats(Util.addLastFmUrl(text.substring(startStatIndex, endStatIndex).trim())); } public static void addTrack(Request request) throws IOException, SAXException, NoSuchAlgorithmException { SongInfo songInfo = (SongInfo) request.getSession().getAttribute(Constants.ATTR_SONG_INFO); if (songInfo == null) { throw new RuntimeException("illegal call encountered: song info does not exist"); } String userName = request.getParamter(Constants.PARAM_LAST_FM_USER_NAME); String password = request.getParamter(Constants.PARAM_LAST_FM_PASSWORD); LOG.debug("password = " + password); LOG.debug("userName = " + userName); if (userName == null || password == null) { throw new RuntimeException("last.fm authentication impossible."); } WebConversation wc = new WebConversation(); WebRequest req = new PostMethodWebRequest("http://post.audioscrobbler.com"); req.setParameter("u", userName); req.setParameter("c", "pja"); req.setParameter("hs", "true"); req.setParameter("v", "0.1"); req.setParameter("p", "1.1"); WebResponse res = wc.getResponse(req); String text = res.getText(); String key = ""; String lastFMUrl = ""; String[] strings = text.split("n"); LOG.debug(text); if (strings.length < 3 || strings[0].indexOf("UPTODATE") == -1) { String msg = "Unable to authenticate to last.fm"; LOG.warn("Unable to authenticate to last.fm: " + text); throw new RuntimeException(msg); } else { key = strings[1]; lastFMUrl = strings[2]; } Date date = new Date(); DateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); req = new GetMethodWebRequest(lastFMUrl); req.setParameter("u", userName); String s = md5(md5(password) + key); LOG.debug("hex = " + s); req.setParameter("s", s); req.setParameter("a[0]", songInfo.getArtist()); req.setParameter("t[0]", songInfo.getTitle()); req.setParameter("b[0]", songInfo.getAlbum()!=null?songInfo.getAlbum():""); req.setParameter("m[0]", ""); req.setParameter("l[0]", "255"); req.setParameter("i[0]", simpleDateFormat.format(date)); res = wc.getResponse(req); text = res.getText(); if (text.indexOf("OK") == -1) { String msg = "a problem was encountered whille attempting to add track to last.fm: " + text; LOG.warn(msg); throw new RuntimeException(msg); } LOG.info("successfully added track to last.fm"); } public static String getStationName(String pandoraUserName, String stationId) throws IOException, DocumentException { LOG.info("looking up station name for station with id: " + stationId + " user: " + pandoraUserName); URL url = new URL("http://feeds.pandora.com/feeds/people/" + pandoraUserName + "/stations.xml?max=100"); Document document = parse(url); Iterator list = document.getRootElement().element("channel").elementIterator("item"); while (list.hasNext()) { Element o = (Element) list.next(); String value = o.element("link").getText(); if (value.indexOf(stationId) != -1) { String stationName = o.element("title").getText(); LOG.info("found station name: " + stationName); return stationName; } } throw new RuntimeException("station with id: " + stationId + " not found. user: " + pandoraUserName); } private static Document parse(URL url) throws DocumentException { SAXReader reader = new SAXReader(); return reader.read(url); } private static String md5(String message) throws NoSuchAlgorithmException, UnsupportedEncodingException { MessageDigest md = MessageDigest.getInstance("MD5"); return hex(md.digest(message.getBytes("CP1252"))); } private static String hex(byte[] array) { StringBuffer sb = new StringBuffer(); for (int i = 0; i < array.length; ++i) { sb.append(Integer.toHexString((array[i] & 0xFF) | 0x100).toLowerCase().substring(1, 3)); } String s = sb.toString(); LOG.debug("s = " + s); return s; } } I THINK this is the only file with changes, I could be wrong, but feel free to try it.
  12. Contrary to appearances, English is my first language. :S
  13. same as mine and when i even pause the song so it dosent go to the next it will finally say it saved. When i go to play the song its a completely diffrerent song and its always 1.10 mb!!!!! pissing me off. i put cruise control off and do im manually around the middle/end of song. any ideas dave? I am not having this problem, so it is tough to say why it it is happeneing to you. Try turning off the cddb lookup and see if it is still doing it. Then I'd know what is where the problem lies.
  14. I figured out that last.FM has changed their sight ever so slightly . So that has broken all of the Picture, fan, and bio links. I've got it fixed, but I'll be putting in some other fixes to the skins files and I am looking at this 'recent' file' thing. you can look at that part for yourself. THis is in Mp3Processor.java public static void joinMp3s(List<File> mp3s, File lookinDir) throws IOException { LOG.debug("n***processing directory: " + lookinDir.getName() + "***n"); File[] files = lookinDir.listFiles(); sortFilesByLastModified(files); //uncomment to print files in each working directory //printFiles(files); for (File currentFile : files) { if (!currentFile.isDirectory()) { if (isMp3(currentFile)) { LOG.debug("mp3 found adding currentFile: " + currentFile.getName()); mp3s.add(currentFile); } else { if (isFileRecent(currentFile)) { LOG.debug("recent non mp3 file found: " + currentFile.getName() + " - will continue to next file"); continue; } LOG.debug("non-recent non mp3 file found: " + currentFile.getName() + " - will continue to next file"); continue; } } else { joinMp3s(mp3s, currentFile); } } LOG.debug("n***Finished directory: " + lookinDir.getName() + "***n"); return; } What I've done is forced it to recurse through all of the directories before giving up. This is less than efficient, but until I hear a better idea, that's what I'm working with.
  • Create New...