Beispiel #1
0
def tweetform_view(request):
    html = "tweetform.html"

    if request.method == "POST":
        form = TweetForm(request.POST)

        if form.is_valid():
            data = form.cleaned_data

            newTweet = Tweet(tweetbody=data['tweetbody'],
                             date_filed=data['date_filed'],
                             author=request.user)
            newTweet.save()
            # This newTweet['tweetbody'] is reaching into db
            # if '@' in newTweet['tweetbody']:
            pattern = re.search("@[\w\d]+", newTweet.tweetbody)

            if pattern is not None:
                pattern = pattern.group(0)[1:]
                target_user = TwitterUser.objects.get(username=pattern)

                Notification.objects.create(
                    target_user=target_user,
                    tweet=newTweet,
                )

            baseProfile = TwitterUser.objects.get(username=request.user)
            newTweet.twittuser.add(baseProfile)

            return HttpResponseRedirect(reverse("homepage"))

    form = TweetForm()

    return render(request, html, {"form": form})
Beispiel #2
0
def post_tweet_view(request):
    if request.user.is_authenticated:
        current_user = request.user
        notes = len(
            Notification.objects.filter(notify_user=current_user).filter(
                is_seen=False))
    else:
        notes = 0
    if request.method == "POST":
        form = PostTweetForm(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            new_tweet = Tweet(
                user_tweeted=current_user,
                content=data.get('content'),
                #date_and_time=data.get('date_and_time')
            )
            new_tweet.save()
            # Either gets after "@" or returns false
            notify = read_reggie(data.get('content'))
            if notify:
                # Gets user being "@" @ by the username in the mention
                #note_user = MyTwitterUser.objects.get(username=notify)
                for name in notify:
                    Notification.objects.create(
                        # Attributes user
                        notify_user=MyTwitterUser.objects.get(username=name),
                        # Gets tweet obj
                        tweet=new_tweet,
                        is_seen=False)
            return HttpResponseRedirect(reverse('home'))
    form = PostTweetForm()
    return render(request, 'tweet_form.html', {'form': form, 'notes': notes})
Beispiel #3
0
def query_twitter_api():
    """Query Elon's twitter for references to keywords."""

    print("Query Initiating...")
    auth = tweepy.OAuthHandler(
        CONSUMER_KEY,
        CONSUMER_SECRET_KEY
    )

    auth.set_access_token(
        KEY,
        SECRET_KEY
    )

    api = tweepy.API(auth)

    twitter_status = api.user_timeline(
        id="elonmusk", count=1, tweet_mode="extended"
    )[0]._json

    tweet_text = twitter_status["full_text"]

    if re.search(r'\bbitcoin\b', tweet_text):
        obj = {
            "twitter_handle": "elonmusk",
            "created_at": twitter_status["created_at"],
            "text": tweet_text
        }

        print("Tweet mentioning bitcoin found")
        tweet = Tweet(**obj)
        tweet.save()
    else:
        print("No tweet mentioning bitcoin found")
Beispiel #4
0
def make_tweet(request):
    if not request.user.is_authenticated:
        return HttpResponseRedirect(reverse('auth:log_in'))
    if request.POST:
        tweet = Tweet(title=request.POST['title'],
                      content=request.POST['content'],
                      user=request.user)
        tweet.save()
        return HttpResponseRedirect(
            reverse('tweet:show_tweet', args=(tweet.id, )))
    return render(request, 'tweet/make_tweet.html')
Beispiel #5
0
def create_tweet(request):
    if request.method=='POST':
        message=request.POST['message']
        profile_obj=Profile.objects.get(user=request.user)
        t_obj=Tweet()
        t_obj.profile=profile_obj
        t_obj.message=message
        t_obj.save()
        return HttpResponseRedirect(reverse('index'))
    else:
        form=CreateTweet()
        return render(request,'tweet/create_tweet.html',{'form':form})
Beispiel #6
0
def add_tweet(request):
    """添加推文"""
    if request.method == 'POST':
        title = request.POST.get('title')
        content = request.POST.get('content')
        user_id = request.POST.get('user_id')
        t = Tweet()
        t.title = title
        t.content = content
        t.user_id = user_id
        t.read_num = gen_random_num()
        t.save()
        return JsonResponse({'code': 200, 'msg': 'success'})
Beispiel #7
0
def new_tweet_view(request):
    if request.method == 'POST':
        form = NewTweetForm(request.POST)
        if form.is_valid():
            content = form.cleaned_data['content']
            new_tweet = Tweet(
                content=content,
                composer=request.user
            )
            new_tweet.save()
            find_mention_notifications(new_tweet)
            return HttpResponseRedirect(
                reverse('homepage')
            )
Beispiel #8
0
def v2_tweet(request):
    token_hash = request.GET.get('key')
    if not token_hash:
        return HttpResponse('you did not send any key')
    try:
        token = TokenV2.objects.get(key=token_hash)
    except TokenV2.DoesNotExist:
        return HttpResponse('invalid key!')
    user = token.user
    # make tweet with request.GET and user and save it
    title = request.GET.get('title')
    content = request.GET.get('content')
    tweet = Tweet(title=title, content=content, user=user)
    tweet.save()
    return HttpResponse(tweet.title + " -- was created successfully ")
Beispiel #9
0
 def post(self, request):
     try:
         data = json.loads(request.body)
         tweet = Tweet(user_id=data["user_id"],
                       user_content=data["user_content"])
         tweet.save()
         getpk = Tweet.objects.filter(user_id=data["user_id"]).last().pk
         return JsonResponse(
             {
                 "content_id": f"{getpk}",
                 "message": "Tweet Success"
             },
             safe=False,
             status=200)
     except KeyError:
         return JsonResponse({"message": "Tweet Failed"},
                             safe=False,
                             status=200)
Beispiel #10
0
def feed(request):
    if request.method == 'POST':
        form = TweetForm(request.POST, request.FILES)
        if form.is_valid():
            tweet = Tweet()
            tweet.content = form.cleaned_data['tweet']
            tweet.image = form.cleaned_data.get('image')
            tweet.user = request.user
            tweet.save()
            form = TweetForm()
    else:
        form = TweetForm()
    tweets = Tweet.objects.order_by('-post_date')
    context = {
        'tweets': tweets,
        'form': form,
        'user': request.user,
    }
    return render(request, "tweet/feed.html", context)
Beispiel #11
0
def create_tweet(user_id, mutter):
    tweet = Tweet(tweeted_by_id=user_id, mutter=mutter)
    tweet.save()
    return tweet
Beispiel #12
0
 def post(self,request):
     tweet_input = json.loads(request.body)
     user_id = tweet_input['user_id']
     tweet_content = tweet_input['tweet']
     Tweet(tweet = tweet_content, user_id = User.objects.get(id=user_id)).save()
     return JsonResponse({ 'tweet_content': tweet_content })
Beispiel #13
0
    def get_queryset(self):
        #expressão de busca enviada
        expression = self.request.query_params.get('search')

        if (expression):
            #codifica a expressão para o padrão utilizado na web
            search_word = requests.utils.quote(expression)

            API_KEY = '5MU3Vu3zXm6xn0XQuIZzg2Q1I'
            API_SECRET = 'huaphtigFjD0riKGuT9rZHig6RCCr0zR7eeBsNvZtldcXCYnQz'
            ACCESS_TOKEN = '27258579-r6APNk6Y1mracJWcdAln3C6NsC5hj9dZKG8G2f654'
            ACCESS_TOKEN_SECRET = 'ulF8lFGppaeqEoA7TS17IGAnCMYjsI8QinyGLTI8uCQHP'

            session = OAuth1Session(API_KEY, API_SECRET, ACCESS_TOKEN,
                                    ACCESS_TOKEN_SECRET)

            url = "https://api.twitter.com/1.1/search/tweets.json?lang=pt&q=" + search_word + "&count=30&tweet_mode=extended"

            response = session.get(url)

            tweets = json.loads(response.content.decode('utf-8'))

            #armazena os dados dos usuarios
            user_data = []
            #armazena os tweets dos usuários para posterior classificação
            user_tweets = []

            for t in tweets['statuses']:
                #converte a data para o timezone do Brasil
                d = datetime.strptime(
                    t['created_at'], '%a %b %d %H:%M:%S %z %Y').replace(
                        tzinfo=timezone.utc).astimezone(
                            pytz.timezone('America/Sao_Paulo')).strftime(
                                '%Y-%m-%d %H:%M:%S')
                data = {
                    "data": d,
                    "username": t['user']['screen_name'],
                    "tweet_id": t['id'],
                    "tweet": t['full_text']
                }
                user_data.append(data)
                user_tweets.append(t['full_text'])

            #carrega o modelo gravado em arquivo
            text_clf = pickle.load(
                open(settings.MEDIA_ROOT + "/model.sav", 'rb'))

            #classifica os tweets
            predicted = text_clf.predict(user_tweets)

            #salva o termo de busca
            search = Search()
            search.expression = expression
            search.save()

            for x in range(len(predicted)):
                user_model = Tweet()
                user_model.user = user_data[x]['username']
                user_model.tweet_date = user_data[x]['data']
                user_model.tweet_id = user_data[x]['tweet_id']
                user_model.tweet_text = user_data[x]['tweet']
                user_model.classification = predicted[x]
                user_model.search = search
                user_model.save()

            return Tweet.objects.filter(search=search)

        elif (self.request.query_params.get('search_id')):
            search_id = self.request.query_params.get('search_id')
            return Tweet.objects.filter(search=search_id)

        else:
            return Tweet.objects.all()