허영만(그림), 김세영(글)의 "사랑해"라는 만화를 아시는지요? 스포츠 조선
에 연재가 되고 있는데 잔잔한 이야기로 보는 이를 즐겁게 해주지요. 이 만
화가 조선 일보 사이트를 통해 서빙되는데 파일 이름의 일관성 같은 것이 없
어서 도저히 wget 같은 웹을 긁는 툴로 긁을 수가 없더군요.
그래서 lynx와 wget을 이용하여 "사랑해" 만화만을 다운 받을 수 있는 작은
스크립트를 짜 보았습니다. 오랜만에 쉘 스크립트를 짜본터라 영 엉망이지
만 분명 제대로 동작은 할 것입니다.
사랑해라는 만화를 좋아하신다면 한번 사용해 보십시오. 다 긁으면 115M 정
도 됩니다. 껄껄...
하루에 한번 크론탭으로 돌리면 갱신된 이미지를 다운 받을 수 있을 것입니
다. 키키키키 (저야 이미 돌리고 있지요.)
신택스 하이라이팅 버젼 -->
http://linux.sarang.net/tmp/get.html ----------- 여기를 잘라 주세요 -----------
#!/bin/sh
DATA="list.txt"
# 사랑해 목록 페이지
URL0="http://www.chosun.com/bin/prelist?dir=n&code=bd_&id="
# 사랑해 이미지 페이지
URL1="http://www.chosun.com/photo/news/"
g_list ()
{
# 페이지 목록을 저장하는 파일을 검사
if [ ! -f ${DATA} ]
then
# 사랑해 만화 목록 마지막 페이지
echo 'LIST:80019794s838' >> ${DATA}
# 사랑해 만화 목록 첫 페이지
echo 'LIST:000000000000' >> ${DATA}
fi
while true
do
# 페이지 목록의 마지막 줄을 가져와 다음 페이지 목록을 가져옴
URL="${URL0}$(grep "LIST:"${DATA} |tail -1 |sed 's/LIST://g')"
LIST=$(lynx --dump "${URL}" |grep prelist |grep -v IMGMAP
|grep -v 000000000000 |sed 's/^.*=//')
grep "${LIST}" ${DATA} > /dev/null 2>&1
if [ $? -eq 1 ]
then
echo "LIST:${LIST}">> ${DATA}
printf "."
else
break
fi
done
echo "[완료]"
# 빈줄을 제거하고 정렬함
sort -ru ${DATA} |grep -v ^$ > ${DATA}.$$
mv -f ${DATA}.$$ ${DATA};
}
g_page ()
{
for LIST in $(grep "LIST:"${DATA} |sed 's/LIST://g')
do
URL="${URL0}${LIST}"
PAGE=$(lynx --dump "${URL}" |grep news
|sed -e 's/^.*///' -e 's/.html//g' -e 's/^/PAGE:/g')
echo "${PAGE}" >> ${DATA}
printf "."
done
echo "[완료]"
sort -ru ${DATA} |grep -v ^$ > ${DATA}.$$
mv -f ${DATA}.$$ ${DATA};
}
g_imag ()
{
# 이미지 저장 디렉토리 만듬
if [ ! -d image ]
then
mkdir image
fi
echo " +"
for PAGE in $(grep "PAGE:"${DATA} |sed 's/PAGE://g')
do
# 디렉토리명을 찾아냄 (년월까지)
DATE0=$(echo $PAGE | sed 's/(^[0-9]{6}).*/1/g')
# 년 월 일 포맷을 만듬
DATE1=$(echo $PAGE |
sed 's/(^[0-9]{4})([0-9]{2})([0-9]{2}).*/1년 2월 3일/g')
if [ ! -f "image/${PAGE}.gif" ] && [ ! -f "image/${PAGE}.jpg" ]
then
# gif 또는 jpg가 있으므로 다운로드 함
IMG0="${URL1}${DATE0}/${PAGE}.gif"
IMG1="${URL1}${DATE0}/${PAGE}.jpg"
echo " |--> ${DATE1} 이미지 다운"
wget -P image "${IMG0}" > /dev/null 2>&1 ||
wget -P image "${IMG1}" > /dev/null 2>&1
fi
done;
echo " |"
echo " +--> [완료]"
}
echo -n "1. 페이지 목록 가져옴 "
g_list
echo -n "2. 이미지 목록 가져옴 "
g_page
echo "3. 이미지 파일 가져옴"
g_imag
--
아.지.사.바