pixabay
์ง๋ ์๊ฐ์ ๊ตฌํํ ๊ฒ์์ ์ข ๋ ๋ค๋ฌ์ด ๋ดค๋ค. ์ฌ์ฉํ๋ค ๋ณด๋ ๋ฌธ์ ๊ฐ ๋ณด์๊ธฐ ๋๋ฌธ์ด๋ค. tag, title, body ๊ฐ์ ๋ชจ๋ ๋ฃ์ผ๋ฉด ์กฐ๊ฑด์ ๋ง๋ ๋ชจ๋ ๊ฒฐ๊ณผ๊ฐ ๊ฒ์๋๋๋ฐ ์๊ฐํด๋ณด๋ ๋ด๊ฐ ์๋ํ ๋ฐ์๋ ์กฐ๊ธ ๋ค๋ฅด๋ค. ์ฆ tag or title or body๋ก ์ฐ์ฐ๋ ๊ฒ.
๋ณดํต ์ด ์ธ ๊ฐ๊ฐ์ ๋์์ ์ฌ์ฉํ์ฌ ๊ฒ์ํ ๊ฒฝ์ฐ, tag๊ฐ ํฌํจ๋ ๊ธ๋ชฉ๋ก์์ title ํน์ body๊ฐ์ด ํฌํจ๋์ด ์๋ ๊ธ์ ์ถ๊ฐ๋ก ๊ฒ์ํ๊ธฐ ์ํด์๋ค. ์ฆ tag and (title or body).
๊ทธ๋ผ ๋ฐ๊ฟ๋ณด์. ๋ฐ๊พธ๋ ๊น์ python์ ํด๋์ค๋ก ๊ตฌํํด ๋ณด์. ์์ง๊น์ง ํด๋์ค๊ฐ ์ด๋ค ์ ์์ ๋ ์ข์์ง๋ ๋ชจ๋ฅด๊ฒ ์ง๋ง ์ผ๋จ ํด๋ณด์. (#python์ด๋ณด#์ด๋ ต๋ค์ด๋ ค์)
import json
from steem import Steem
class Search:
s = Steem()
account = 'june0620'
q_titles = []
q_texts = []
q_tags = []
blogs = []
def __init__(self, query: dict):
self.q_titles = query['titles']
self.q_texts = query['texts']
self.q_tags = query['tags']
self.blogs = self.s.get_blog(self.account, 0, 400)
def search_posts(self):
s_blogs = []
for blog in self.blogs[:]:
blog_data = blog['comment']
title = blog_data['title'].lower()
body = blog_data['body'].lower()
tags = self.get_tags(blog_data['json_metadata'])
if not self.q_tags or set(self.q_tags) & set(tags):
if self.is_keywords_contains(title, body):
s_blogs.append(blog)
return s_blogs
def is_keywords_contains(self, title: str = [], body: str = []):
if any(q_title in title for q_title in self.q_titles):
return True
if any(q_text in body for q_text in self.q_texts):
return True
return False
def get_tags(self, json_metadata: str):
metadata = json.loads(json_metadata)
if metadata:
return metadata['tags']
else:
return []
django์ ListView๋ฅผ ์์๋ฐ์ queryset์ ๊ฒ์๋ ๋ชฉ๋ก์ ๋ฃ์ด์ฃผ๊ณ html์ ๋ฟ๋ ค์ค๋ค.
from django.http import HttpResponse
from django.views.generic import ListView
from .services import Search
from steem import Steem
s = Steem()
def main_view(request):
data = s.get_account('june0620')
response = HttpResponse()
response.write(data)
return response
class posts(ListView):
template_name = 'album.html'
context_object_name = 'all_posts'
def get(self, request, *args, **kwargs):
# self.queryset = s.get_blog(kwargs['account'], entry_id=0, limit=100)
query = {
'tags': ['kr'],
'titles': ['python'],
'texts': ['์ฌ๋ํ๊ฒ ์ต๋๋ค']
}
se = Search(query=query)
self.queryset = se.search_posts()
return super().get(request, *args, **kwargs)
๊ฐ๋จํ๊ฒ ํ
์คํธํด๋ณด๋ ์ ๋๋ ๋ฏํ๋ค. (๋์ค์๋ django์ test ๊ธฐ๋ฅ๋ ์ข ์จ๋ด์ผ๊ฒ ๋ค.)
[Cookie ๐
]
Python 3.7.4
Django 2.2.4
steem-python 1.0.1
goorm IDE 1.3