2022-01-05
수정
https://drive.google.com/file/d/1Wo4_HBUkzGxm0DQcGijWKEUVtFYDX0Ev/view?usp=sharing
2020-08-19
나스당에 예전 php 방식의 크롤링 글이 올라왔습니다.
저도 호기심에 예전 코드가 돌아가는지 확인해 봤습니다.
크롤링은 변경사항 없이 그대로 동작했고, filetender 부분은 약간 수정하니 동작합니다.
발견하여 사용할 사람은 없겠지만 수정한 김에 올립니다.
filetender는 아마 크롤링 방지 기능이 있어서 자주 요청하면 차단 당할 확률이 높을 겁니다.
====================================================================
2018-10-20
고기상자님 코드를 바탕으로 자막 파일만 받는 것만 했었다. 영화만 이 파일로 받고, 영화 이외에는 다른 분들이 업데이트해주시는 것으로 사용했으나 사이트가 자꾸 변경되어 여러 개를 같이 고쳐야 하기에 이 파일로 티프리카 모두 적용하는 것으로 변경한다.
2018-10-27 수정
2018-11-13 수정
2018-11-16 DLM 관련 추가
2018-11-16 오후 9시 30분 재수정
- query에 key말고 table 추가됨.
2018-11-17 오후 1시 수정
- query table뒤에 숫자 붙음
2018-11-18 오후11시 수정
- post -> get
2018-11-20 오후4시 수정
- query regex로 파싱
2019-05-20
- 티프리카가 에전 상태로 변경되어 맞게끔 수정했습니다.
다시 정상적으로 동작합니다. 파일 업데이트 하세요
2019-08-02
- 캡챠 다시 적용하여 파일로 받는 건 안된다고 합니다.
마그넷으로 받는 것은 괜찮으니 마그넷으로 이용하세요
URL에 &sj_all=on_magnet 를 추가하면 됩니다.
<사용법>
1. 일반적인 사용법
1) 티프리카 파라미터
티프리카를 브라우저로 열어서 주소창에 있는 b_id와 sc 또는 ca 값을 그대로 사용한다. mode=list, x, y 생략
- b_id : 게시판 이름
- sc : 검색어
- ca : 카테고리
2) 전용 파라미터
- sj_page 값 : 숫자 생략시 : 1
탐색할 최대 페이지 값. 1이면 첫 페이지만, 이외는 지정된 페이지까지.
- sj_download_mode 값: magnet / torrent 생략시: torrent
filetender를 거치지 않고 마그넷을 반환
사용예) sj_page를 넣지 않을 경우 쿼리가 동일하다
드라마 720-next 검색시
브라우저 주소창 : http://www.tfreeca22.com/board.php?b_id=tdrama&mode=list&sc=720p-next&x=40&y=22
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&sc=720p-next
드라마 미드 탐색시 주소창
브라우저 주소창 : http://www.tfreeca22.com/board.php?mode=list&b_id=tdrama&ca=미드
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&&ca=미드
다운로드 모드시 마그넷으로 받기
드라마 720-next
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&sc=720p-next&sj_download_mode=magnet
2. 모든파일 다운로드(자막)
1) sj_all 값 : off / on / dummy 생략시 off
off이면 하나의 파일만, on이면 게시물에 있는 모든 파일을 받는다.
영화나 애니에서 자막파일까지 받을 때 사용한다.
on이면 파일 개수만큼 링크를 만들어야 하기에 오래 걸린다.
2) sj_all=on 일때
- sj_all_movie_only_1080p : on / off 생략시 off
내가 필요해서 만들었다. 영화 탐색 시 1080p, 720p 토렌트 파일이 모두 존재할 때 720p 파일을 목록에서 제외한다.
- sj_all_max : 생략시 20, 전체 받을경우 -1
티프리카는 한페이지에 35개의 목록이 있다. 자막을 받기 위해 리스트를 생성하려면,
매 게시물마다 request를 보내서 토렌트와 자막을 리스트화한다.
브라우저에 실행하면 2~3분 정도 걸리며 모두 갱신되나, synology download station 에서는 timeout이 발생한다.
즉 한 페이지 모두를 생성하는데 걸리는 시간을 기다리지 못하여 에러가 발생한다. 이를 막고자 이 값을 주면 주어진 값 게시물만 리스트화한다.
예) sj_all_max=20 일 경우 최근 게시물중 20개만 리턴
갱신이 안 되는 것 같을 때 이 값을 변경.
- sj_except_no_sub : on / off 생략시 off
on일경우 무자막으로 나와있는 게시물은 받지 않는다
- sj_sub_to_tar 값: on / off 생략시:off
on일 경우 torrent, zip 파일이 아닌 파일은 tar로 압축해서 전송한다. (대부분 자막)
3) sj_all=dummy 일때
sj_all=on인 경우 갱신 시 타임아웃 걸릴 가능성도 있고, 한꺼번에 게시물이 올라올 경우 놓칠 수도 있다.
이를 피하기 위해 목록을 넘길 때는 dummy로 한 게시물당 4개씩 고정적으로 넘긴다. 다운로드 시에는 각 인덱스별로 파일을 받게된다.
이 방법으로 할 경우에는 sj_all_movie_only_1080p 이 사용할 수가 없고, 한국영화 같이 한 게시물당 파일이 하나만 있을 경우 3개는 필요가 없어서
0byte 짜리 sj_tf.php 파일이 계속 쌓이게 된다.
4) sj_all=on_magnet
각 페이지 첫번째 마그넷을 리스트에 포함하여 반환한다. sj_download_mode=magnet은 첫번째 RSS 리스트에 이 페이지 주소가 들어간 후,
실제 다운로드 받을려고 다시 연결할 때 마그넷을 넘긴다.
sj_all=on_magnet 은 RSS 목록 요청시에 미리 마그넷 정보를 포함하는 방식이다
각 방식의 차이가 있으니 선택적으로 사용하기 바라며, 이를 회피하기 위해서는 미리 주기적으로 xml 파일을 만들어 놓고 이 고정 파일을 등록해서
사용하는 방법이 가장 좋겠으나, 스케줄러 세팅하는 것도 또 귀찮은 일이다.
사용예)
영화 액션 카테고리 자막까지 받기
브라우저 주소창 : http://www.tfreeca22.com/board.php?mode=list&b_id=tmovie&ca=액션
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&ca=액션&sj_all=on
영화 자막까지
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=on&sj_all_movie_only_1080p=on
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=on&sj_all_movie_only_1080p=on&sj_all_max=20
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=dummy
3. DLM
다운로드 : https://github.com/soju6jan/soju6jan.github.io/tree/master/etc
미리 만들어 놓은 2개의 DLM 있다.
sj_tf_tv.dlm은 국내방송을, sj_tf_movie.dlm은 sj_all=on 모드로 검색하여 자막까지 표시되며,
sj_tf 파일이 web/tfreeca/ 폴더 아래에 있다는 가정하에 작성되어 있다.
php 경로변경이 필요하거나 다른 게시판을 이용하려면 직접 수정한 후 dlm을 생성하면 된다.
1) 압축풀기
tar zxf sj_tf_tv.dlm
하면 INFO search.php 파일이 나온다
2) 압축하기
tar zcf sj_tf_my.dlm INFO search.php
3) 수정방법
- info 파일에서 sj_tf_tv => sj_tf_my
- search.php 파일에서 class 이름과 원하는 쿼리 변경
--------------------------------------------------------------------------------------------------------------------------
고기상자님이 만드신 rss를 잘 사용하던중 매번 자막받기가 힘들어서 허접하지만 조금 수정 해봤습니다.
티프리카용이고 기존에 사용하시던 분 위주로 간단히 설명드리자면,
기존 rss는 링크가 여러개 있더라도 항상 맨 위의 것만 가져왔는데, 이건 모든 링크가 rss에 표시되게 했습니다.
한번 더 세부창으로 들어가서 목록을 가져오기 때문에 기존 방식보다 느리고 자동다운로드 설정이시라면
영화 같은 경우 자막 뿐 아니라 모든 릴을 다 받게되니 주의하세요.
일반 TV영상은 기존꺼 사용하시고 자막이 필요하신 게시판에서만 사용하시면 될 것 같네요.
- 사용법
파일 하나로 웹 서버에 넣으시고 접속하시면 되는데 범용적으로 쓰기위해 쿼리부분을 약간 수정했습니다.
애니메이션 탭에서 Leopard로 검색했을 경우 주소창에 아래와 같이 표시됩니다.
http://www.tfreeca22.com/board.php?b_id=tani&mode=list&sc=Leopard&x=0&y=0
여기서 ? 다음 부분인 b_id=tani&mode=list&sc=Leopard&x=0&y=0
이걸 = -> : & -> `(역따옴표) 으로 변경해서 rss_smi.php?q= 다음에 붙여주시면 됩니다.
예)
http://www.tfreeca22.com/board.php?b_id=tani&mode=list&sc=Leopard&x=0&y=0
==> http://서버 경로/rss_smi.php?q=b_id:tani`mode:list`sc:Leopard`x:0`y=0
http://www.tfreeca22.com/board.php?mode=list&b_id=tdrama&ca=미드
==> http://서버 경로/rss_smi.php?q=mode:list`b_id:trama`ca:미드
mode:list는 생략가능
브라우저로 사이트 확인하시다가 필요할 경우 board.php 뒷부분을 넣는다고 생각하시면 됩니다.
감사합니다.
뭘 잘못 적용한걸까요?
금일자 (10.19) 서버 바뀐 부분에 대해서도 잘 적용이 됩니다.
위 방법으로 안되네요..
------------------------------------------------------------
고기상자님 코드를 바탕으로 자막 파일만 받는 것만 했었다. 영화만 이 파일로 받고, 영화 이외에는 다른 분들이 업데이트해주시는 것으로 사용했으나사이트가 자꾸 변경되어 여러 개를 같이 고쳐야 하기에 이 파일로 티프리카 모두 적용하는 것으로 변경한다.
<사용법>
1. 일반적인 사용법
티프리카 파라미터
티프리카를 브라우저로 열어서 주소창에 있는 b_id와 sc 또는 ca 값을 그대로 사용한다. mode=list, x, y 생략
- b_id : 게시판 이름
- sc : 검색어
- ca : 카테고리
전용 파라미터
- sj_page 값 : 숫자 생략시 : 1
탐색할 최대 페이지 값. 1이면 첫 페이지만, 이외는 지정된 페이지까지.
사용예) sj_page를 넣지 않을 경우 쿼리가 동일하다
- 드라마 720-next 검색시
브라우저 주소창 : http://www.tfreeca22.com/board.php?b_id=tdrama&mode=list&sc=720p-next&x=40&y=22
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&sc=720p-next
- 드라마 미드 탐색시
브라우저 주소창 : http://www.tfreeca22.com/board.php?mode=list&b_id=tdrama&ca=미드
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&ca=미드
2. 모든 파일 다운로드 (자막)
전용 파라미터
- sj_all 값 : off / on / dummy 생략시 off
off이면 하나의 파일만, on이면 게시물에 있는 모든 파일을 받는다. 영화나 애니에서 자막파일까지 받을 때 사용한다. on이면 파일 개수만큼 링크를 만들어야 하기에 오래 걸린다.
* sj_all=on 일때
- sj_all_movie_only_1080p : on / off 생략시 off
내가 필요해서 만들었다. 영화 탐색 시 1080p, 720p 토렌트 파일이 모두 존재할 때 720p 파일을 목록에서 제외한다.
- sj_all_max : 생략시 20, 전체 -1
티프리카는 한페이지에 35개의 목록이 있다. 자막을 받기 위해 리스트를 생성하려면, 매 게시물마다 request를 보내서 토렌트와 자막을 리스트화한다. 브라우저에 실행하면 2~3분 정도 걸리며 모두 갱신되나, synology download station 에서는 timeout이 발생한다. 즉 한 페이지 모두를 생성하는데 걸리는 시간을 기다리지 못하여 에러가 발생한다. 이를 막고자 이 값을 주면 주어진 값 게시물만 리스트화한다.
예) sj_all_max=20 일 경우 최근 게시물중 20개만 리턴
갱신이 안 되는 것 같을 때 이 값을 변경.
- sj_except_no_sub : on / off 생략시 off
on일경우 무자막으로 나와있는 게시물은 받지 않는다
*sj_all=dummy
위의 경우 갱신 시 타임아웃 걸릴 가능성도 있고, 한꺼번에 게시물이 올라올 경우 놓칠 수도 있다. 이를 피하기 위해 목록을 넘길 때는 dummy로 한 게시물당 4개씩 고정적으로 넘긴다. 다운로드 시에는 각 인덱스별로 파일을 받게된다. 이 방법으로 할 경우에는 sj_all_movie_only_1080p 이 사용할 수가 없고, 한국영화 같이 한 게시물당 파일이 하나만 있을 경우 3개는 필요가 없어서 0byte 짜리 sj_tf.php 파일이 계속 쌓이게 된다.
각 방식의 차이가 있으니 선택적으로 사용하기 바라며, 이를 회피하기 위해서는 미리 주기적으로 xml 파일을 만들어 놓고 이 고정 파일을 등록해서 사용하는 방법이 가장 좋겠으나, 스케줄러 세팅하는 것도 또 귀찮은 일이다.
사용예)
영화 액션 카테고리 자막까지 받기
브라우저 주소창 : http://www.tfreeca22.com/board.php?mode=list&b_id=tmovie&ca=액션
=> http://자신의서버주소/sj_tf.php?b_id=tdrama&ca=액션&sj_all=on
영화 자막까지
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=on&sj_all_movie_only_1080p=on
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=on&sj_all_movie_only_1080p=on&sj_all_max=20
http://자신의서버주소/tfreeca/sj_tf.php?b_id=tmovie&sj_all=dummy
720p-NEXT` by retry_failed plugin because waiting before retrying entry which has failed in the past. (failure reason: Unexpected html content received from `http://soju6jan.cafe24.com/sj_tf.php?b_id=tdrama&id=702362&sc=720p-NEXT&page=1&sj_mode=d` - maybe a login page?)
근데 컴퓨터 qbitorrent랑 utorrent에서는 소주6잔님 RSS는 되고 고기상자님RSS는 또 안되네요^^;
일단 따로 따로 쓰고있는데 제가 옵션을 잘못준건지 모르겠네요
참고로 flexget에서는
templates: global: transmission: host: 127.0.0.1 port: 9091 username: xxx password: xxxtasks: kdrama: rss: 'http://soju6jan.cafe24.com/sj_tf.php?b_id=tdrama&sc=720p-NEXT' regexp: accept: - 하나뿐인 reject: - mp4 - NEXTc - NEXTb set: path: '/DataVolume/shares/Torrent/Drama'
이렇게 사용중입니다. 아무쪼록 자료 너무 감사드립니다
카페24쪽 링크는 브라우저에서 수동으로 열면 열리는데 flexget에서 접근하면 카페24자체 스팸방지 필터가 동작해서 정상적인 xml을 받아오지 못하네요.
웹서버 세팅이 어려운 분들이 계신 것 같어 cafe24에 php 버전 맞추어서 올렸더니 쓸데 없는 짓이었네요 ;;;
별말씀을요.. 항상 애써주셔서 감사합니다.
제가 칮아보니 서버 설장에서 스팸필터인가 꺼주면 된다고 합니다.
그런데 혹시 tf에서 마그넷 수집하는 코드는 없나요? Flexget에 php파일 넣으니까 다운이 안되 더라고요.
감사합니다. 그런데 저는 여전히 에러메세지가 나오네요. 크롬에서 열면 열리지만 flexget에서 접근이 안되고 리눅스에서 wget이나 curl로 접근해도 같은 결과 입니다.
아마도 제가 해외에서 접속해서 그럴지도 모르겠네요.
flexget에서 에러메세지입니다.
Error during input plugin rss: Received invalid RSS content from task docu_category (http://soju6jan.cafe24.com/sj_tf.php?b_id=tv&ckattempt=1)
단, 필터 옮기는게 노가다네요 ㅋㅋ
[Ohys-Raws] Tensei Shitara Slime Datta Ken - 07 (BS11 1280x720 x264 AAC).mp4
_Ohys-Raws__Tensei_Shitara_Slime_Datta_Ken_-_07__BS11_1280x720_x264_AAC_.smi
저의 경우 어짜피 ko.srt 로 변경하기에 크게 신경쓰지 않아 잘 모르겠습니다.
https://www.clien.net/service/board/cm_nas/12727771?po=0&sk=title&sv=%EC%9E%90%EB%A7%89&groupCd=&pt=0
압축설정이 안되어 있는 분도 계실거라서 파라미터로 처리해야겠네요..
감사합니다~
sj_sub_to_tar=on 파라미터를 추가했습니다.
이거 전체 검색 dlm으로도 활용 가능할까요?
최고에요 ㅎ
bt검색으로 전체검색되도록 dlm파일로도 만들수있나요?
와 감사드립니다 ㅠㅠ
그런데 또 방금전부터 아는와이프가 받아지는 것 같습니다.
정말 힘드네요..
sj_tf.php?b_id=tdrama&sc=720p-next&sj_download_mode=magnet
다운로드시 마그넷 주소로 리다이렉트.
sj_tf.php?b_id=tdrama&sc=720p-next&sj_all=on_magnet
목록생성시 링크 태그에 마그넷 주소 포함
이제 검색도 해봐야겠어요..
https://www.clien.net/service/board/cm_nas/12534455CLIEN
오전까지 잘되던데... ㅠ
2.sj_tf.php 어느 위치에 저장해야하나요?
초보라 기초적인 질문 남깁니다. 아시는분 댓글 달아주세요 ㅜ
php, curl 설정, http 계정 쓰기권한 등등
네 시놀입니다
1.자신의 서버 주소에 ddns넣으면 되나요? ex)xxx.iptime.org
2. web폴더 에 넣으면 작동하나요? 아님 tfxxx 폴더를 만들어 서 폴더에 넣어야 작동하나요?
curl,openssl 은 설정한 상태입니다.
20일자로 테스트 중인데
rss 다운받으면 sj_tf.php 파일만 받아지네요 ㅜ.ㅜ
예) sj_tf.php?b_id=tdrama&sc=720p-next&sj_all=on_magnet
예전에 티프리카 관련하여 클리앙에서 소스를 받아서 사용 중 최근 동작하지 않아 해당 게시글을 찾게 되었습니다.
예전에 있던 소스도 제 입맛에 맞지않아 약간 수정했던 부분이 있었는데, 도움이 될까해서 눈팅만하다가 댓글 남깁니다.
물론 아래 제가 말씀드리는 방법이 대부분 알고 계신내용일수도 있습니다만 일단 남겨봅니다.
저는 나스를통해서 원하는 프로그램의 720p-next만 자동으로 다운받고자 했습니다.
티프리카에서 검색시 예를들면 "방탈출" 인것중 "720p-next" 만 다운 받고 싶었지만 제대로 검색이 되지 않더라구요.
그래서 올려주신 소스내에서 아래 내용대로 2줄만 수정해주면 검색이 가능합니다.
rss 등록시 sc=대탈출+720p-next 과 같이 +로 처리하시면 제가 말씀드린대로 검색이 가능합니다.
단 키워드의 순서가 반대로 되면 검색이 불가능 합니다.
ex) "대탈출 스페셜.E13.180923.720p-NEXT" 이라는 게시글이 있다면 rss 등록시
대탈출+720p-next 는 검색가능하지만 반대로 720p-next+대탈출 은 검색불가능합니다.
원래 알고 계시던 내용이라면 가볍게 무시해주시기바랍니다.
항상 업데이트 해주셔서 감사합니다.
/*
foreach($_GET as $key => $value) if (startsWith($key, 'sj_') == false) $query = $query.'&'.$key.'='.$value;
$ret = "<rss xmlns:showrss=\"http://showrss.info/\" version=\"2.0\"><channel><title>".$_GET["b_id"].' '.$_GET["sc"]."</title><description>sj_tf</description>";
*/
foreach($_GET as $key => $value){
if (startsWith($key, 'sj_') == false){
if($key == 'sc')
$query = $query.'&'.$key.'='.str_replace(" ","%25+",$value);
else
$query = $query.'&'.$key.'='.$value;
}
};
$ret = "<rss xmlns:showrss=\"http://showrss.info/\" version=\"2.0\"><channel><title>".$_GET["b_id"].' '.str_replace("%","",$_GET["sc"])."</title><description>sj_tf</description>";
꾸준한 업데이트 감사합니다
즐거운 저녘 되시길!!
드라마부분에서 남자친구를 다운로드필터로 했을때 받아진건지,
아니면 http://localhost/sj_tf.php?b_id=tdrama&sc=남자친구.720p-next 이렇게 써서 남자친구가 받아진건지..
전혀 반응이 없어서.. 되는건지 안되는건지 궁금합니다ㅠ
복 받으실거에요ㅠㅠ
잘 쓰고 있습니다
그런데 제가 초보기도하고 잘 이해가 안돼는게 하나 있어서요
제가 쓰는 예능 rss 피드는
http://localhost/sj_tf.php?b_id=tent&sc=720p-next
인데요
같은 주소로 피드를 만들어도
어떨땐 목록이 드라마가 뜨기도하고
어떨땐 예능이 제대로 뜨기도하는데 이유가 뭘까요??
주소에 분명히 'tent'를 넣었는데도 이런 차이가 생기니 당황스럽습니다 ^^;;
혹시 이유를 알수 있을까요??
이글을보고 해결했습니다.
감사합니다,
와드도같이꼽으면서 인사드립니다~
"RSS 파일이 비어 있거나 올바르지 않습니다." 라고 뜹니다 ㅜㅜ
PHP 7.0 사용 중이고요, curl, openssl 체크해두었습니다 ㅜ
rss 주소는 이렇게 넣었어요: http://localhost/sj_tf.php?b_id=tdrama&sc=www
web폴더 안에 sj_tf.php 파일 하나만 넣었는데, 혹시 고기상자님 파일들도 넣어야 하나요?ㅠㅠ
시스템이 32bit 넷북이라 헤놀로지 5.0밖에 설치가 안되서요
http://자신의서버주소/sj_tf.php?b_id=tdrama&&ca=미드 <-- 이방식으로 하고 있었는데 말이죠..