Changed facebook scraper to handle slug url

This commit is contained in:
Fergal Moran
2013-04-23 11:12:09 +01:00
parent 29aeacf172
commit 24d73d7632
6 changed files with 55 additions and 63 deletions

View File

@@ -11,19 +11,19 @@ admin.autodiscover()
# admin.autodiscover()
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
#(r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/img/favicon.ico'}),
(r'^channel\.html$', TemplateView.as_view(template_name='boiler/fb_channel.html')),
(r'^privacy\.html$', TemplateView.as_view(template_name='boiler/privacy.html')),
(r'^robots\.txt', TemplateView.as_view(template_name='boiler/robots.txt')),
(r'^tos\.html$', TemplateView.as_view(template_name='boiler/tos.html')),
(r'^test\.html$', TemplateView.as_view(template_name='boiler/test.html')),
(r'^500', 'django.views.defaults.server_error'),
(r'^grappelli/', include('grappelli.urls')),
url(r'^accounts/', include('allauth.urls')),
(r'^avatar/', include('avatar.urls')),
(r'^tinymce/', include('tinymce.urls')),
url(r'^', include('spa.urls')),
url(r'^admin/', include(admin.site.urls)),
#(r'^favicon\.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/img/favicon.ico'}),
(r'^channel\.html$', TemplateView.as_view(template_name='boiler/fb_channel.html')),
(r'^privacy\.html$', TemplateView.as_view(template_name='boiler/privacy.html')),
(r'^robots\.txt', TemplateView.as_view(template_name='boiler/robots.txt')),
(r'^tos\.html$', TemplateView.as_view(template_name='boiler/tos.html')),
(r'^test\.html$', TemplateView.as_view(template_name='boiler/test.html')),
(r'^500', 'django.views.defaults.server_error'),
(r'^grappelli/', include('grappelli.urls')),
url(r'^accounts/', include('allauth.urls')),
(r'^avatar/', include('avatar.urls')),
(r'^tinymce/', include('tinymce.urls')),
url(r'^', include('spa.urls')),
)
if settings.DEBUG:
@@ -32,8 +32,9 @@ if settings.DEBUG:
_media_url = settings.MEDIA_URL
if _media_url.startswith('/'):
_media_url = _media_url[1:]
urlpatterns += patterns('',
urlpatterns += patterns(
'',
(r'^%s(?P<path>.*)$' % _media_url,
serve,
{'document_root': settings.MEDIA_ROOT}))
del(_media_url, serve)
{'document_root': settings.MEDIA_ROOT}))
del (_media_url, serve)

View File

@@ -1,14 +1,18 @@
import os
import logging
from django.conf.urls import url
from django.http import Http404
import os
from sendfile import sendfile
from dss import settings
from spa.models.Mix import Mix
from utils import here
import logging
logger = logging.getLogger('spa')
class AudioHandler(object):
@property
def urls(self):
@@ -19,6 +23,7 @@ class AudioHandler(object):
return pattern_list
def download(request, mix_id):
try:
mix = Mix.objects.get(pk=mix_id)
@@ -34,6 +39,7 @@ def download(request, mix_id):
raise Http404("Mix not found")
def start_streaming(request, mix_id):
logger.debug('Start streaming called: %s' % mix_id)
try:

12
spa/social/urls.py Normal file
View File

@@ -0,0 +1,12 @@
from django.conf.urls import patterns, url
urlpatterns = patterns(
'',
url(r'^redirect/mix/(?P<mix_id>\d+)/$', 'spa.social.views.mix', name='social_redirect_mix'),
url(r'^redirect/mix/(?P<slug>[\w\d_.-]+)/$', 'spa.social.views.mix', name='social_redirect_mix_slug'),
url(r'^mix/(?P<mix_id>\d+)/$', 'spa.social.views.mix', name='social_mix'),
url(r'^mix/(?P<slug>[\w\d_.-]+)/$', 'spa.social.views.mix', name='social_mix_slug'),
url(r'^user/(?P<user_id>\w+)/$', 'spa.social.views.user', name='social_user'),
url(r'^like/(?P<mix_id>\d+)/$', 'spa.social.views.post_like', name='social_like'),
url(r'^$', 'spa.social.views.index', name='social_index')
)

View File

@@ -1,52 +1,25 @@
import urllib2
import logging
from django.conf.urls import url
from django.contrib.sites.models import Site
from django.core.urlresolvers import resolve
from django.http import Http404
from django.http import Http404
from django.shortcuts import render_to_response
from django.template.context import RequestContext
import requests
from dss import settings
from allauth.socialaccount.models import SocialToken
from dss import settings
from spa.models.Mix import Mix
from spa.models.UserProfile import UserProfile
from allauth.socialaccount.models import SocialToken
import logging
logger = logging.getLogger(__name__)
"""
Handles callbacks from facebook and twitter
"""
class SocialHandler(object):
def __init__(self, api_name="v1"):
self.api_name = api_name
@property
def urls(self):
pattern_list = [
url(
r'^redirect/mix/(?P<mix_id>\d+)/$',
'spa.social.mix',
name='social_redirect'),
url(
r'^mix/(?P<mix_id>\d+)/$',
'spa.social.mix',
name='social_mix'),
url(
r'^user/(?P<user_id>\w+)/$',
'spa.social.user',
name='social_user'),
url(
r'^like/(?P<mix_id>\d+)/$',
'spa.social.post_like',
name='social_like'),
url(
r'^$',
'spa.social.index',
name='social_index'),
]
return pattern_list
def _getPayload(request):
return {
@@ -58,7 +31,10 @@ def _getPayload(request):
def mix(request, args):
try:
mix = Mix.objects.get(pk=args['mix_id'])
if 'mix_id' in args:
mix = Mix.objects.get(pk=args['mix_id'])
else:
mix = Mix.objects.get(slug=args['slug'])
except Mix.DoesNotExist:
raise Http404
@@ -80,6 +56,7 @@ def mix(request, args):
)
return response
def user(request, args):
try:
user = UserProfile.objects.get(slug=args['user_id'])
@@ -103,7 +80,6 @@ def user(request, args):
return response
def index(request):
response = render_to_response(
"inc/facebook/index.html",
@@ -116,7 +92,7 @@ def social_redirect(request):
try:
resolver = resolve('/social' + request.path)
if resolver is not None:
logger.debug("Resolver succesfully resolved")
logger.debug("Resolver successfully resolved")
return resolver.func(request, resolver.kwargs)
else:
logger.debug("No resolver found for: $%s" % request.path)
@@ -127,6 +103,7 @@ def social_redirect(request):
logger.debug("Unhandled exception in social_redirect: $%s" % ex)
return index(request)
def post_like(request, mix):
try:
tokens = SocialToken.objects.filter(

View File

@@ -10,7 +10,6 @@ from spa.api.v1.ReleaseAudioResource import ReleaseAudioResource
from spa.api.v1.ReleaseResource import ReleaseResource
from spa.api.v1.UserResource import UserResource
from spa.api.v1.ActivityResource import ActivityResource
from spa.social import SocialHandler
v1_api = Api(api_name='v1')
v1_api.register(CommentResource())
@@ -23,9 +22,8 @@ v1_api.register(ActivityResource())
ajax = AjaxHandler()
audio = AudioHandler()
social = SocialHandler()
urlpatterns = django.conf.urls.patterns(
urlpatterns = patterns(
'',
url(r'^$', 'spa.views.app', name='home'),
url(r'^tpl/(?P<template_name>\w+)/$', 'spa.templates.get_template'),
@@ -34,7 +32,7 @@ urlpatterns = django.conf.urls.patterns(
url(r'^podcast\.xml', 'spa.podcast.get_default_podcast'),
url(r'^podcast', 'spa.podcast.get_default_podcast'),
url(r'^podcasts', 'spa.podcast.get_default_podcast'),
url(r'^social/', include(social.urls)),
url(r'^social/', include('spa.social.urls')),
url(r'^ajax/', include(ajax.urls)),
url(r'^audio/', include(audio.urls)),
url(r'^api/', include(v1_api.urls)),

View File

@@ -1,10 +1,8 @@
import logging
from django.shortcuts import render_to_response, redirect
from django.template.context import RequestContext
from core.utils.string import lreplace, rreplace
from spa.social import social_redirect
from spa.social.views import social_redirect
logger = logging.getLogger('spa')