Example #1
0
def create_or_update_user(user_id, attr):
    """
    Currently, attr must be one of ("douban", "twitter")
    """
    if not user_id or not attr:
        return

    if attr not in ("douban", "twitter"):
        return

    username = attr + "_" + user_id
    if User.objects.filter(username=username).exists():
        user = User.objects.get(username=username)
    else:
        user = User.objects.create_user(username=username)

    try:
        profile = user.get_profile()
    except UserProfile.DoesNotExist:
        profile = UserProfile.objects.create(user=user)

    attr_name = attr + '_id'
    if getattr(profile, attr_name) != user_id:
        setattr(profile, attr_name, user_id)
        profile.save()
        if attr == 'twitter':
            try:
                api = get_twitter_private_api()
                api.CreateFriendship(user_id)
            except:
                pass
    user_logged_in.send(sender=user.__class__, user=user)
    return user
Example #2
0
def set_user_twitter_token(user, screen_name, token_string):
    try:
        profile = user.get_profile()
    except UserProfile.DoesNotExist:
        profile = UserProfile.objects.create(user=user)
    profile.twitter_id = screen_name
    profile.twitter_token = token_string
    profile.save()
    try:
        api = get_twitter_private_api()
        api.CreateFriendship(screen_name)
    except:
        pass
Example #3
0
def check(request):
    api = get_twitter_private_api()
    try:
        messages = api.GetHomeTimeline(count=100)
    except:
        logger.error("Error when GetHomeTimeline when checking Notes")
        return HttpResponse("Error.")
    info = []
    for msg in messages:
        if "#Kindle" not in msg.text or 'http' not in msg.text:
            continue
        url = re.search(r'(http[^ ]+)', msg.text).group(1)
        if Note.objects.filter(url=url).exists() or Word.objects.filter(url=url).exists():
            continue
        user = get_user_from_twitter_id(msg.user.screen_name)
        if not user:
            continue
        added = datetime.datetime(*rfc822.parsedate(msg.created_at)[:6])
        info.append((user, url, added, msg.id))
    count = 0
    for user, url, added, tweet_id in info:
        save_note(user, url, added, tweet_id)
        count +=  1
    return HttpResponse("%s\n" % count)