[GO] [Python + Bottle] J'ai publié un service Web qui visualise les tweets positionnés de Twitter.

C'est en mai, mais c'est une histoire sur la publication d'un service Web qui visualise les tweets positionnés de Twitter. Je veux me débarrasser de cette racine sexuelle qui brûle quand je peux faire ce que je veux faire. Il est joué avec succès.

Il est fabriqué à partir de bouteille, mais c'est très simple. Après tout, la duplication reste la même et l'heure n'est pas au Japon. C'est un bon exemple de brûler les détails tels qu'ils sont.

À propos, pour l'API, bien sûr, utilisez GET search / tweets. Tente de collecter éventuellement des données à proximité avec l'option de géocodage. Si vous effectuez une recherche dans tout le pays, les 100 premiers mots clés seront recherchés dans la recherche, de sorte que vous ne verrez peut-être pas de tweets positionnés dans les résultats de la recherche. Dans ce cas, il n'y a pas d'autre choix que d'afficher une page d'erreur où rien n'est affiché.

Il y a peut-être d'autres bons moyens, mais je ne pouvais pas penser à cela.

Traitez en extrayant les informations de localisation du navigateur. Ensuite, si vous avez la possibilité de rechercher un quartier, la distance

geocoding = send_geo + "," + near

Combinez avec et passez.

@route("/show", method="GET")
def send_geos():
	send_geo = request.query.send_geo
	search_words = request.query.search_words
	near = request.query.near
	geocoding = send_geo + "," + near
	
	
	if search_words:
		C_KEY = "****************"
		C_SECRET = "****************"
		A_KEY = "****************"
		A_SECRET = "****************"

		url = "https://api.twitter.com/1.1/search/tweets.json?"
		
		if near:
			params = {
			"q": (search_words, "utf-8"),
			"lang": "ja",
			"geocode": (geocoding),
			"result_type": "mixed",
			"count": "100"
			}		
			tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
			req = tw.get(url, params = params)
			tweets = json.loads(req.text)
			dic = tweets
		else:
			params = {
			"q": (search_words, "utf-8"),
			"lang": "ja",
			"result_type": "mixed",
			"count": "100"
			}		
			tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
			req = tw.get(url, params = params)
			tweets = json.loads(req.text)
			dic = tweets

S'il n'y a pas de tweet positionné, un problème se produira, alors essayez de vous échapper. S'il n'est pas positionné, utilisez sauf pour effectuer un autre processus.


		if req.status_code == 200:
			for tweet in tweets["statuses"]:
				created_at = YmdHMS(tweet["created_at"])
				User = (tweet["user"]["screen_name"].encode("utf-8"))
				U_Name = (tweet["user"]["name"].encode("utf-8"))
				U_img = (tweet["user"]["profile_image_url"])
				Text = (tweet["text"].encode("utf-8"))
				if "http" in "Text":
					Text = Text.split("http", 1)[0]
					Text = Text.split("@")[0]
					Text = Text.split("RT")[0]


				try:
					Place = (tweet["place"]["bounding_box"]["coordinates"])
					
					flat_list = []
					for e in Place:
						flat_list.extend(e)
    	
					flat_list2 = []
					for b in flat_list:
						flat_list2.extend(b)
 
					flat_list3 = []
					for c in flat_list:
						flat_list3.extend(c)
    	
					geolng = flat_list3[0]
					geolat = flat_list3[1]

Le géocodage est (tweet ["place"] ["bounding_box"] ["coordonnées"]) Je vais l'obtenir, mais si je fais cela, la nidification est terrible, alors j'annule la nidification.

Il s'agit du traitement de base dans le script Python. Le reste est écrit directement dans le fichier tpl.

Le processus d'écriture de Python en tpl comme suit. Avec cela, tous les tweets seront affichés correctement.

Les données du Tweet sont extraites de ce qui est stocké dans la base de données. Par exemple, enregistrer les données sous forme de texte brut.

%for line in f:			
%	line = line.rstrip()
%	l = line.split(",")
%	User = l[0]
%	U_Name = l[1]
%	U_img = l[2]
%	Text = l[3]
%	created_at = l[-3]
%geolng = l[-1]
%geolat = l[-2]
<li class="twlist">
	<font size="2" color="#d8d8d8">{{created_at}}・{{geolat}},{{geolng}}</font><br>
	<span class="fleft"><a href="https://twitter.com/{{User}}" target="_blank"><img src="{{U_img}}"></a></span>
	<b>{{U_Name}}</b> <font size="2"><a href="https://twitter.com/{{User}}" target="_blank">@{{User}}</a></font><br>{{Text}}<br><hr class="clear">
</li>
%end
<ul>

Lors de l'écriture dans tpl, il peut être traité même si le retrait est ignoré. Si vous l'exportez tel quel, la commande sera dans le désordre, donc il sera formaté avec Jquery.

<script type="text/javascript">
$(function () {
  $('ul').html(
    $('li').sort(function(a, b) {
      if ($(a).text() < $(b).text()) {
        return 1;
      } else {
        return -1;
      }
    })
  );
});
</script>

Il en va de même pour le traçage sur une carte, et Python est écrit en Javascript pour Google map.

%for line in f:			
%	line = line.rstrip()
%	l = line.split(",")
%	User = l[0]
%	U_Name = l[1]
%	U_img = l[2]
%	Text = l[3]
%	created_at = l[-3]
%geolng = l[-1]
%geolat = l[-2]
              ['<a href=https://twitter.com/{{User}} target="_blank"><img src={{U_img}}></a><br>{{U_Name}}:{{User}}<br>{{created_at}}<br><marquee>{{Text}}</marquee>', {{geolat}}, {{geolng}}],
              
%end 
              ['You', {{default_tag}}]

{{User}} Quelque chose est une variable dont le modèle a été renvoyé dans la bouteille. Un seul script Python traite environ 200 lignes.

Donc, quand j'ai essayé de l'exécuter sur le Web, cela ressemblait à ceci.

http://www.geo-twit.com/

utilisation? Je me demande s'il y a ...

Recommended Posts

[Python + Bottle] J'ai publié un service Web qui visualise les tweets positionnés de Twitter.
J'ai essayé de créer un système qui ne récupère que les tweets supprimés
[Python] Un mémo que j'ai essayé de démarrer avec asyncio
J'ai essayé de créer une application todo en utilisant une bouteille avec python
J'ai créé une API Web
J'ai créé une application Web en Python qui convertit Markdown en HTML
J'ai essayé de développer un formateur qui génère des journaux Python en JSON
J'ai créé un exemple pour accéder à Salesforce en utilisant Python et Bottle
J'ai essayé de créer une classe qui peut facilement sérialiser Json en Python
[Python] J'ai essayé de créer une IA Shiritori qui améliore le vocabulaire grâce aux batailles
J'ai essayé d'implémenter un pseudo pachislot en Python
J'ai essayé d'implémenter un automate cellulaire unidimensionnel en Python
[Chaîne de Markov] J'ai essayé de lire les citations en Python.
J'ai essayé "un programme qui supprime les déclarations en double en Python"
J'ai essayé "Comment obtenir une méthode décorée en Python"
[Python] J'ai essayé de visualiser des tweets sur Corona avec WordCloud
J'ai fait un chronomètre en utilisant tkinter avec python
[1 hour challenge] J'ai essayé de créer un site de bonne aventure qui soit trop adapté à Python
J'ai essayé de créer un générateur qui génère une classe conteneur C # à partir de CSV avec Python
J'ai essayé de créer un service qui vend des données apprises par machine à une vitesse explosive avec Docker
[5e] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer un environnement serveur qui fonctionne sous Windows 10
Je souhaite utiliser un caractère générique que je souhaite décortiquer avec Python remove
J'ai essayé de transformer un fichier Python en un EXE (erreur de récursivité prise en charge)
Rubyist a essayé de créer une API simple avec Python + bouteille + MySQL
J'ai essayé de toucher Python (installation)
[Diplômé de l'encombrement d'articles] J'ai essayé de développer un service qui peut répertorier les articles par objectif
[2nd] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une expression régulière de "montant" en utilisant Python
[Python] J'ai essayé d'implémenter un tri stable, alors notez
J'ai essayé webScraping avec python.
J'ai essayé de créer une expression régulière de "temps" en utilisant Python
[3ème] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de créer une liste de nombres premiers avec python
J'ai essayé de créer une expression régulière de "date" en utilisant Python
J'ai essayé de mettre en œuvre un jeu de dilemme de prisonnier mal compris en Python
J'ai essayé de faire un processus d'exécution périodique avec Selenium et Python
J'ai essayé de créer une application de notification de publication à 2 canaux avec Python
J'ai écrit un script pour extraire les liens de pages Web en Python
[4th] J'ai essayé de créer un certain outil de type Authenticator avec python
[Python] J'ai essayé de créer un programme simple qui fonctionne sur la ligne de commande en utilisant argparse
Une histoire qui n'a pas fonctionné lorsque j'ai essayé de me connecter avec le module de requêtes Python
J'ai essayé de créer un outil d'échafaudage pour le framework Web Python Bottle
[1er] J'ai essayé de créer un certain outil de type Authenticator avec python
J'ai essayé de communiquer avec un serveur distant par communication Socket avec Python.
J'ai essayé de mettre en œuvre une blockchain qui fonctionne réellement avec environ 170 lignes
J'ai essayé de créer un programme qui convertit les nombres hexadécimaux en nombres décimaux avec python
Mayungo's Python Learning Episode 6: J'ai essayé de convertir une chaîne de caractères en nombre
J'ai essayé de faire un signal avec Raspeye 4 (édition Python)
[Outlook] J'ai essayé de créer automatiquement un e-mail de rapport quotidien avec Python
J'ai essayé de créer un environnement de développement Mac Python avec pythonz + direnv
Démarrez un serveur Web en utilisant Bottle et Flask (j'ai également essayé d'utiliser Apache)