콘텐츠로 바로가기

now0930 일지

이런저런 생각

  • 홈
  • 비공개
  • 강좌
  • 잔여 작업 조회
  • 위치

bash 스크립트로 사진정보를 mysql로 업데이트

몇개월전에 LAMP로 휴대폰으로 찍은 다수의 사진을 관리하는 페이지를 만들었다. 일정 기간이후 사진을 어느 폴더로 이동후, JPG의 EXIF에 대한 정보를 파일로 뽑아내어서, 내가 설정한 DB형식에 맞춰 추가를 해줘야 되는데 이게 좀 노가다성이 있다.

이를 해결하기 위해서 인터넷 뒤져서 아래와 같은 스크립을 만들었다. cron에 등록해서 하루에 한번씩 해주면 될것 같은데, mysql 서비스에 패스워드를 치는 부분을 사용자 입력을 기다리지 않고 자동으로 해줘야 되는데, 아직 구현하지 못했다. 나중에 보완하면 되는데 언제 할지 모르겠다.

#!/bin/bash
mytemp=$(mktemp);
mytemp2=$(mktemp);
#mytemp3=$(mktemp);
filelist=$(mktemp);
rm $1;
rm 데이터;
mysql -D myHome -u now0930 -p -e "select 날자 from picture order by 날자 desc limit 10" > $mytemp;
#cat $mytemp;

#head -2 $mytemp;
#sed -n 2p $mytemp > $mytemp2;

#mysql에서 마지막으로 업데이트한 날짜를 추출해서 변수로 기록
from=$(sed -n 2p $mytemp | cut -d' ' -f1);
next_from=$(date +%Y-%m-%d -d "$from + 1 day");
echo "프롬:"$from;
echo "다음날:"$next_from;
#sleep 100;
cat $mytemp2;
#cut -d ' ' -f1 $mytemp2 > $mytemp3;
#cat $mytemp3;

#현재 날짜를 변수로 기록
now=$(date +%Y-%m-%d);
echo $now;

#start,end를 지움..
rm start now;

#mysql의 마지막 날짜로 touch를 사용해서 만듦.
touch --date $next_from ./start
touch --date $now ./now

echo "start, now 만들어짐";
find ~/ExtHDD/pictureToWWW/20151110/ -type f -newer ./start ! -newer ./now \
| grep -v 지울폴더 | grep -ie "jpg\|JPG\|jpeg" > $1;
echo "파일 찾아짐";

#find ./ -type f -iname "*jpg" -o -iname "*mp4"\
# -newer ./start -not -newer ./now > $filelist;

#echo $filelist;

# JPG 파일을 입력 받아서 meta 데이터를 출력하는 스크립트..

#1번째 인자..JPG가 입력되어 있는 파일명..

cat $1 |\
while read CMD; do

###############
#루프의 시작..
################

#ls
#eval "exiv2 -ps $1 > temp"
echo "파일명 확인부";
echo $CMD
echo `exiv2 -ps $CMD > temp`
echo "여기서 실행확인"
echo `cat temp`
eval "awk '/File name/{print $4}' temp > 파일명";
#filename=$(echo `awk 'BEGIN{FS="\/";}{print "/imageOtherPar/"\$6"/"\$7}' temp`)
filename=$(awk 'BEGIN{FS="/";}{print "/imageOtherPar/"$6"/"$7}' 파일명);

echo "파일명"
echo $filename
echo "파일명 출력 완료"

#eval "awk '/File name/{print \$4}' temp
#$filename = $eval "awk '/File name/{print \$4}' temp"

#eval "exiv2 -px $1 > temp"
echo `exiv2 -pa $CMD > temp`
#eval "awk 'BEGIN{print \"EXIF 추출기\";FS=\" \";}/subject/{print \$4,\$5,\$6;}' temp >> 파일명"
tag=$(eval "awk '/subject/{print \$4,\$5,\$6;}' temp")
width=$(eval "awk 'BEGIN{FS=\" \";}/Image\.ImageWidth/{print \$4}' temp")
height=$(eval "awk 'BEGIN{FS=\" \";}/Image\.ImageHeight/{print \$4}' temp")
if [$height -eq ""]
then
height=$(eval "awk /'Image\.ImageLength/{print \$4}' temp")
fi

date=$(eval "awk 'BEGIN{FS=\" \";}/DateTimeOriginal/{print \$4}' temp")
time=$(eval "awk 'BEGIN{FS=\" \";}/DateTimeOriginal/{print \$5}' temp")
#latitudeRef=$(eval "awk 'BEGIN{FS=\" \";}/GPSLatitudeRef/{print \$4}' temp")
latitude=$(eval "awk 'BEGIN{FS=\" \";}/GPSLatitude/{print \$4}' temp")
#longitudeRef=$(eval "awk 'BEGIN{FS=\" \";}/GPSLongitudeRef/{print \$4}' temp")
longitude=$(eval "awk 'BEGIN{FS=\" \";}/GPSLongitude/{print \$4}' temp")

echo "테스트 영역"
echo "width:"$width
echo "height:"$height
echo "종합\n"
echo $width $height $tag $date $time $latitudeRef $latitude $longitudeRef $longitude
#echo $tag
#$tag= $eval "awk 'BEGIN{print \"EXIF 추출기\";FS=\" \";}/subject/{print \$4,\$5,\$6;}' temp"
#tag= $(awk 'BEGIN{print \"EXIF 추출기\";FS=" ";}/subject/{print \$4,\$5,\$6;}' temp)
#echo $tag

#echo $filename $tag

echo -e $latitudeRef
echo -e $latitude

#echo -e $filename "\t" $tag "\t" $date "\t" $time "\t" $width "\t" $height "\t" $latitudeRef "\t" $latitude "\t" $longitudeRef "\t" $longitude  >> 데이터

echo -e " \t"$date" "$time"\t"$tag"\t"$filename"\t""이미지\t"$width"\t"$height"\t"$latitude"\t"$longitude"\t"  >> 데이터
echo -e "너비" $width "높이" $height
echo "" > temp
done

###############
#루프의 끝...
################

#echo $mytemp;
rm $mytemp;
rm $mytemp2;
#rm $mytemp3;
rm $filelist;

#아래는 mysql으로 업데이트 하는 부분..
#home 디렉토리의 .my.cnf파일을 참조해서
#자동으로 업데이트
mysql --local_infile=1 myHome -e "LOAD DATA LOCAL INFILE '데이터' INTO TABLE picture CHARACTER SET UTF8 FIELDS TERMINATED BY  '\t' "

 

이 글 공유하기:

  • Tweet
발행일 2016-06-01글쓴이 이대원
카테고리 생활코딩 태그 bash, mysql, 사진관리

댓글 남기기응답 취소

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.

글 내비게이션

이전 글

2016년 가족사랑 휴가(2일차, 통영)

다음 글

민수 축구대회(안산 시낭공원)

2025 5월
일 월 화 수 목 금 토
 123
45678910
11121314151617
18192021222324
25262728293031
4월    

최신 글

  • common mode, differential mode 2025-05-11
  • signal conditioner, 신호 처리기 2025-05-10
  • strain gage 2025-05-09
  • 칼만 필터 2025-05-01
  • positioner(I/P) 2025-04-26

카테고리

  • 산업계측제어기술사
  • 삶 자국
    • 책과 영화
    • 투자
  • 생활코딩
    • LEGO
    • ROS
    • tensorflow
  • 전기기사
  • 피아노 악보

메타

  • 로그인
  • 엔트리 피드
  • 댓글 피드
  • WordPress.org

페이지

  • 소개
  • 잔여 작업 조회
    • 작업 추가
    • 작업의 사진 조회
    • 작업 수정 페이지
  • 사진
    • GPS 입력된 사진
    • 사진 조회
  • 위치
    • 하기 휴가 방문지
    • 해외 출장

태그

android bash c docker driver FSM gps java kernel LEGO linux mysql network program opcua open62541 plc programmers python raspberry reinforcementLearning ros state space system program tensorflow transfer function 경제 미국 민수 삼국지 세계사 실기 에너지 역사 유전자 일본 임베디드 리눅스 전기기사 조선 중국 채윤 코딩 테스트 통계 한국사 한국어

팔로우하세요

  • Facebook
now0930 일지
WordPress로 제작.