-97,6 +97,56 |
|
=== # 여러 피드를 합치기 - 루프 모듈을 사용하는 예 === |
|
* 원본 피드: http://cartoon.media.daum.net/series/rss/ikki.xml - 미디어 다음 만화속 세상 중 "이끼" RSS |
* 원본 피드: http://cartoon.media.daum.net/series/rss/flying.xml - 만화속 세상 중 "비행접시" RSS |
* 원본 피드: http://cartoon.media.daum.net/series/rss/ufo.xml - 만화속 세상 중 "환상스케치" RSS |
|
다수의 피드를 합쳐 하나의 피드로 만들고 싶을때는, 위에서 본 것처럼 <index(Fetch Feed)>모듈을 원본 피드 갯수만큼 생성하고 <ix(Union)>으로 합치면 된다. 그런데 원본 피드가 수십개씩 된다면 뭔가 좀 정신없어 보일 것이다. (사실 파이프를 작성할 때 어떻게 보이든 무슨 상관이랴, 동작만 제대로 하면 되지...) Operators-<ix(Loop)>모듈을 사용하여 동일한 작업을 반복하는 경우를 만들어보자: |
|
Loop 모듈은, 다수의 아이템의 리스트(피드 자체도 각각의 글이 하나의 아이템인 리스트이다)를 받아서 각 아이템에 대해서 지정한 연산을 수행하고, 그 결과를 다시 리스트로 내보낸다. 위에서 보면 원본 피드 세 개의 주소가 거의 동일하고, 마지막에 xml 파일의 이름만 달라진다. 따라서 저 자리에 각각의 이름을 바꿔넣어서 피드의 주소를 완성시키는 동작을 시켜보자. |
{{{ |
http://cartoon.media.daum.net/series/rss/______.xml |
이 자리에 ikki, flying, ufo 를 번갈아가며 넣는다 |
}}} |
|
일단 번갈아 빈 자리에 들어갈 문자열의 리스트를 만들자: |
|
|| Upload:pipes_union_2_1.png || |
|| Strings-<index(String Builder)> -> Strings-<ix(String Tokenizer)> || |
* <ix(String Builder)>는 단순히 하나의 문자열을 만들어준다. "+"버튼을 눌러서 칸 수를 세 개로 늘린 다음, 각각 "ikki," "flying," "ufo,"라고 적어주면, 이 모듈은 이 문자열들을 합쳐서 "ikki,flying,ufo,"라는 하나의 문자열을 만든다. |
* <ix(String Tokenizer)>는 하나의 문자열을 잘라내어서 다수의 문자열의 리스트를 만든다. 어디를 자를지 결정하는 것이 "Delimiter"이다. 여기에 ","를 적어주고 아래의 디버거 창을 보면 세 개의 아이템이 있고, ","를 기준으로 잘라낸 나머지 단어들이 각 아이템의 <code>content</code> 필드의 값으로 들어가 있는 것을 알 수 있다. |
|
이제 이 문자열 리스트로부터 피드 주소 세 개를 만든다: |
|
|| Upload:pipes_union_2_2.png || |
|| 앞 그림 -> <ix(Loop)> || |
|
* Loop 모듈을 드래그해서 하나 가져다 놓고, 다시 <ix(String Builder)>모듈을 드래그해서 Loop 모듈 안에 있는 빈 영역에 넣어서 합체시킨다. |
* String Builder의 세 칸 중 |
** 처음 칸에는 "http://cartoon.media.daum.net/series/rss/", 즉 피드 주소의 앞쪽의 공통된 문자열을 적어주고 |
** 두번째 칸에는 Tokenizer 모듈에서 넘어온 아이템의 content 필드를 지정 (우측의 삼각형을 클릭해서 선택할 수 있다) |
** 세번째 칸에는 ".xml", 즉 피드 주소의 뒤쪽의 공통된 문자열을 적어준다. |
* 이렇게 생성된 결과를 다시 특정한 필드의 값으로 넣을 수도 있고, 그냥 내보낼 수도 있다. 여기서는 그냥 내보내기("emit results")를 선택했다. |
* 디버그 창을 보면, 세 개의 피드 주소가 완성되어 있는 걸 알 수 있다. |
|
이 "주소들의 리스트"를 사용해서 피드를 가져와야 하므로: |
|
* 완성된 파이프: http://pipes.yahoo.com/raymundo/union_2 |
|
|| Upload:pipes_union_2_3.png || |
|| 앞 그림 -> <ix(Loop)> -> Pipes Output || |
|
* 한번 더 루프를 돌면서, 이번에는 <ix(Fetch Feed)>를 루프 안에 넣어서 각각의 주소에 대해 피드를 가져오게 한다. |
|
|
==== # 그런데 사실은... ==== |
|
단순하게 여러 개의 피드를 합치는 경우라면, 굳이 이렇게 복잡하게 할 것 없다. Union을 쓸 필요도 없다. 그냥 <ix(Fetch Feed)>모듈에서 "+"버튼을 눌러서 칸 수를 늘린 후 각각의 칸에 원하는 피드 주소를 적어주면 그만이다. :-D 이번 예제와 전 예제는 단지 모듈들의 동작을 테스트하기 위해서 복잡하게 했을 뿐. |
|
|| Upload:pipes_union_2_4.png || |
|| 이러면 된다는 얘기 || |
|
|
== # 참고 == |
* [http://syaa.tistory.com/104 입맛에 맞게 재구성해서 사용하는 RSS - YAHOO PIPE -- 취미생활 블로깅 ::] |
* [http://1kko.com/entry/야후-파이프를-이용해서-네이버-웹툰을-RSS-Feed로-받아보기 이코의 세상 :: 야후 파이프를 이용해서 네이버 웹툰을 RSS Feed로 받아보기] |