freenerd / soundcloud-map Goto Github PK
View Code? Open in Web Editor NEWSoundCloud Map displays the latest music uploaded to SoundCloud on a Google Maps map
Home Page: http://soundcloudmap.appspot.com
SoundCloud Map displays the latest music uploaded to SoundCloud on a Google Maps map
Home Page: http://soundcloudmap.appspot.com
SoundCloud Map displays the latest music uploaded to SoundCloud on a Google Maps map. It features track playback, genre-based filtering and an easy-to-use user interface. It has been implemented by using Python on Google App Engine. The front-end uses jQuery as well as the SoundCloud Javascript Player and Soundmanager 2. The application has been created by Johan Uhle in the summer term 2009 at Hasso Plattner Institute in Potsdam / Germany. It has been further developed by Johan Uhle, Eric Wahlforss and Katharina Birkenbach during and after the Music Hackday in Berlin autumn 2009. A live version of SoundCloud Map can be found under the name TracksOnAMap here http://www.tracksonamap.com http://www.twitter.com/tracksonamap A paper about an early version of the app, it's functionality and possible extensions has been released here http://www.freenerd.de/soundcloudmap-paper/ The source code has been released on Github here http://github.com/freenerd/SoundCloud-Map/ You are welcome to use, install, fork or do whatever you like. Reference to me is always a nice thing :) Johan Uhle http://www.freenerd.de http://www.twitter.com/freenerd Eric Wahlforss http://eric.wahlforss.com http://www.twitter.com/ericw Katharina Birkenbach http://the-daily-mess.de http://www.twitter.com/kapony Installation: 1.) Open a new app on Google App Engine 2.) Get a Google Maps Key for that app url 3.) Create a file settings_private.py and set the variable GOOGLE_MAPS_API_KEY 4.) Upload to App Engine and let the magic happen Note: Before any marker are displayed on the map the database cache has to be updated via the cron job. This may take some time depending on the traffic at the SoundCloud server so best is you get yourself something to eat and come back in 20 minutes. Check the logs at your App Engine Admin Dashboard to see, how the backend update is doing. If you are running in the development server, you have to call the cron job by yourself via http://localhost:8080/backend-update. Afterwards go to the Admin Console and run all the tasks queued in the default queue.
After being connected to SoundCloud, it could be shown
If a track title is very long, the whole track-list moves some pixel down.
if i link to dubstep city london i don't want to hear bubblegum trance
katharina is on this one
in the player, there's a share button. when clicked it would pop up twitter or facebook, with a backlink to the track, so http://tracksonamap.com/#track-4332
when clicking that link it would show the map, probably in default 'all' view, with the extra city+track loaded and displayed on it. (to do this we need invidual city and track endpoints) and a track needs the city_id in it as well (to do the city look up based on the track id)
locations should be called on a regular basis to always be in memcache!
the error is on line 237 in the python code, location is mistaking longitude for y, when it's really x, so:
long: x
lat: y
needs to be updated everywhere in the javascripts once fixed in backend
Meta Tags at http://www.facebook.com/share_partners.php
This means clicking on the "next" button and the automatic next when a track is finished playing.
When filtered by genre, a bubble for a city should only show tracks from the city from the filtered genre. currently, all-genre tracks per city are displayed.
load the list of tracks (or better, cities, see bug #24) progressively over ajax, so begin loading 20 cities/tracks, then load next 20, etc. would enable the page to respond fast, and move as it loads more
i would suggest we refactor the backend to separate out cities from tracks, so we could load (or better--progressively load over ajax) a list of say 500 popular cities with their metadata (should be very fast to load because we don't load track data). and then we do one light request per city to get the latest track from it, and then load a larger list after that.
you could even load 500 cities + keys to the 10 latest tracks in them, then it would be one request/track after that to load the track with the correct key
The curent marker size are well justified for the two top zoom levels but if you zoom in the marker should become bigger to make clicking on it easier
sometimes it takes a long time for the dots to appear
this has to happen (mostly for legal/cost reasons), so please add a track[duration] smaller than 20 minutes to the API queries (citysounds is already doing this)
Have a logo displayed and pictures of developers displayed.
Reason is the correct number of tracks per city. If we don't delete, cities grow and grow and every city gets the biggest bubble. We also do not need the old tracks anymore, because they will not appear on the map or genre filter anyway. Limit could be 3 months.
Some people have problems with the playback. I thought, Flash Blocker let all 1px sized Flash elements pass, but i could be mistaken ... needs investigation
It jumpes to the last clicked track but not to the currently playing one ...
Have it like in citysounds, where they also only show the intro once ...
would be similiar to Google Maps iPhone App and display the functionality of the button better ...
Could be interesting when browsing tracks without genre filter ...
day is out of range for month
Traceback (most recent call last):
File "/base/python_lib/versions/1/google/appengine/ext/webapp/init.py", line 509, in call
handler.post(*groups)
File "/base/data/home/apps/tracksonamap/1.337270160096570688/backend_update_track.py", line 153, in post
backend_utils.write_track_to_datastore(track, user, location)
File "/base/data/home/apps/tracksonamap/1.337270160096570688/backend_utils.py", line 123, in write_track_to_datastore
release_date = datetime.date(year=int(track['release_year'] or 1900), month=int(track['release_month'] or 1), day=int(track['release_day'] or 1))
ValueError: day is out of range for month
Spacebar - Play/Pause current track in player
right arrow/n - play next track
With the current behaviour, a track is stopped and if you press play for the same track again, it starts from the beginning. Better is, if it pauses and resumes from the old position if pressed again. Just like the play/pause button does in the bottom player.
there seems to be certain boundary conditions where the player just stops working (stops updating progress, etc). need to find the root cause of this, either soundmanager2 or a timer or something else
i think it's easy with google maps
If you click on the mini-artwork in the track-list within a bubble, the state of the play-button in the bubble does not change. If a track is playing, it should change from pause to play.
It happens, that we have tracks, that the user has deleted from SoundCloud again. When a track is displayed, we should check, if the track is present. If it is not, we should delete it from the datastore, give the user a notice and/or play the next track.
Either have it really switching to the previous track or remove it.
Since auto-playback on opening a bubble has been disabled, the random method has to be adjusted ...
I propose to have a "Share this City" Button in every bubble
1 weeks => 1 week
need to add an overlay div or something else to protect it from being mouse-draggable
When track is playing, waveform progress and timecode information is only updated when map is dragged ...
At the moment Google Maps sometimes geolocates users that have no city (city = None). Maybe we should filter them in the api, since they are always located in the middle of the country and might confuse people ...
google will love you ....
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.