-
يكشنبه, ۱۳ بهمن ۱۳۹۸، ۰۸:۱۴ ب.ظ
-
۹۶۴
نوشتن برنامه ی بدست آوردن مدل گوشی از طریق عکس در پایتون .
درود به همه . ✋
در پست قبلی یاد گرفتیم چطوری به وسیله ی ابزار "exif" مدل گوشی رو از روی عکس گرفته شده توسط گوشی بفهمیم . در این پست میخوایم یه ابزاری با پایتون بنویسیم که عکس رو بهش بدیم و خودش مدل گوشی رو تشخیص بده تازه خودش هم اطلاعات گوشی رو در گوگل برامون سرچ کنه خودکار! خب برای درک این مطلب چنتا پیش نیاز دارین . ۱ - پایتون بلد باشین ۲ - پست قبل رو دیده باشین و انجام داده باشین .
برای اینکه پست قبل رو ببینید به آدرس زیر برید :
https://mrpython.blog.ir/post/10
خب میریم سراغ آموزش.
این ابزار رو روی لینوکس مینویسیم و میسازیم ولی خب میتونید روی ویندوز هم با پایتون همینکاری بکنین فقط یکم فرق داره .
خب اول باید کتابخونه ی exif رو روی پایتونمون نصب کنیم . با این کتابخونه میتونیم فراداده های ذخیره شده داخل عکس رو ببینیم و میدونید که مدل گوشی هم داخل همیناس پس میتونیم مدل گوشی رو هم ببینیم . برای نصب این کتابخونه از ابزار pip3 استفاده میکنیم چون میخوایم روی پایتون ۳ نصب کنیم از ورژن 3 در pip استفاده کردیم . دستور زیر کتابخونه رو نصب میکنه روی پایتونمون :
MrPython@debian:~$ pip3 install exif
ابتدا یک فایل پایتون میسازیم :
MrPython@debian:~$ touch auto-exif.py
خب راجب کد بالا باید بگم که دستور touch بیشتر برای ساخت فایل های جدید در لینوکس و دستکاری و تغییر تاریخ فایلا به کار میره که ما با دستور بالا یک فایل به نام auto-exif.py ساختیم .
در مرحله بعد باید این فایل رو توسط یک ویرایشگر باز کنیم و کد هامون رو داخلش بنویسیم . برای اینکار میتونید از هر ویرایشگری استفاده کنید.
وقتی فایل رو باز کردین کد های زیر رو داخلش مینویسیم :
from os import popen
from exif import Image
pic = input ("Picture Address : ")
img = Image(open(pic,"rb"))
try:
model = img.model
except:
exit()
print("Model : {}".format(model))
command = "firefox https://www.google.com/search?q=\"{}\"".format(model)
popen(command)
خب بعد از نوشتن این کد ها اون ها رو ذخیره کنید .
خب یه توضیح کوچولو در مورد کد ها بدم .
قبل از هر چیزی کتابخونه های مورد نیاز رو با import وارد برنامه کردیم .
ببینید اول که خب یه اینپوت یا همون ورودی از کاربر گرفتیم و ریختیم داخل متغییری به نام pic که در واقع آدرس همون عکسی هست که میخوایم از روش مدل گوشی رو بفهمه .
بعد اومدیم یه حرکت قشنگ زدیم . اونو توسط تابع open در مد باینری بازش کردیم و سپس دادیمش به تابع Image از کتابخانه ی exif که برامون اطلاعات عکس رو در بیاره و همرو کلا ریختیم داخل متغییر img
و بعدش هم اومدیم متغییر model رو برابر کردیم با img.model که همون مدل گوشیه .
و بعدش هم اومدیم یه دستور بش ساختیم ریختیم داخل متغییر command که اگه این اجرا بشه در واقع میره یه مرورگر باز میکنه و مدل گوشی رو داخل گوگل سرچ میکنه .
بعدش هم توسط تابع popen اومدیم این کامند یا دستور بش رو اجرا کردیم .
خب اینم یه توضیح کوچولو .
برای اجرا کردن این فایل میتونید شبانگ بهش بدین و دسترسی اجرایی و بعدش با "auto-exif.py./" اجراش کنید یا اینکه خیلی راحت از طریق خود پایتون و با وارد کردن دستور زیر در ترمینال اجراش کنید :
MrPython@debian:~$ python3 auto-exif.py
خب بعدش برنامه اجرا میشه و اول از شما آدرس عکس رو میپرسه و شما بهش میدین . بعد از اینکه بهش دادین آدرسو و اینتر زدین باید مدل گوشی رو شناسایی کنه و یه صفحه گوگل براتون باز کنه .
حالا امکان داره یه سری ارور هایی بده که اگه پایتون کار کرده باشین میتونین بفهمین از چیه . ولی کلا چند نوع ارور احتمالا بیشتر نمیتونه بده طبق پیشبینی من .
۱ - اگه کتابخونه هاشو پیدا نکنه
۲ - اگه اون عکسه که گرفتین بهش دادین مدل گوشی داخلش نبوده باشه حالا به هر دلیلی. یکی از دلایلش میتونه این باشه که عکس ادیت شده . عکس رو خام و به صورت مستقیم وقتی که از گوشی گرفته شد باید بدین بهش افکت و اینا نباید به عکس بدین اینجور مواقع معمولا فراداده های داخل عکس رو از بین میبره یا دستکاری میکنه .
و ...
حالا اگه اروری دیگه ای داد که نتونستین مشکلو حل کنید در بخش نظرات مطرح کنیدتا برسی کنم ببینم چیه .
این برنامه رو یکم کامل ترشو در اگانت گیت هاب من میتونید پیدا ببینید . آدرس:
https://github.com/mrpythonblog/detect-mob.git
یا حق ! ✋