Created
March 3, 2014 06:53
-
-
Save psykidellic/9319694 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/app/assets/javascripts/modules/models/providers/youtube.js.coffee b/app/assets/javascripts/modules/models/providers/youtube.js.coffee | |
index 8b8cd65..d307e46 100644 | |
--- a/app/assets/javascripts/modules/models/providers/youtube.js.coffee | |
+++ b/app/assets/javascripts/modules/models/providers/youtube.js.coffee | |
@@ -23,7 +23,7 @@ define (require) -> | |
find: (type, str, callback) -> # find == search?! | |
if type == 'playlists' | |
- @fetchVideosFromPlaylist("#{str}?v=2", callback) | |
+ @fetchPlaylist(str, callback) | |
else | |
@search(str, callback) | |
@@ -86,10 +86,26 @@ define (require) -> | |
callback(playlists) | |
) | |
+ fetchPlaylist: (uri, callback) -> | |
+ youtube_base_url = 'http://gdata.youtube.com/feeds/api/playlists' | |
+ params = { alt: 'json', v: '2' } | |
+ # RN: the "?" is important | |
+ url = "#{youtube_base_url}/#{uri}?&#{$.param params}" | |
+ | |
+ console.log("Fetch videos from playlist #{url}") | |
+ | |
+ # $.get(url) | |
+ # .done((data) -> | |
+ # console.log data | |
+ | |
+ | |
fetchVideosFromPlaylist: (uri, callback) -> | |
youtube_base_url = 'http://gdata.youtube.com/feeds/api/playlists' | |
params = alt: 'json' | |
- url = "#{youtube_base_url}/#{uri}&#{$.param params}" | |
+ # RN: the "?" is important | |
+ url = "#{youtube_base_url}/#{uri}?&#{$.param params}" | |
+ | |
+ console.log("Fetch videos from playlist #{url}") | |
$.get(url) | |
.done((data) -> | |
@@ -108,6 +124,7 @@ define (require) -> | |
# coverart_medium: data.feed['media$group']['media$thumbnail'][1].url | |
# } | |
for video in data.feed.entry | |
+ debugger | |
try | |
tracks.push | |
uri: video.media$group.yt$videoid.$t | |
@@ -119,6 +136,7 @@ define (require) -> | |
coverart_medium: video['media$group']['media$thumbnail']?[1].url | |
author: video.author?[0].name.$t | |
catch e | |
+ console.log(e) | |
# Youtube apparently has integrity problems, ignore songs without usable metadata | |
callback(tracks) if callback? | |
# callback(tracks, playlist) if callback? | |
diff --git a/app/assets/javascripts/modules/models/search.js.coffee b/app/assets/javascripts/modules/models/search.js.coffee | |
index b77de1c..4fbc502 100644 | |
--- a/app/assets/javascripts/modules/models/search.js.coffee | |
+++ b/app/assets/javascripts/modules/models/search.js.coffee | |
@@ -18,10 +18,10 @@ define (require) -> | |
filter_exists = @get('filter')? | |
filter = @get('filter') | |
# @searchBeamto(callback, type: 'artist') unless filter_exists and filter isnt "artist" | |
- @searchBeamto(callback, type: ['album', 'song']) unless filter_exists and filter isnt "music" | |
+ # @searchBeamto(callback, type: ['album', 'song']) unless filter_exists and filter isnt "music" | |
@searchYoutube(callback) unless filter_exists and filter isnt "music" | |
- @searchSoundcloud(callback) unless filter_exists and filter isnt "music" | |
- @searchForPlaylist(callback) unless filter_exists and filter isnt "playlist" | |
+ # @searchSoundcloud(callback) unless filter_exists and filter isnt "music" | |
+ # @searchForPlaylist(callback) unless filter_exists and filter isnt "playlist" | |
# Apart from beamto we also need to search for | |
# albums having an artist named by it. So we want to discover | |
diff --git a/app/assets/javascripts/modules/router.js.coffee b/app/assets/javascripts/modules/router.js.coffee | |
index 695a967..da5f2ae 100644 | |
--- a/app/assets/javascripts/modules/router.js.coffee | |
+++ b/app/assets/javascripts/modules/router.js.coffee | |
@@ -143,9 +143,14 @@ define (require) -> | |
@explore() | |
media: (source, type, id) -> | |
- console.log "initialize url media/" | |
provider = app.get(source) | |
- provider.find(type, id, (track, playlist=null) => | |
+ provider.find(type, id , (obj) => | |
+ # obj can be of, youtube-playlist, youtube, soundcloud-playlist or soundcloud | |
+ # if type == 'playlist' | |
+ | |
+ # else type == 'asdasd' | |
+ | |
+ | |
if source == 'youtube' | |
if playlist == null | |
$.each(track, (idx, val) => | |
diff --git a/app/assets/javascripts/modules/views/media/item.js.coffee b/app/assets/javascripts/modules/views/media/item.js.coffee | |
index 0a3a210..5eebdbf 100644 | |
--- a/app/assets/javascripts/modules/views/media/item.js.coffee | |
+++ b/app/assets/javascripts/modules/views/media/item.js.coffee | |
@@ -80,7 +80,9 @@ define (require) -> | |
# to something like Twisted's maybeDeferred() role. Because, the playables | |
# can be coming from HTTP call resulting in response later on. | |
yt = app.get('youtube') | |
- yt.fetchVideosFromPlaylist(@model.get('uri'), (tracks) => | |
+ # Playlist contains /playlist already as we want to show a link to it. | |
+ playlist_id = @model.get('uri').split('/').pop() | |
+ yt.fetchVideosFromPlaylist(playlist_id, (tracks) => | |
playables = _.map(tracks, (track) -> | |
new Santoor.Playable( | |
source: 'youtube' | |
@@ -92,6 +94,7 @@ define (require) -> | |
collection_source: 'playlist' | |
) | |
) | |
+ app.trigger('player:playSongs', playables) | |
) | |
else | |
console.log("Invalid source #{@model.get('source')}") |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment