Bash를 사용하여 메타데이터 편집

Bash를 사용하여 메타데이터 편집

나는 여러 장의 사진(jpeg, bmp, png)을 가지고 있으며 메타데이터가 html 형식의 별도 파일에 있도록 정렬합니다.

이 HTML 파일을 읽고 사진 "태그" 필드(가능한 경우)를 편집하는 스크립트를 만들고 싶습니다.

내 이미지는 사진 - "일련 번호"로 정렬됩니다. (jped/bmp/png).

메타데이터는 같은 폴더에 있지만 파일 이름은 일련번호일 뿐이고 확장자는 없습니다.

이 html 파일에는 다음 줄이 있습니다.<meta name="keywords" content="tag1, tag2, tag3, etc" />

일부 파일에는 이 추가 파일이 없지만 일부 이미지에는 태그 필드가 채워져 있을 수 있습니다.

배치 모드에서 이 작업을 수행하고 싶습니다.

더 나은 방법(Windows/Linux)을 알고 있다면 알려주시기 바랍니다.

답변1

테스트되지 않았으므로 출발점으로 다음을 적용할 수 있습니다.

for pic in *.jpeg *.bmp *.png; do
  serial="${pic%.*}"
  if test -r "${serial#photo-}"; then
    tags=`sed -n 's/.*<meta name="keywords" content="\([^"]*\)".*/\1/p' "${serial#photo-}"`
    # do what you want with "$pic" using "$tags"
  fi
done

따라서 모든 이미지 파일을 반복하고 접두사와 확장자가 제거된 파일을 읽을 수 있는지 테스트한 다음 메타데이터 파일에서 태그를 제거합니다. 이미지의 메타데이터를 편집하는 데 어떤 도구를 사용할 계획인지 잘 모르겠습니다.

답변2

모든 파일을 처리하기 전에 선호하는 GUI 도구를 사용하여 필수 필드를 설정하는 것이 좋습니다. 그런 다음 파일을 분석하십시오.내보내기 도구:

exiftool -XMP:all -IPTC:all test.jpg

필드의 정확한 이름이 인쇄됩니다. 그런 다음 모든 파일을 일괄 처리할 수 있습니다. 예를 들어, 설정하려면 XMP:description다음을 실행하십시오.

exiftool -XMP:description="the" test.jpg

대안은 ImageMagick 패키지의 및 도구입니다 identify.convert

HTML에서 추출하려면 perl 패키지를 사용하는 것이 좋습니다.HTML 트리

test.html다음을 포함하는 파일이 제공됩니다.

<html><head>
<meta name="keywords" content="tag1, tag2, tag3, etc" />
</head>
<body></body>

태그를 추출하려면 다음 Perl 스크립트를 실행하세요.

use HTML::TreeBuilder 5 -weak; # Ensure weak references in use
my $tree = HTML::TreeBuilder->new; # empty tree
$tree->parse_file("test.html");
my $meta = $tree->look_down(
  _tag => "meta",
  name => "keywords"
);
print $meta->attr("content");

관련 정보