토렌트 사이트에서 RSS.xml 생성하기

2018-08-30 클리앙
https://www.clien.net/service/board/cm_nas/12534455

전 Gsuite를 사용하고 있어서 요즘 부담 없이 파일을 받고 있습니다. 받고자 하는 사이트들을 RSS로 만들어서 사용하고 있는데, 몇 개 작업하다 보니 대게 비슷하여 이걸 일반화 시켜보았습니다.

요즘 토렌트 사이트들 열에 아홉은 gnuboard를 사용하고, 세부 화면에서 magnet을 제공합니다. 이를 이용하는 방식으로 gnuboard 사용한 사이트를 게시판 기준으로 rss.xml 파일을 생성하고 설정에 따라 자막 파일 등을 바로 다운로드합니다.

※ 토렌트 목록 화면에서 주소창에 /bbs/board.php?bo_table= , 다운로드 링크에 /bbs/download.php 이 있는 사이트가 gnuboard를 이용한 사이트입니다.

※ Synology에 적용하는 방식으로 설명합니다.

이전 방식과 차이점

● 이전에는 RSS를 요청할 때 생성하는 반면 이 방식은 파일을 먼저 만들어 놓습니다. 따라서 작업 스케줄러나 crontab 등을 이용해야 합니다.

● 크롤링에 selenium을 사용합니다. headless-browser라고 생각하시면 되는데, 직접 브라우저를 통해 사이트를 방문하는 것과 동일하나 눈에 보이지 않는 브라우저를 사용하는 방식입니다. 이전에는 사이트를 긁어 올 때 쿠키나 리퍼러 등을 설정해줘야 하는 경우가 있었는데 selenium을 사용하면 신경 쓸 필요가 없습니다. 사용한 가장 큰 이유는 cloudflare를 이용하는 사이트를 긁어오기 위함입니다.

driver로는 chrome, firefox도 있으나 synology에서는 docker 버전 phantomjs를 사용했습니다. 타 OS에서 사용 시 드라이버만 변경하면 됩니다.

● python 2.7 기준으로 작성되었습니다.

설치, 적용 방법, github를 이용한 배포 순으로 설명드리겠습니다.

최대한 자세히 설명하고자 하지만 아무래도 코드를 수정해야 하기에 초보자(?)분들은 어렵게 느껴지실 겁니다. 또 제 synology은 이미 세팅이 끝난 거라서 미쳐 설명하지 못한 내용이 있을 수도 있으니 빠진 부분이 있을 수도 있겠네요.

1. 실행환경 설치

– PhantomJS 설치

docker에서 phantomjs로 검색하여 wernight/phantomjs 다운로드

대표

사진 설명을 입력하세요.

이미지 생성 및 실행

대표

docker 비디오 형식이 이미지가 만들어지고 실행상태가 됩니다. (이름은 랜덤)

대표

브라우저에서 synology IP:8910 접속하여 그림과 같이 나오면 설치가 완료된 상태입니다.

– python 2.7

python 2.7은 synology에 기본적으로 설치되어 있습니다. (기억이 잘 안 나네요)

2. 토렌트 사이트 적용

이제 원하는 사이트를 적용하는 방법입니다.

makerss_setting.py 파일을 문서편집기로 엽니다.

주석 처리(“”” “”” ) 된 곳에 몇 가지 샘플이 더 있습니다. 사이트별-게시판별로 세팅만 해주면 됩니다.

– TORRENT_SITE_TITLE : 사이트 이름입니다. 파일명이 됩니다.

– TORRENT_SITE_URL : 토렌트 사이트 주소

– BO_TABLE_LIST : bo_table= 뒤에 오는 게시판별 ID입니다. 여러 개 할 경우 [‘이름’, ‘이름 2’, ‘이름 3’] 형식으로 추가할 수 있습니다.

– MAX_PAGE : 최대 탐색할 페이지 값입니다. 1이면 첫 페이지만 합니다.

– XPATH_LIST_TAG : 게시글 목록 화면에서 게시글의 위치를 나타나는 xpath

예제) downrose.com에서 애니메이션 게시판

url : https://downrose.com/bbs/board.php?bo_table=ANIMATION

XPATH_LIST_TAG 찾기

크롬 브라우저에서 첫 번째 게시물 제목에 마우스를 위치시키고 우 클릭. 메뉴에서 검사를 누릅니다.

대표

사진 설명을 입력하세요.

크롬이 개발자 모드로 변경되고 오른쪽에 HTML 코드가 나오면서 첫 게시물과 관련된 태그가 음영 처리되어 있습니다. 이때 모든 사이트가 항상 A 태그에 있지는 않습니다. TR 태그나 LI 태그에 있을 수도 있는데 위아래에 A 태그가 항상 있습니다. 이 A 태그에서 마우스 우 클릭 Copy -> Copy XPath를 클릭합니다.

대표

사진 설명을 입력하세요.

문서 편집기에서 Ctrl+V 하면 아래처럼 xpath가 나옵니다.

//*[@id=”fboardlist”]/div[1]/table/tbody/tr[1]/td[4]/a

두 번째 게시물에서 이 작업을 한 번 더 해주면

//*[@id=”fboardlist”]/div[1]/table/tbody/tr[2]/td[4]/a

이렇게 나오는데 첫 번째와 두 번째 게시물의 차이는 tr[1] tr[2]입니다.

이 숫자 부분만 %s 변경해주면 XPATH_LIST_TAG 값이 됩니다.

XPATH_LIST_TAG = ‘//*[@id=”fboardlist”]/div[1]/table/tbody/tr[%s]/td[4]/a’

저장 후 python makerss_main.py를 실행해 주면 downrose_ANIMATION.xml 파일이 생성됩니다.

대표

사진 설명을 입력하세요.

이 게시판은 자막 파일도 같이 제공합니다.

DOWNLOAD_FILE = ‘ON’ 추가하시면 폴더에 파일을 다운로드합니다.

대표

사진 설명을 입력하세요.

갤러리형 게시판도 동일한 방법으로 적용 가능합니다.

같은 사이트 최신 영화 게시판의 경우

첫 번째 : //*[@id=”fboardlist”]/div[1]/div/div/div[2]/strong/a

두 번째 : //*[@id=”fboardlist”]/div[2]/div/div/div[2]/strong/a

XPATH_LIST_TAG : ‘//*[@id=”fboardlist”]/div[%s]/div/div/div[2]/strong/a’

가 됩니다.

Advanced

– 제가 주로 사용하는 사이트만 테스트했고, 사이트별로 제각각이기에 잘 안 될 수도 있습니다.

– main_setting.py 하단의 GetList 함수만 수정하시면 검색어 처리나, gnuboard 이외의 사이트도 가능하니라 생각됩니다.

– 첫 번째 두 번째 게시글의 차이가 2 이상 나면 STEP : 2처럼 차이나는 값이 추가하면 좀 더 빨리 탐색합니다.

– 토렌트하자의 경우 magnet 값이 A 태그에 없습니다. 제가 사용하기에 예외적으로 추가했으니 샘플에서 복사하셔서 사용하시기 바랍니다.

– 파일 다운로드는 A 태그로 직접 받을 수 있는 것만 가능합니다. 티프리카 처럼 외부 사이트로 간다든지, javascript로 처리된 경우에는 직접 코드를 수정하셔야 합니다.

3. Github를 이용한 배포

앞서 생성한 xml 파일을 웹 서버에 올리고 DownloadStation에 등록하면 바로 사용 가능합니다. 저는 synology 웹서버에 올리지 않고 github 올려서 공유 중인데 xml 생성 후 자동으로 올리는 방법을 알려드리겠습니다.

Github는 무료 웹호스팅을 제공하는데 용량이 1GB / 월 트래픽 100GB를 제공합니다. 장점으로는 git 명령어로 ssh에서 자동화 시킬 수 있는 것과 절대 망할 일이 없다는 점 정도로 들 수 있겠네요. 단점으로는 동적 페이지는 작성할 수 없습니다.

https://opentutorials.org/course/3084/18891
웹호스팅 (github pages) - 생활코딩

웹호스팅 (github pages) – 생활코딩

웹호스팅 (github pages) 2017-12-02 17:03:01 — 직접 웹서버를 운영하는 일은 쉽지 않은 일입니다. 우선 컴퓨터가 있어야 하고요, 컴퓨터가 냉장고처럼 항상 켜져 있어야 합니다. 웹서버라는 프로그램을 배워서 설치해야 합니다. 또 인터넷을 통해서 외부로 정보를 전송할 수 있게 설정을 해야 합니다. 쉽지 않습니다. 그래서 이런 일을 대행해 주는 회사들이 있습니다. 인터넷에 연결된 컴퓨터 하나 하나를 호스트라고 합니다. 이런 컴퓨터를 빌려주는 사업을 호스팅이라고 합니다. 웹서버를 전문적으로 빌려주는 비즈니스를

opentutorials.org

이 글을 따라 자신의 웹 페이지를 생성해줍니다.

– 패키지 센터에서 Git Server를 설치합니다.

– ssh key 발급.

– github에 공개 key 등록

github에 로그인 후 상단 우측 아이콘 클릭 -> Settings 클릭 -> 좌측 SSH and GPG keys 클릭 -> New SSH key 클릭

대표

사진 설명을 입력하세요.

SSH에서 복사한 내용을 Key 란에 입력 후 Add SSH key 클릭하여 등록

대표

사진 설명을 입력하세요.

대표

Clone or download 버튼을 누르고 git@github,….. 내용을 복사합니다.

commit.sh 파일을 열어서 4번째 줄 cd에 git 경로를 수정하고 저장합니다.

commit.sh 파일을 실행 했을 때 위와 같이 나오면 정상입니다.

이제 makerss 폴더의 makerss.sh 파일을 열고 자신의 경로에 맞게 수정해줍니다.

한 번 실행해봅니다. 정상적으로 끝나면 자신의 git에 xml 파일이 올려져 있어야 하며 https://soju6jan.github.io/downrose_ANIMATION.xml 와 같은 주소를 입력하면 정상적으로 xml 파일이 나옵니다.

이제 makerss.sh 파일을 작업 스케줄러에 등록해 줍니다.

다운로드 스테이션에서 https://soju6jan.github.io/downrose_ANIMATION.xml 경로로 RSS를 등록하여 사용하면 됩니다.

Hits: 528

댓글 남기기

Close Menu