GithubHelp home page GithubHelp logo

freenerd / soundcloud-map Goto Github PK

View Code? Open in Web Editor NEW
28.0 7.0 10.0 1.2 MB

SoundCloud Map displays the latest music uploaded to SoundCloud on a Google Maps map

Home Page: http://soundcloudmap.appspot.com

JavaScript 61.48% Python 38.52%

soundcloud-map's Introduction

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. 

soundcloud-map's People

Contributors

freenerd avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

soundcloud-map's Issues

Implement "Connect with Soundcloud"

After being connected to SoundCloud, it could be shown

  1. followers and user whom one follows
  2. users favourite tracks
  3. favourite tracks of followers and/or people whom one follows

sharing a track over twitter/facebook

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)

Auto-Memcache

locations should be called on a regular basis to always be in memcache!

lat/lon are reversed in the database

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

Fix genre-filtered city bubbles

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.

progressive ajax loading

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

bigger db backend refactoring

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

Delete old tracks with cron job

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.

Fix day is out of range for month

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

Change Play-Button behaviour in Bubbles to "resume"

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.

random crash in js 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

Care for tracks not being on SoundCloud anymore

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.

Make it work in Opera

When track is playing, waveform progress and timecode information is only updated when map is dragged ...

Ignore tracks, that have no city?

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 ...

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.