March 4, 2019
Получаем метаданные с помощью Python.
http://tele.click/darkside_team
Привет хацкер, сегодня будем писать скрипт для получения метаданных из картинок фото. Метаданные - данные о самих данных. Сегодня мы научимся их доставать.
Метаданные — информация о другой информации, или данные, относящиеся к дополнительной информации о содержимом или объекте. Метаданные раскрывают сведения о признаках и свойствах, характеризующих какие-либо сущности, позволяющие автоматически искать и управлять ими в больших информационных потоках.
Для написания нам понадобится библиотека Pillow и argparse.
# Coded by Dark $ide —- http://tele.click/darkside_team #!/usr/bin/python3.6 #тут указывайте свой путь к python # -*- coding: utf-8 -*- #кодировка
#импортируем необходимые модули
import argparse from PIL import Image from PIL.ExifTags import TAGS
#функция ниже получает на вход имя файла(картинки) и имя файла(для вывода информации)
def getMetaData(imgname, out):
#получаем словарь из метаданных картинки и выводим его в терминал, #если не указано имя файла для вывода информации.
try: metaData = {} imgFile = Image.open(imgname) print("Getting meta data...") info = imgFile._getexif() if info: print("Found meta data!") #перебор данных в словаре с метаданными for (tag, value) in info.items(): tagname = TAGS.get(tag, tag) metaData[tagname] = value if not out: print(tagname, value) #если указано имя файла то выводим в файл if out: print("Outputting to file...") with open(out, 'w') as f: for (tagname, value) in metaData.items(): f.write(str(tagname)+"\t"+str(value)+"\n") #если произошла ошибка выводим сообщение о ней except: print("Failed") #функция main(). Парсим в ней аргументы командной строки. def main(): parser = argparse.ArgumentParser() parser.add_argument("img", help="name of img file.") parser.add_argument("-o", "--output", help="dump data out to file") args = parser.parse_args() if args.img: getMetaData(args.img, args.output) else: print(parser.usage) #точка входа if __name__ == '__main__': main()
Пример вывода нашего скрипта: