Example #1
0
 def get(self):
     """Get the users playlists, including private ones"""
     user = get_current_youtify_user_model()
     if user:
         json = get_playlist_structs_for_youtify_user_model(user, include_private_playlists=True)
     else:
         json = []
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(simplejson.dumps(json))
Example #2
0
 def get(self):
     """Get the users playlists, including private ones"""
     user = get_current_youtify_user_model()
     if user:
         json = get_playlist_structs_for_youtify_user_model(
             user, include_private_playlists=True)
     else:
         json = []
     self.response.headers['Content-Type'] = 'application/json'
     self.response.out.write(simplejson.dumps(json))
Example #3
0
    def get(self, id_or_nick):
        """Get playlists for user as JSON"""
        youtify_user_model = get_youtify_user_model_by_id_or_nick(id_or_nick)

        if youtify_user_model is None:
            self.error(404)
            return

        ret = get_playlist_structs_for_youtify_user_model(youtify_user_model)

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(ret))
Example #4
0
    def get(self, id_or_nick):
        """Get playlists for user as JSON"""
        youtify_user_model = get_youtify_user_model_by_id_or_nick(id_or_nick)

        if youtify_user_model is None:
            self.error(404)
            return

        ret = get_playlist_structs_for_youtify_user_model(youtify_user_model)

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(ret))
Example #5
0
    def get(self):
        current_user = users.get_current_user()
        youtify_user_model = get_current_youtify_user_model()
        youtify_user_struct = None
        playlists_struct = []
        my_followers_struct = []
        my_followings_struct = []
        settings_struct = {}

        if (current_user is not None) and (youtify_user_model is None):
            youtify_user_model = create_youtify_user_model()

        if youtify_user_model is not None:
            youtify_user_model.device = str(random.random())
            youtify_user_model.last_login = datetime.now()

            # https://developers.google.com/appengine/docs/python/runtime#Request_Headers
            youtify_user_model.country = self.request.headers.get('X-AppEngine-Country', None)
            youtify_user_model.reqion = self.request.headers.get('X-AppEngine-Region', None)
            youtify_user_model.city = self.request.headers.get('X-AppEngine-City', None)
            youtify_user_model.latlon = self.request.headers.get('X-AppEngine-CityLatLong', None)

            youtify_user_model.save()

            youtify_user_struct = get_youtify_user_struct(youtify_user_model, include_private_data=True)
            playlists_struct = get_playlist_structs_for_youtify_user_model(youtify_user_model, include_private_playlists=True)
            my_followers_struct = get_followers_for_youtify_user_model(youtify_user_model)
            my_followings_struct = get_followings_for_youtify_user_model(youtify_user_model)
            settings_struct = get_settings_struct_for_youtify_user_model(youtify_user_model)

        ON_PRODUCTION = os.environ['SERVER_SOFTWARE'].startswith('Google App Engine') # http://stackoverflow.com/questions/1916579/in-python-how-can-i-test-if-im-in-google-app-engine-sdk
        
        # Find videotag and generate open graph meta tags
        match = re.compile(r'tracks/youtube/(.*)').search(self.request.url)
        if match: 
            og_tag = '<meta property="og:video" content="http://www.youtube.com/v/' + match.groups()[0] + '?version=3&amp;autohide=1"/><meta property="og:video:type" content="application/x-shockwave-flash"/><meta property="og:video:width" content="396"/><meta property="og:video:height" content="297"/>'
        else:
            og_tag = ''

        # TODO add og_tag for SoundCloud & Official.fm tracks

        lang = auto_detect_language(self.request)

        path = os.path.join(os.path.dirname(__file__), 'html', 'index.html')
        self.response.headers['Content-Type'] = 'text/html; charset=utf-8';
        self.response.out.write(template.render(path, {
            'my_user_id': youtify_user_model is not None and youtify_user_model.key().id(),
            'device': youtify_user_model is not None and youtify_user_model.device,
            'USER': simplejson.dumps(youtify_user_struct),
            'playlistsFromServer': simplejson.dumps(playlists_struct),
            'myFollowers': simplejson.dumps(my_followers_struct),
            'myFollowings': simplejson.dumps(my_followings_struct),
            'settingsFromServer': simplejson.dumps(settings_struct),
            'autoDetectedLanguageByServer': lang,
            'autoDetectedTranslations': get_deployed_translations_json(lang),
            'logged_in': int(current_user is not None),
            'has_flattr_access_token': int(youtify_user_model is not None and youtify_user_model.flattr_access_token is not None),
            'flattr_user_name': youtify_user_model is not None and youtify_user_model.flattr_user_name,
            'login_url': users.create_login_url('/'),
            'logout_url': users.create_logout_url('/'),
            'youtubeTopList': get_youtube_toplist_json(),
            'flattrTopList': get_flattr_toplist_json(),
            'CURRENT_VERSION_ID': os.environ['CURRENT_VERSION_ID'],
            'ON_PRODUCTION': ON_PRODUCTION,
            'ON_DEV': ON_PRODUCTION is False,
            'USE_PRODUCTION_JAVASCRIPT': ON_PRODUCTION,
            'languages': [lang for lang in get_languages() if lang['enabled_on_site']],
            #'USE_PRODUCTION_JAVASCRIPT': True, # Uncomment to try out production settings. Remember to build production.js with localhost:8080/minimizer
			'url': self.request.url,
            'og_tag': og_tag,
        }))