예제 #1
0
파일: main.py 프로젝트: jensnockert/youtify
    def get(self):
        current_user = users.get_current_user()
        youtify_user = get_current_youtify_user()

        playlists = '[]';

        if youtify_user is not None:
            playlists = get_playlists_json_for_user(youtify_user)
            youtify_user.device = str(random.random())
            youtify_user.save()

        if (current_user is not None) and (youtify_user is None):
            youtify_user = create_youtify_user()

        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'videos/(.*)').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 = ''

        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, {
            'user': current_user,
            'is_admin': int(users.is_current_user_admin()),
            'youtify_user': youtify_user,
            'playlistsFromServer': playlists,
            'autoDetectedLanguageByServer': lang,
            'autoDetectedTranslations': get_deployed_translations_json(lang),
            'accept_language_header': self.request.headers.get('Accept-Language', ''), # todo remove
            'logged_in': int(current_user is not None),
            'has_flattr_access_token': int(youtify_user is not None and youtify_user.flattr_access_token is not None),
            'flattr_user_name': youtify_user is not None and youtify_user.flattr_user_name,
            'login_url': users.create_login_url('/'),
            'logout_url': users.create_logout_url('/'),
            'toplist': get_or_create_toplist_json(),
            'flattr_toplist': flattr_toplist.get_or_create_toplist_json(),
            '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,
        }))
예제 #2
0
파일: main.py 프로젝트: glesperance/youtify
    def get(self):
        my_followers_struct = []
        my_followings_struct = []
        settings_struct = {}
        youtify_user_struct = None

        current_user = users.get_current_user()
        youtify_user_model = get_current_youtify_user_model()

        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 = generate_device_token()
            youtify_user_model.last_login = datetime.now()
            youtify_user_struct = get_youtify_user_struct(youtify_user_model, include_private_data=True)

            # 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()

            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)

        lang_code = auto_detect_language(self.request)

        json = {
            'ON_PRODUCTION': config.ON_PRODUCTION,
            'SEARCH_STATS_URL': config.SEARCH_STATS_URL,
            'languagesFromServer': [lang for lang in get_languages() if lang['enabled_on_site']],
            'device': youtify_user_model is not None and youtify_user_model.device,
            'user': youtify_user_struct,
            'lastNotificationSeenTimestamp': youtify_user_model is not None and youtify_user_model.last_notification_seen_timestamp, 
            'myFollowers': my_followers_struct,
            'myFollowings': my_followings_struct,
            'settingsFromServer': settings_struct,
            'autoDetectedLanguageByServer': lang_code,
            'autoDetectedTranslations': get_deployed_translations_struct(lang_code),
            'loginUrl': users.create_login_url('/'),
            'logoutUrl': users.create_logout_url('/'),
        }

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json));
예제 #3
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,
        }))
예제 #4
0
파일: main.py 프로젝트: glesperance/youtify
    def get(self):
        my_followers_struct = []
        my_followings_struct = []
        settings_struct = {}
        youtify_user_struct = None

        current_user = users.get_current_user()
        youtify_user_model = get_current_youtify_user_model()

        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 = generate_device_token()
            youtify_user_model.last_login = datetime.now()
            youtify_user_struct = get_youtify_user_struct(
                youtify_user_model, include_private_data=True)

            # 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()

            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)

        lang_code = auto_detect_language(self.request)

        json = {
            'ON_PRODUCTION':
            config.ON_PRODUCTION,
            'SEARCH_STATS_URL':
            config.SEARCH_STATS_URL,
            'languagesFromServer':
            [lang for lang in get_languages() if lang['enabled_on_site']],
            'device':
            youtify_user_model is not None and youtify_user_model.device,
            'user':
            youtify_user_struct,
            'lastNotificationSeenTimestamp':
            youtify_user_model is not None
            and youtify_user_model.last_notification_seen_timestamp,
            'myFollowers':
            my_followers_struct,
            'myFollowings':
            my_followings_struct,
            'settingsFromServer':
            settings_struct,
            'autoDetectedLanguageByServer':
            lang_code,
            'autoDetectedTranslations':
            get_deployed_translations_struct(lang_code),
            'loginUrl':
            users.create_login_url('/'),
            'logoutUrl':
            users.create_logout_url('/'),
        }

        self.response.headers['Content-Type'] = 'application/json'
        self.response.out.write(simplejson.dumps(json))