페이스북 크롤링 with Koala (Updated 170604)
페이스북으로 로그인하기 with omniauth facebook
require 'koala'
class HomeController < ApplicationController
# before_action :authenticate_user!, except: [:welcome]
def welcome
@Postall = Post.all
end
def index
# @post = Post.all.reverse_order
# @post = Post.find(:all, :order => "posttime")
@post = Post.order("posttime DESC")
# @shows = Show.find(:all, :order => "date")
end
def mypage
scrap_ids = Scrap.where(user_id: current_user.id).pluck(:post_id)
@scrapped_posts = Post.where(id: scrap_ids)
end
def do_scrap
new_scrap = Scrap.new
new_scrap.post_id = params[:post_id]
new_scrap.user_id = current_user.id
new_scrap.save
redirect_to :back
end
def undo_scrap
Scrap.where(post_id: params[:post_id], user_id: current_user.id).take.destroy
redirect_to :back
end
def manualUpdate # 최근 100개 가져와서 가장 최근에 저장한 포스트 이후의 포스트만 저장.
oauth = Koala::Facebook::OAuth.new '315283835570846', 'c28c1a2d88199232c011c832d5c3ac2a'
graph = Koala::Facebook::API.new oauth.get_app_access_token
univ_name = 'SNUbamboo'
server_id = Server.where(name: univ_name).first.id
feed = graph.get_connection(univ_name, 'posts', {
limit: 100,
fields: ["likes",'message', 'id', 'from', 'type', 'picture', 'link', 'created_time', 'updated_time','comments']
})
latestTime = Post.maximum("posttime")
feed.each do |x|
if latestTime == nil || x['created_time'] > latestTime
new_Post = Post.new
new_Post.message = x['message']
new_Post.posttime = x['created_time']
new_Post.server_id = server_id
new_Post.save
end
end
oauth = Koala::Facebook::OAuth.new '315283835570846', 'c28c1a2d88199232c011c832d5c3ac2a'
graph = Koala::Facebook::API.new oauth.get_app_access_token
univ_name = 'yonseibamboo'
server_id = Server.where(name: univ_name).first.id
feed = graph.get_connection(univ_name, 'posts', {
limit: 100,
fields: ["likes",'message', 'id', 'from', 'type', 'picture', 'link', 'created_time', 'updated_time','comments']
})
latestTime = Post.maximum("posttime")
feed.each do |x|
if latestTime == nil || x['created_time'] > latestTime
new_Post = Post.new
new_Post.message = x['message']
new_Post.posttime = x['created_time']
new_Post.server_id = server_id
new_Post.save
end
end
univ_name = 'koreabamboo'
server_id = Server.where(name: univ_name).first.id
feed = graph.get_connection(univ_name, 'posts', {
limit: 100,
fields: ["likes",'message', 'id', 'from', 'type', 'picture', 'link', 'created_time', 'updated_time','comments']
})
latestTime = Post.where(server_id: server_id).maximum("posttime")
feed.each do |x|
if latestTime == nil || x['created_time'] > latestTime
new_Post = Post.new
new_Post.message = x['message']
new_Post.posttime = x['created_time']
new_Post.server_id = server_id
new_Post.save
end
end
redirect_to "/home/index"
end
def manualOldUpdate
# 서비스 런칭시에만 1회 실행. 얼마까지 긁어올지는 협의.
univ_name = 'SNUbamboo'
server_id = Server.where(name: univ_name).first.id
n = 0
num_to_crawl = 100 # 이거.
oauth = Koala::Facebook::OAuth.new '315283835570846', 'c28c1a2d88199232c011c832d5c3ac2a'
graph = Koala::Facebook::API.new oauth.get_app_access_token
while n <= num_to_crawl do
feed = graph.get_connection(univ_name, 'posts', {
limit: 100, offset: n,
fields: ["likes",'message', 'id', 'from', 'type', 'picture', 'link', 'created_t['message']
new_Post.posttime = x['created_time']
new_Post.server_id = server_id
new_Post.save
end
n = n + 100
end
redirect_to "/home/index"
end
def search
if params[:search]
@post = Post.search(params[:search]).order("created_at DESC")
else
@post = Post.all.order("created_at DESC")
end
end
end
우리조의 notion page입니다. 일러스트레이터는 현수가 다해준다고 했으니까 곧 이 페이지가 넘나 이뻐지겠죠 >< 조금 늦게 만들었지만 각자 자신의 아이디어를 조금씩 끄적여봅시다! 토요일에 각 조당 선정한 아이디어를 기반으로 해서 해커톤을 진행한다고 합니다!~
여행 후기 올리는 페이지 - 상단에 타임라인; 깔끔하게 핵심 내용만....(?)
https://s3-us-west-2.amazonaws.com/secure.notion-static.com/e1ce93a8-f580-49f3-a8d4-ccdd11763ef7/Untitled
(지난 주에 발표한 아이디어) 스터디(특정 목표 달성을 위한 모임) 모집 및 관리 돕는 웹 서비스