J'ai ajouté une fonction pour enregistrer les données de tweet sur le client que j'ai créé la dernière fois. Ce n'est pas du tout une méthode intelligente, mais cela sert également à indiquer que cela a bien fonctionné.
Dernière fois> http://qiita.com/Gen6/items/11fa5265053da95fcf0b
mysite/settings.py
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
La partie sur laquelle je suis tombé par hasard dans Django (l'année dernière) s'appelle models.py. Je n'étais pas sûr de ce que je faisais réellement, mais c'est comme définir une soi-disant table de base de données.
myapp/models.py
from django.db import models
class Supermodel(models.Model):
user_name = models.CharField(max_length=140)
user_id = models.CharField(max_length=140)
user_img = models.CharField(max_length=140)
user_text = models.TextField(null=True)
user_created_at = models.CharField(max_length=140)
def __str__(self):
return self.user_name
Je veux enregistrer le nom d'utilisateur, l'ID, la vignette, le corps du texte, la date et l'heure à partir des données du tweet, donc c'est écrit comme ça. Je me demandais quel était le nom de Supermodel, mais je l'ai écrit, donc je ne peux pas m'en empêcher.
Je voulais aussi vérifier si cela fonctionne réellement depuis l'écran de gestion de Django, je vais donc l'écrire ici aussi.
myapp/admin.py
from django.contrib import admin
from myapp.models import Supermodel
class SupermodelAdmin(admin.ModelAdmin):
list_display = ('id','user_id','user_name','user_img','user_text','user_created_at')
admin.site.register(Supermodel,SupermodelAdmin)
$ python manage.py makemigrations myapp
$ python manage.py migrate
En cas de succès, passez à la suivante. Pour être honnête, je ne suis pas tout à fait sûr de cela, donc je pense qu'il vaut mieux lire les descriptions des autres.
myapp/views.py
from requests_oauthlib import OAuth1Session
import time, calendar
import datetime
import json
import re
import os
import requests
import sys, codecs
sys.stdout = codecs.getwriter('utf-8')(sys.stdout)
from django.http.response import HttpResponse
from django.shortcuts import render
from myapp.models import Supermodel
def index(request):
msg = request.GET.get('words')
C_KEY = '**************************'
C_SECRET = '**************************'
A_KEY = '**************************'
A_SECRET = '**************************'
url = 'https://api.twitter.com/1.1/statuses/update.json'
params = {'status': msg,'lang': 'ja'}
tw = OAuth1Session(C_KEY,C_SECRET,A_KEY,A_SECRET)
req = tw.post(url, params = params)
url = 'https://api.twitter.com/1.1/statuses/home_timeline.json'
params = {'count': 1}
req = tw.get(url, params = params)
if req.status_code == 200:
timeline = json.loads(req.text)
limit = req.headers['x-rate-limit-remaining']
for tweet in timeline:
Text = (tweet['text'])
User = (tweet['user']['screen_name'])
Name = (tweet['user']['name'])
Img = (tweet['user']['profile_image_url'])
Created_at = YmdHMS(tweet['created_at'])
data = Supermodel()
data.user_id = User
data.user_name = Name
data.user_img = Img
data.user_text = Text
data.user_created_at = Created_at
data.save()
Message = {
'Words': msg,
'timeline': timeline,
'API_limit': limit,
'Text': Text,
'User': User,
'Name': Name,
'Img': Img,
'Created_at': Created_at,
}
return render(request, 'index.html', Message)
else:
Error = {
'Error_message': 'API restreinte',
}
return render(request, 'index.html', Error)
def YmdHMS(created_at):
time_utc = time.strptime(created_at, '%a %b %d %H:%M:%S +0000 %Y')
unix_time = calendar.timegm(time_utc)
time_local = time.localtime(unix_time)
return int(time.strftime('%Y%m%d%H%M%S', time_local))
Suimasen avec un code sale est maintenant terminé.
Vous pouvez le vérifier sur localhost / admin. C'est vraiment simple. Réellement.
Si vous utilisez l'API de recherche, vous pouvez importer les résultats de la recherche dans la base de données.
Recommended Posts