정기적 인 일정으로 웹 사이트에서 단일 이미지 가져 오기


2

나는 (웹 사이트에서) 같은 이미지를 매회 찍고 싶다. 엑스 결국 시간 경과 영상을 만들 수 있습니다.

내 문제는 다음과 같습니다.

  • 이미지를 잡을 일정을 설정하고
  • 파일 이름의 일부로 시간 / 날짜와 함께 이미지를 저장합니다.

파이썬과 같은 것을 사용하는 것이 가장 좋을까요?


필연적으로 파이썬이 필요합니까? 이것은 일반적인 Bash 명령어로 쉽게 수행 할 수 있습니다. wget. 어떤 것을 시도 했습니까? 아니면 어딘가에 갇혀 있었습니까?
slhck

필자는 DOS 배치 파일에 대해 능숙하지만 Bash (ls 및 shutdown 제외)에 대한 경험이 거의 없습니다. 나는 파이썬이 아마 대답 일 것이라고 생각했지만, 배시에게 만족한다. 나는 오늘 밤 이걸 시험해 볼거야. 많은 감사합니다.
Nigel

slhck - 도움을 주셔서 감사합니다. pdm-5min이라는 홈 디렉토리의 하위 디렉토리에 이미지 파일을 저장하려고합니다. 출력 문장을 수정하려고 시도했지만 작동시키지 못했습니다. 나는 -O. / pdm-5min / "$ {timestamp} .png"및 "~ / pdm-5min /"$ {timestamp} .png "를 시도했지만 기쁨은 없습니다.
Nigel

아래 답변에이 의견을 게시 할 수 있습니까? 그런 다음 @ 조정은 알림을받습니다. 아마도 당신은 할 수 있습니다. 편집하다 귀하의 현재 상태가 정확히 무엇인지 또는 정확히 작동하지 않는지 귀하의 질문에 포함 시키시겠습니까? 감사!
slhck

답변:


7

예를 들어 아바타를 사용합시다. (에 저장 /opt/download-avatar )

#!/bin/bash
URL="https://www.gravatar.com/avatar/554f043fa658cba9bbc2ee4c6d4e052d?d=identicon"
timestamp=$(date +%F_%T);
wget "$URL" -O "${timestamp}.png"

참고 : 파일 이름을 신기원에서 초로 저장하는 것이 좋습니다. timestamp=$(date +%s)

만들기 5 분마다 실행하는 cron 작업 (에 저장 /etc/cron.d/timelapse-avatar )

#!/bin/sh
*/5 * * * * /opt/download-avatar

스크립트를 실행 가능하게 만들기

chmod +x /opt/download-avatar
sudo chmod 755 /etc/cron.d/timelapse-avatar

당신이 사용하고 싶지 않다면 cron 다음 단순히 (에 저장 ~/start-timelapse )

#!/bin/bash
input="$1"
URL="https://www.gravatar.com/avatar/554f043fa658cba9bbc2ee4c6d4e052d?d=identicon"

if [ -z "$input" ]; then
  echo "USAGE: $0 [interval in minutes]" 
  exit 1
else
  interval=$((60*input));
fi

while [ 0 = 0 ]; do
  timestamp=$(date +%s)
  wget "$URL" -O "${timestamp}.png"
  echo "Sleeping for $input minutes"
  sleep "$interval"
done;

실행 파일을 만들고 7 분 간격으로 실행

chmod +x ~/start-timelapse
cd ~
./start-timelapse 7

최신 정보:

감사 슬하 크 .

나이젤 , 기본적으로 cron 다음과 같이 실행된다. 뿌리 사용자. 이 질문과 관련이 없지만 기술적으로는 "환경 설정"과 같은 환경 변수없이 비 대화식으로 "특수 사용자"로 실행됩니다. $PATH,없이 dbus 세션 ID X 세션 ID 등

~/ 는 사용자의 홈 디렉토리 (환경 변수 $HOME ). 에 대한 기본적으로 사용자 , 이것은 예를 들어 /home/nigel 이 아니라면 뿌리 , 이것은 /root 그러므로 아마 크론 ~에 저장했습니다. /root/pdm-5min. 다음을 사용할 수 있습니다.

wget "$URL" -O "/home/nigel/pdm-5min/${timestamp}.png"

하지만 파일은 뿌리 , 그래서 나이젤 자신의 허락 없이는 이동, 삭제, 편집 할 수 없습니다. 뿌리 (또는 sudo )

따라서 실행을 선택할 수도 있습니다. cron 당신의 사용자로서 나이젤 .

#!/bin/sh
*/5 * * * * nigel /opt/download-avatar

저장하려는 디렉토리가 있는지 확인하십시오. 디렉토리 바로 앞에 추가하고자 할 수 있습니다. wget 선:

mkdir -p /home/nigel/pdm-5min/

마지막으로, 귀하의 " (인용 부호). 변수가 공백 (공백, 탭 등)을 유지하지만 각 작은 따옴표 또는 큰 따옴표가 일치하는지 확인하십시오. 옵션이 아닙니다.


1
후자의 변형에서 쉘이 종료되거나 터미널이 종료 된 경우 다운로드가 결국 중단됩니다.
slhck

@Justbrowsing : 도움을 주셔서 감사합니다, 그것은 효과가! pdm-5min이라는 홈 디렉토리의 하위 디렉토리에 이미지 파일을 저장하려고합니다. 출력 문장을 수정하려고 시도했지만 작동시키지 못했습니다. 아무것도 저장하지 않습니다. 나는 O. / pdm-5min / "$ {timestamp} .png"및 "~ / pdm-5min /"$ {timestamp} .png "시도했지만 기쁨은 없었습니다.
Nigel

1
@ justbrowsing - 신속하고 간결한 답변에 많은 감사드립니다. 모든 포인트가 매우 유용하게되었습니다. 이제 루트가 아닌 cron을 올바르게 실행하고 올바른 폴더에 내 이미지를 저장합니다. 다시 한번 감사드립니다. 감사.
Nigel
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.