Пример #1
0
def home(request):
	if request.method == "POST":
		canTweet = True
		error_tweet_30 = ""
		
		(canTweet, error_tweet_30) = userCanTweet(request)
		
		if canTweet:
			f = TweetForm(request.POST)
			if f.is_valid():
				t = Tweet()
				t.user = request.user
				t.text = f.cleaned_data["text"]
				d = datetime.datetime.today()
				t.published_on = d
				t.save()
				request.session["time_of_last_tweet"] = d.strftime("%d %m %Y %H:%M:%S")
				return HttpResponseRedirect(reverse("twitter:home"))
			else:
				tweets = Tweet.objects.order_by("-published_on")[:5]
				return render(request,'twitter/home.html', 
					{"tweets":tweets, "user": request.user, 
					"f": f})
		else:
			f = TweetForm()
			tweets = Tweet.objects.order_by("-published_on")[:5]
			return render(request,'twitter/home.html', {"tweets":tweets,
			 	"user": request.user, 
				"f": f, "er30":error_tweet_30})
	else:
		f = TweetForm()
		tweets = Tweet.objects.order_by("-published_on")[:5]
		return render(request,'twitter/home.html', {"tweets":tweets,
		 	"user": request.user, 
			"f": f})
Пример #2
0
def tweet(request):
    f = TweetForm(request.POST)
    if f.is_valid():
        t = Tweet()
        t.user = request.user
        t.text = f.cleaned_data["text"]
        t.published_on = datetime.datetime.today()
        t.save()
    return HttpResponseRedirect(reverse('twitter:home'))
Пример #3
0
def tweet(request):
	f = TweetForm(request.POST)
	if f.is_valid():
		t = Tweet()
		t.user = request.user
		t.text = f.cleaned_data["text"]
		t.published_on = datetime.datetime.today()
		t.save()
	return HttpResponseRedirect(reverse('twitter:home'))
Пример #4
0
def tweet(request):
	if request.user.is_authenticated():
		t = Tweet()
		t.user = request.user
		t.text = request.POST["text"]
		t.published_on = datetime.datetime.today()
		t.save()
		return HttpResponseRedirect(reverse('twitter:home'))
	else:
		return HttpResponseRedirect(reverse('twitter:login'))
Пример #5
0
def tweet(request):
    if request.user.is_authenticated():
        t = Tweet()
        t.user = request.user
        t.text = request.POST["text"]
        t.published_on = datetime.datetime.today()
        t.save()
        return HttpResponseRedirect(reverse('twitter:home'))
    else:
        return HttpResponseRedirect(reverse('twitter:login'))
Пример #6
0
def home(request):
    if request.method == "POST":
        canTweet = True
        error_tweet_30 = ""
        if request.session.has_key("time_of_last_tweet"):
            old_time = datetime.datetime.strptime(
                request.session["time_of_last_tweet"], "%d %m %Y %H:%M:%S")

            delta = datetime.datetime.today() - old_time
            print datetime.datetime.today()
            print old_time
            print delta
            print delta.total_seconds()
            print delta.seconds
            if delta.total_seconds() < 30:
                canTweet = False
                error_tweet_30 = "You have tweeted " + str(int(delta.total_seconds())) + \
                  " seconds ago."
        if canTweet:
            f = TweetForm(request.POST)
            if f.is_valid():
                t = Tweet()
                t.user = request.user
                t.text = f.cleaned_data["text"]
                d = datetime.datetime.today()
                t.published_on = d
                t.save()
                request.session["time_of_last_tweet"] = d.strftime(
                    "%d %m %Y %H:%M:%S")
                return HttpResponseRedirect(reverse("twitter:home"))
            else:
                tweets = Tweet.objects.order_by("-published_on")[:5]
                return render(request, 'twitter/home.html', {
                    "tweets": tweets,
                    "user": request.user,
                    "f": f
                })
        else:
            f = TweetForm()
            tweets = Tweet.objects.order_by("-published_on")[:5]
            return render(
                request, 'twitter/home.html', {
                    "tweets": tweets,
                    "user": request.user,
                    "f": f,
                    "er30": error_tweet_30
                })
    else:
        f = TweetForm()
        tweets = Tweet.objects.order_by("-published_on")[:5]
        return render(request, 'twitter/home.html', {
            "tweets": tweets,
            "user": request.user,
            "f": f
        })
def run():
    # create topic
    topic_example = TwTopic()
    topic_example.title = "migration"
    topic, created = TwTopic.objects.get_or_create(topic_example.__dict__)

    # create query string with well known migration organisations and their twitter accounts
    settings_dir = os.path.dirname(__file__)
    project_root = Path(os.path.dirname(settings_dir)).absolute()
    twitter_addresses_yaml = Path.joinpath(project_root, "twitter\\twitter_addresses.yaml")
    with open(twitter_addresses_yaml) as f:
        # use safe_load instead load
        data_map = yaml.safe_load(f)

    class TwitterAddresses:
        def __init__(self, entries):
            self.__dict__.update(entries)

    addresses = TwitterAddresses(data_map)
    pp = pprint.PrettyPrinter(indent=4)

    # query_string = ""
    # for (institution in addresses.institutions):
    #    query_string+= institution.twitter_account
    # institutions = list(map(lambda x: list(x.values())[0], addresses.institutions))
    institutions = addresses.institutions
    twitter_accounts = map(lambda x: x.get('institution').get('twitter_account').replace("@", ""), institutions)
    twitter_accounts_query_1 = map(lambda x: "(from:{}) OR ".format(x), twitter_accounts)
    twitter_accounts_query_2 = reduce(lambda x, y: x + y, twitter_accounts_query_1)
    twitter_accounts_query_2 += "#immigration lang:en"
    pp.pprint(twitter_accounts_query_2)

    params = {'query': '{}'.format(twitter_accounts_query_2), 'max_results': '500'}
    search_url = "https://api.twitter.com/2/tweets/search/all"

    connector = TwitterConnector(1)
    json_result = connector.get_from_twitter(search_url, params, True)
    # print(json.dumps(json_result, indent=4, sort_keys=True))

    twitter_data: list = json_result.get("data")
    for tweet_raw in twitter_data:
        try:
            tweet = Tweet()
            tweet.topic = topic
            tweet.query_string = twitter_accounts_query_2
            tweet.text = tweet_raw.get("text")
            tweet.twitter_id = tweet_raw.get("id")
            tweet.save()
        except IntegrityError:
            pass
Пример #8
0
def home(request):
	if request.method == "POST":
		canTweet = True
		error_tweet_30 = ""
		if request.session.has_key("time_of_last_tweet"):
			old_time = datetime.datetime.strptime(request.session["time_of_last_tweet"], 
					"%d %m %Y %H:%M:%S")

			delta = datetime.datetime.today() - old_time
			print datetime.datetime.today()
			print old_time
			print delta
			print delta.total_seconds()
			print delta.seconds
			if delta.total_seconds() < 30:
				canTweet = False
				error_tweet_30 = "You have tweeted " + str(int(delta.total_seconds())) + \
						" seconds ago."
		if canTweet:
			f = TweetForm(request.POST)
			if f.is_valid():
				t = Tweet()
				t.user = request.user
				t.text = f.cleaned_data["text"]
				d = datetime.datetime.today()
				t.published_on = d
				t.save()
				request.session["time_of_last_tweet"] = d.strftime("%d %m %Y %H:%M:%S")
				return HttpResponseRedirect(reverse("twitter:home"))
			else:
				tweets = Tweet.objects.order_by("-published_on")[:5]
				return render(request,'twitter/home.html', 
					{"tweets":tweets, "user": request.user, 
					"f": f})
		else:
			f = TweetForm()
			tweets = Tweet.objects.order_by("-published_on")[:5]
			return render(request,'twitter/home.html', {"tweets":tweets,
			 	"user": request.user, 
				"f": f, "er30":error_tweet_30})
	else:
		f = TweetForm()
		tweets = Tweet.objects.order_by("-published_on")[:5]
		return render(request,'twitter/home.html', {"tweets":tweets,
		 	"user": request.user, 
			"f": f})
Пример #9
0
def home(request):
	if request.method == "POST":
		f = TweetForm(request.POST)
		if f.is_valid():
			t = Tweet()
			t.user = request.user
			t.text = f.cleaned_data["text"]
			t.published_on = datetime.datetime.today()
			t.save()
		else:
			tweets = Tweet.objects.order_by("-published_on")[:5]
			return render(request,'twitter/home.html', {"tweets":tweets, 
			"f": f})
	else:
		f = TweetForm()
		tweets = Tweet.objects.order_by("-published_on")[:5]
		return render(request,'twitter/home.html', {"tweets":tweets, 
			"f": f})
Пример #10
0
def home(request):
    if request.method == "POST":
        f = TweetForm(request.POST)
        if f.is_valid():
            t = Tweet()
            t.user = request.user
            t.text = f.cleaned_data["text"]
            t.published_on = datetime.datetime.today()
            t.save()
        else:
            tweets = Tweet.objects.order_by("-published_on")[:5]
            return render(request, 'twitter/home.html', {
                "tweets": tweets,
                "f": f
            })
    else:
        f = TweetForm()
        tweets = Tweet.objects.order_by("-published_on")[:5]
        return render(request, 'twitter/home.html', {"tweets": tweets, "f": f})
def run():
    # create topic
    topic_example = TwTopic()
    topic_example.title = "random"
    topic, created = TwTopic.objects.get_or_create(topic_example.__dict__)

    count = 500

    connector = TwitterConnector(1)

    random_stream_url = "https://api.twitter.com/2/tweets/sample/stream"

    headers = connector.create_headers()
    params = {'tweet.fields': 'lang'}
    response = requests.request("GET",
                                random_stream_url,
                                headers=headers,
                                stream=True,
                                params=params)
    print("is connected {}".format(response.status_code))

    if response.status_code != 200:
        raise Exception("Request returned an error: {} {}".format(
            response.status_code, response.text))
    for response_line in response.iter_lines():
        if response_line:
            json_response = json.loads(response_line)
            while True:
                if count == 0:
                    break
                twitter_data: list = json_response.get("data")
                if twitter_data.get("lang") == "en":
                    print(json.dumps(json_response, indent=4, sort_keys=True))
                    count += -1
                    try:
                        tweet = Tweet()
                        tweet.topic = topic
                        tweet.query_string = topic_example.title
                        tweet.text = twitter_data.get("text")
                        tweet.twitter_id = twitter_data.get("id")
                        tweet.save()
                    except IntegrityError:
                        pass