Skip to content

MyeongKim/ward

 
 

Repository files navigation

Stories in Ready

Ward는 Facebook의 Group에 대한 정보 및 분석을 제공하는 사이트입니다.

개발과 관련된 Facebook Group의 게시글들을 보다보면, 특정 게시글에 대하여 달려질 댓글들에 대한 알림을 받기 위해 “와드를 박습니다.”라는 댓글을 작성하거나 좋아요를 누르는 것을 볼 수 있었습니다. 이런 현상을 보며, Facebook Group의 타임라인 저편으로 사라져 찾아보기 힘든 많은 좋아요나 댓글이 달린 글들을 모아 보고 싶다는 생각을 기반으로 만들어진 사이트입니다.

이를 위해 Facebook Graph API를 이용하여 그룹에 대한 데이터를 수집하여 저장하고, 이에 대한 다양한 정보를 보여주는 기능과 관심있는 게시글이나 댓글들을 저장하여 간편하게 확인할 수 있는 기능을 제공합니다. 또한 그룹 관리자들이 Facebook Group에 올라오는 스팸들을 지우기 위해 많은 시간을 들이고 있는데, 게시글에 대한 일괄 삭제 기능을 제공하고 있으며, 추후 게시글을 분석하여 스팸에 대한 알림 등의 추가 기능을 구현할 예정입니다.

소개

필요한 도구들

Back-End

Front-End

Etc

설치방법

Docker의 경우

와드는 Docker를 사용하고 있으며, 이를 이용하여 손쉽게 설치할 수 있습니다. Docker를 더 자세히 알고 싶으시면, 이 사이트를 방문해 주세요.

cd [product_forder]
docker build -t=ward .
docker run --name ward -it -p 80:80 -v /var/log/ward:/var/log ward:latest
Mac의 경우
pip install -r requirements.txt
brew install redis
brew install node
npm install bower

cd [product_forder]
bower install
cd [product_forder]/www
python manage.py migrate
python manage.py createsuperuser

sudo redis-server
. run_celery.sh
Ubuntu의 경우
# JPype1-py3
sudo apt-get install default-jdk
sudo apt-get install g++ python3-dev

# lxml
sudo apt-get install python3-lxml
sudo apt-get install libxml2-dev libxslt-dev python-dev
sudo apt-get build-dep python3-lxml

# Pillow
sudo apt-get build-dep python-imaging
sudo apt-get install libjpeg8 libjpeg62-dev libfreetype6 libfreetype6-dev

# psycopg2
sudo apt-get install python-psycopg2
sudo apt-get install libpq-dev python-dev

# npm
sudo apt-get install -y python-software-properties python g++ make
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs
sudo apt-get install npm
sudo npm install -g bower

# redis
sudo apt-get install redis-server

cd workspace
sudo chown www-data:www-data -R *

cd [product_forder]
bower install
cd [product_forder]/www
python manage.py migrate
python manage.py createsuperuser

환경설정

setting.py 설정

반드시 ward/wwww/fb_archive안에 있는 local_settings.py파일을 자신의 환경에 맞추어 설정해 주세요.

OAuth Setting 설정

  1. admin 페이지(http://localhost/admin)에 있는 Social application카테고리에 들어갑니다.
  2. Add social application를 클릭하고 Name에 facebook을, Client id에 app id를, Secret key에 app secret을 입력해주시면 됩니다. 더 자세한 사항은 이 사이트를 방문해 주세요.

기타설정

Pycharm

만약 Pycharm을 사용하시는 도중 unresolved reference issue가 발생하면 아래와 같은 방법으로 설정 해주세요.

  1. www폴더를 오른쪽 클릭하여, Mark Directory As에 있는 Source root를 설정 해주세요.
  2. Pycharm의 Preferences...Build, Execution, Deployment > Console > Python Console에 있는 add source roots to PYTHONPATH에 체크해 주세요.
  3. 상단의 내용이 이해가 안가실경우 이 사이트를 방문해 주세요.
  4. Preferences... > Languages & Frameworks > Django에 가셔서 Django project root를 상단의 첫번째 설정하셨던 www폴더로 설정해주시고 Settingsfb_archive/settings.py로, Manage scriptmanage.py로 설정해주세요.

라이센스

Ward는 MIT 라이센스하에 배포 됩니다.

주요화면

그룹 목록 화면

group list

analysis 화면

group analysis group analysis group analysis

user 화면

group user group user

management 화면

group management group management group management

ward 화면

group ward

파일 및 폴더

.
├── Dockerfile                                  : Docker 파일
├── LICENSE                                     : 라이센스
├── NOTICE                                      : 사용한 라이브러리들에 대한 라이센스
├── README.md                                   : README 파일
├── bower.json                                  : Bower 파일
├── conf                                        : 배포시에 사용되는 설정 파일
├── requirements.txt                            : 필요한 라이브러리 목록
└── www                                         : 프로젝트 루트 폴더
    ├── analysis                                : 분석 앱 폴더
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── analysis_core.py                    : 분석 관련 핵심 코드
    │   ├── migrations
    │   ├── models.py
    │   ├── spam_app.py                         : 스팸 관련 코드
    │   ├── tests.py
    │   ├── texts                               : 분석에 사용되는 문서
    │   ├── urls.py
    │   └── views.py
    ├── archive                                 : Facebook 그룹 기록 앱 폴더
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── fb                                  : Facebook과 관련된 기능
    │   │   ├── __init__.py
    │   │   ├── fb_lookup.py                    : Facebook의 그룹 아이디 찾기 코드
    │   │   ├── fb_query.py                     : Facebook Graph API 쿼리 코드
    │   │   ├── fb_request.py                   : Facebook Graph API 요청 클래스 코드
    │   │   └── fb_tasks.py                     : Facebook 그룹 데이터 수집 코드
    │   ├── migrations
    │   ├── models.py
    │   ├── rest                                : Djang Rest Framework를 위한 설정 파일
    │   │   ├── __init__.py
    │   │   ├── pagination.py                   : Pagination을 위한 설정 파일
    │   │   └── serializer.py                   : Serializer를 위한 설정 파일
    │   ├── sql                                 : Raw SQL를 생성하기 위해 테스트해본 SQL
    │   ├── tasks.py                            : Facebook 그룹 데이터 수집 코드를 이용하는 Celery 작업들
    │   ├── templates
    │   │   └── archive                         : Facebook 그룹 기록 앱 Templates
    │   │       ├── alert.html                  : 알림 Template
    │   │       ├── group                       : 그룹과 관련된 Templates
    │   │       │   ├── analysis.html           : 그룹 분석 Template
    │   │       │   ├── archive_header.html     : 그룹과 관련된 Templates의 Header 
    │   │       │   ├── list.html               : 그룹 리스트 Template
    │   │       │   ├── list_admin.html         : 그룹 리스트 관리자용 Template
    │   │       │   ├── management.html         : 그룹 관리 Template
    │   │       │   ├── search.html             : 그룹 검색 Template
    │   │       │   ├── sidebar.html            : 그룹과 관련된 Templates의 Sidebar
    │   │       │   └── user.html               : 그룹 사용자 Template
    │   │       ├── reports.html                : 스팸 신고 리스트 Template
    │   │       ├── user                        : 사용자와 관련된 Templates
    │   │       │   ├── user.html               : 사용자 Template
    │   │       │   └── user_header.html        : 사용자와 관련된 Templates의 Header
    │   │       └── wards.html                  : 와드 리스트 Template
    │   ├── tests.py
    │   ├── urls.py
    │   ├── utils                               : 도구 모음
    │   │   ├── __init__.py
    │   │   ├── data_utils.py                   : 데이터 관련된 유틸들
    │   │   ├── date_utils.py                   : 날짜와 관련된 유틸들
    │   │   └── utils.py                        : 기타 유틸들
    │   └── views.py                            : views (Django Rest Framework의 View들도 포함
    ├── deploy
    ├── fabfile.py
    ├── fb_archive                              : 프로젝트 기본 폴더
    │   ├── __init__.py
    │   ├── celery.py                           : Celery 설정
    │   ├── local_settings.py                   : 프로젝트 개인 설정
    │   ├── settings.py                         : 프로젝트 설정
    │   ├── urls.py 
    │   └── wsgi.py                             : wgsi 설정
    ├── manage.py
    ├── run_celery.sh                           : Celery 실행 쉘 파일
    ├── static
    │   ├── custom                              : 프로젝트 정적 파일 폴더
    │   │   ├── css                             : CSS 파일들
    │   │   │   ├── base.css                    : 공통 CSS 파일
    │   │   │   └── timeline.css                : Start Bootstrap의 Timeline CSS 파일
    │   │   └── js                              : Javascript 폴더
    │   │       ├── ajax.js                     : Ajax 관련 자바스크립트 파일
    │   │       ├── archive                     : Facebook 그룹 기록 앱에 관련된 자바스크립트 파일
    │   │       │   └── js
    │   │       │       ├── analysis.js         : 분석 자바스크립트 파일
    │   │       │       ├── archive.js          : Facebook 그룹 기록 공통 파일
    │   │       │       ├── group.js            : 그룹 자바스크립트 파일
    │   │       │       ├── management.js       : 관리 자바스크립트 파일
    │   │       │       ├── report.js           : 스팸 신고 자바스크립트 파일
    │   │       │       ├── search.js           : 검색 자바스크립트 파일
    │   │       │       ├── user.js             : 사용자 자바스크립트 파일
    │   │       │       └── ward.js             : 와드 자바스크립트 파일
    │   │       └── base.js                     : 기본 자바스크립트 파일
    │   ├── images                              : 이미지 폴더
    │   └── libraries                           : Bower로 설치하지 못하는 라이브러리들
    └── templates                               : 공통 Templates
        ├── about.html                          : 소개 Template
        ├── base.html                           : 공통 Template
        ├── errors                              : 오류 관련 Templates
        ├── registration                        : 회원가입 관련 Templates
        └── socialaccount                       : Oauth 관련 Templates

About

Facebook Group Archive with Django

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • HTML 42.3%
  • Python 38.8%
  • JavaScript 12.7%
  • CSS 3.5%
  • Shell 2.7%