Stories.zip
3.5 MB
💚 کلیه کتاب‌های جذاب شرلوک‌هولمز در قالب فایل‌های متنی (txt)، که می‌توانید توسط آخرین برنامه منتشر شده و به صورت Audio Book آن‌ها را پخش کرده و لذت ببرید...

#SourceCode #SourceCode10025 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
6👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که مسیر پوشه (Stories) و نام یک فایل متنی را گرفته، و سپس محتوای آن فایل متنی را تبدیل به یک Audio Book با فرمت mp3 نماید؟

نکته: شما می‌توانید این متن را با صدای (voices) آقا و یا خانم، پخش نمایید!
نکته: شما می‌توانید این متن را با سرعت (rate) کند و یا سریع، پخش نمایید!
نکته: برای هیجان بیشتر، یک فایل ZIP، در مطلب قبلی قرار داده‌ام تا به مجموعه‌ای از کتاب‌های داستانی شرلوک‌هولمز، به صورت متنی (txt) دسترسی داشته باشید. شما می‌توانید این فایل را در کنار این سورس‌کد Extract نمایید.
نکته: به عنوان نمونه، برای تبدیل کتاب advs، به mp3، تقریبا چند دقیقه‌ای طول می‌کشد! پس لطفا صبور باشید!
نکته: به عنوان نمونه، کتاب صوتی advs، حدود ۱۲ ساعت، و حجم آن در حدود ۲ گیگا بایت خواهد شد!

# **************************************************
# pip install pyttsx4
# https://github.com/Jiangshan00001/pyttsx4
# **************************************************
import pyttsx4 as pytts

engine = pytts.init()

voices = engine.getProperty(name="voices")
engine.setProperty(name="voice", value=voices[0].id)
# engine.setProperty(name="voice",value= voices[1].id)

default_rate = engine.getProperty(name="rate")
engine.setProperty("rate", default_rate - 50)

filename = "advs"
pathname_to_read = f"Stories/{filename}.txt"
pathname_to_write = f"Stories/{filename}.mp3"

with open(file=pathname_to_read, mode="r") as file:
file_content = file.read()

engine.save_to_file(text=file_content, filename=pathname_to_write)
engine.runAndWait()
# **************************************************

#SourceCode #SourceCode10026 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و تصاویر آن را در یک پنجره، به کاربر نمایش دهد؟

نکته: در تابع VideoCapture، می‌توان اندیس مربوط به Webcam را مشخص کرد! به طور پیش‌فرض، اولین Webcam متصل به دستگاه، اندیس صفر دارد!
نکته: بهتر است که قبل از ادامه کار، اطمینان حاصل کنیم که Webcam به درستی راه‌اندازی شده است! با استفاده از تابع isOpened می‌توان چنین بررسی را انجام داد.
نکته: تابع read، دو پارامتر برمی‌گرداند که چون پارامتر اول را در این برنامه نیاز نداریم، از پارامتر ـ استفاده می‌کنیم!
نکته: با استفاده از تابع imshow، می‌توانیم تصویری که از Webcam دریافت کرده‌ایم (frame) را در پنجره‌ای با عنوان DT Webcam Viewer نمایش دهیم.
نکته: با استفاده از دستور waitKey، منتظر می‌مانیم که اگر کاربر دکمه ESC کیبورد را بفشارد، از برنامه خارج شویم.
نکته: مهم‌ترین کار در هر زبان برنامه‌نویسی، آن است که پس از اتمام کار، حافظه را تر و تمیز نماییم! دو دستور release و destroyAllWindows، این وظیفه مهم را در این برنامه بر عهده دارند!

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import cv2 as cv

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

while True:
# Frame means Webcam Image Capture!
_, frame = capture.read()

cv.imshow(winname="DT Webcam Viewer", mat=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10027 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
5👍4
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و هر ثانیه یک‌بار، یک عکس از تصویر موجود در Webcam گرفته و با توجه به تاریخ و زمان سیستم، و با فرمت png آن‌را ذخیره نماید؟

نکته: برای درک بهتر کد ذیل، ابتدا به سورس‌کدهای قبلی مراجعه نمایید:

#SourceCode10027
#SourceCode10028

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import time
import cv2 as cv
from datetime import datetime

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

while True:
time.sleep(1)

# Frame means Webcam Image Capture!
result, frame = capture.read()

if result:
now = datetime.now()
formated_now = now.strftime("%Y_%m_%d_%H_%M_%S")

filename = f"Capture_{formated_now}.png"
cv.imwrite(filename=filename, img=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10029 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
5👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که Webcam متصل به دستگاه را روشن کرده و هر ثانیه یک‌بار، یک عکس از تصویر موجود در Webcam گرفته و با تصویر قبل آن‌را مقایسه کند و اگر تغییری در تصویر جدید بوجود آمده بود (Motion Detection)، تصویر مربوطه را با توجه به تاریخ و زمان سیستم، و با فرمت png ذخیره نماید؟

نکته: برای درک فلسفه این کد، به مطلب قبلی مراجعه نمایید!

# **************************************************
# pip install opencv-python
# https://github.com/opencv/opencv-python
# **************************************************
import time
import cv2 as cv
import numpy as np
from datetime import datetime

capture = cv.VideoCapture(index=0)

# Check if the webcam is opened correctly
if not capture.isOpened():
print("[#] Can not open webcam!")
quit()

last_mean = None

while True:
time.sleep(1)

# Frame means Webcam Image Capture!
result, frame = capture.read()

if result:
# Converting color image to gray_scale image
gray = cv.cvtColor(src=frame, code=cv.COLOR_BGR2GRAY)

# In first iteration we assign the
# value of 'old_gray' to our first frame
if last_mean is None:
last_mean = np.mean(gray)
continue

difference = np.abs(np.mean(gray) - last_mean)
# print(difference)

last_mean = np.mean(gray)

if difference > 0.3:
print("Motion Detected!")

now = datetime.now()
formated_now = now.strftime("%Y_%m_%d_%H_%M_%S")
filename = f"Capture_{formated_now}.png"
cv.imwrite(filename=filename, img=frame)

# Wait 1ms for ESC to be pressed
key = cv.waitKey(delay=1)
if key == 27:
break

capture.release()
cv.destroyAllWindows()
# **************************************************

#SourceCode #SourceCode10030 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
8👍4
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

تذکر: با توجه به الگوریتم ذیل، سعی کنید که تابع مذکور را پیاده‌سازی و تست نمایید. انشاءالله تا ۲۴ ساعت آینده، به دو روش ساده و حرفه‌ای، سورس‌کد مربوطه، منتشر خواهد شد، و شما می‌توانید، کد خود را با این دو کد منتشر شده، مقایسه نمایید.

تذکر: در صورتی که شخصی از کد ملی جعلی یا Fake استفاده نماید، مجازات آن، بر طبق قانون، از ۶ ماه تا ۳ سال زندان بوده و یا به صورت جریمه نقدی، محکوم به پرداخت از ۳ الی ۱۸ میلیون ریال برای فرد خاطی در نظر گرفته می‌شود!

نکته‌ای، صرفا در جهت اطلاعات عمومی: سه رقم اول، مربوط به کد شهر می‌باشد!

- در صورتی که value، هیچ مقداری نداشته باشه (None)، کد ملی معتبر نمی‌باشد.
- تمام Space های مقدار value را از بین می‌بریم.
- در صورتی که طول رشته value، بزرگ‌تر از ۱۰ کاراکتر و یا کمتر از ۸ کاراکتر باشد، کد ملی معتبر نمی‌باشد.
- در صورتی که طول رشته value، برابر ۸ کاراکتر باشد، از سمت چپ، دو صفر به آن اضافه می‌کنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که طول رشته value، برابر ۹ کاراکتر باشد، از سمت چپ، یک صفر به آن اضافه می‌کنیم، تا طول رشته ۱۰ کاراکتر شود.
- در صورتی که تمام کاراکترهای مقدار value، عددی نباشند، کد ملی معتبر نمی‌باشد.
- در صورتی که همه ارقام کد ملی، کاملا یکسان باشند، کد ملی معتبر نمی‌باشد. یعنی، مثلا اگر همه ارقام یک باشند، کد ملی معتبر نمی‌باشد!

- نکته: اولین رقم در کد ملی، اولین رقم در سمت چپ آن می‌باشد و طبعا آخرین (دهمین) رقم در کد ملی، اولین رقم در سمت راست آن می‌باشد.

- حال متغیری به نام sum، تعریف کرده و اولین رقم کد ملی را در عدد ۱۰ ضرب کرده و با متغیر sum، جمع می‌کنیم و مجددا دومین رقم کد ملی را در عدد ۹ ضرب کرده و با متغیر sum، جمع می‌کنیم و این عمل را تا نهمین! رقم کد ملی تکرار می‌کنیم.
- دهمین رقم کد ملی را در متغیری به نام control_digit ذخیره می‌کنیم.
- باقیمانده حاصل این جمع را بر عدد ۱۱ بدست آورده و آن‌را در متغیری به نام remainder ذخیره می‌کنیم.

تست نهایی:

- در صورتی که مقدار remainder، کمتر از عدد ۲ باشد (یعنی یا صفر یا یک باشد)، اگر مقدار remainder، برابر مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمی‌باشد!

- در صورتی که مقدار remainder، بزرگ‌تر یا مساوی عدد ۲ باشد، اگر تفاضل remainder از عدد ۱۱، مساوی مقدار control_digit باشد، کد ملی معتبر بوده و در غیر این صورت معتبر نمی‌باشد!

#ALGORITHM #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!

تذکر: در این سورس‌کد، سعی بر این شده است که از دستورات ساده و پایه‌ای پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامه‌نویسان Junior می‌باشد! در برنامه بعدی، سعی می‌کنیم که سورس‌کد را کمی حرفه‌ای‌تر بنویسیم!

# ********************
def is_national_code_valid(value: str):
if value == None:
return False

value = value.replace(" ", "")

if len(value) < 8 or len(value) > 10:
return False

if len(value) == 9:
value = f"0{value}"

if len(value) == 8:
value = f"00{value}"

if value.isnumeric() == False:
return False

if (
value == "0000000000"
or value == "1111111111"
or value == "2222222222"
or value == "3333333333"
or value == "4444444444"
or value == "5555555555"
or value == "6666666666"
or value == "7777777777"
or value == "8888888888"
or value == "9999999999"
):
return False

sum = 0
sum += int(value[0]) * 10
sum += int(value[1]) * 9
sum += int(value[2]) * 8
sum += int(value[3]) * 7
sum += int(value[4]) * 6
sum += int(value[5]) * 5
sum += int(value[6]) * 4
sum += int(value[7]) * 3
sum += int(value[8]) * 2

control_digit = int(value[9])

remainder = sum % 11

if remainder < 2:
if remainder == control_digit:
return True
else:
if 11 - remainder == control_digit:
return True

return False
# ********************

#SourceCode #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
4👍2
📌 عنوان برنامه: تابعی به نام is_national_code_valid بنویسید که یک ورودی به نام value از جنس رشته (String)، دریافت نموده و در صورتی که مقدار value، یک کد ملی معتبر بود، مقدار True و در غیر این صورت، مقدار False را برگرداند؟

تذکر: الگوریتم مربوط به این برنامه، در دو مطلب قبل به طور کامل منتشر شده است!

تذکر: در این سورس‌کد، سعی بر این شده است که از دستورات حرفه‌ای‌تر پایتون استفاده شود، این مدل کدنویسی، معمولا مربوط به برنامه‌نویسان Senior می‌باشد!

# ********************
def is_national_code_valid(value: str):
if value == None:
return False

value = value.replace(" ", "")

if len(value) < 8 or len(value) > 10:
return False

if len(value) == 9:
value = f"0{value}"

if len(value) == 8:
value = f"00{value}"

if value.isnumeric() == False:
return False

for index in range(10):
if value == str(index) * 10:
return False

sum = 0
for index in range(9):
sum += int(value[index]) * (10 - index)

control_digit = int(value[9])

remainder = sum % 11

if remainder < 2:
if remainder == control_digit:
return True
elif 11 - remainder == control_digit:
return True

return False
# ********************

#SourceCode #SourceCode10031 #Practical
کانال پایتون:
@DT_PYTHON_LEARNING
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
.
3👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که یک Domain Name را از ورودی (کاربر) گرفته و اطلاعات Whois آن‌را نمایش دهد:

نکته: برای نمایش کاملی از اطلاعات، می‌توانید ابتدا از دامنه google.com استفاده نمایید!

# **********
# pip install python-whois
# https://github.com/richardpenman/whois
# **********
import whois

domain_name = input("What is your domain name: ")
domain_name = domain_name.replace("www.", "")
domain_name = domain_name.replace("http://", "")
domain_name = domain_name.replace("https://", "")
domain_name = domain_name.lower()

try:
whois_information = whois.whois(domain_name)

if not whois_information.domain_name:
print(f"Domain '{domain_name}' is not registered!")
else:
print(f"Domain '{domain_name}' is registered.")

print(f"Email(s): {whois_information.emails}")
print(f"Registrar: {whois_information.registrar}")
print(f"WHOIS Server: {whois_information.whois_server}")
print(f"Domain Name(s): {whois_information.domain_name}")
print(f"Name Server(s): {whois_information.name_servers}")
print()
print(f"Updated Date: {whois_information.updated_date}")
print(f"Creation Date: {whois_information.creation_date}")
print(f"Expiration Date: {whois_information.expiration_date}")
print()
print(whois_information)
except:
print(f"Domain '{domain_name}' is not registered!")
# **********

#SourceCode #SourceCode10032 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
2👍2
💚 سلام دوستان عزیزم 💚

🛑 برای یک برنامه بسیار ارزشمند و هیجان‌انگیز به زبان پایتون آماده شوید!

فلسفه برنامه شماره سی و سه (۳۳):

زمانی که ما از طریق Wireless LAN Adapter دستگاه‌مان (لپتاب‌مان)، یک دستگاه WIFI Router، در اطراف‌مان را پیدا (شناسایی) کرده و با یک گذرواژه به آن متصل می‌شویم، اطلاعات مربوط به آن WIFI Router، در قالب یک فایل ‌Profile، بر روی دستگاه ما ذخیره می‌گردد، و گذرواژه‌ای که در زمان اتصال، ثبت کرده‌ایم، (متاسفانه) به صورت Plain Text، در همان فایل ذخیره می‌گردد!

حال می‌خواهیم برنامه‌ای بنویسیم، که فهرست تمام اسامی WIFI Profile های ثبت شده بر روی دستگاه ما را چاپ نموده و در مقابل هر یک از آن‌ها، گذرواژه مربوطه (ذخیره شده) را نمایش دهد!

نکته: همانند پروژه‌های قبل نیز، می‌خواهیم این کار را به صورت مرحله به مرحله (در چهار مرحله) انجام داده و در نهایت، به یک کد کامل، با رعایت تمام اصول Clean Code و Best Practice دست پیدا کنیم.

#SourceCode #SourceCode10033 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
👍43
📌 عنوان برنامه: برنامه‌ای بنویسید که فهرست تمام WIFI Profile های ثبت شده بر روی دستگاه‌تان را چاپ نموده و در مقابل هر یک از آن‌ها، گذرواژه مربوطه (ذخیره شده) را نمایش دهد؟

مرحله اول

- قدم اول:
در محیط Windows PowerShell دستور ذیل را اجرا کرده و نتیجه آن‌را مشاهده می‌کنیم:

# ********************
netsh wlan show profiles
# ********************

- قدم دوم: حال این دستور را توسط زبان برنامه‌نویسی پایتون اجرا می‌کنیم و نتیجه اجرای این دستور را در متغیری به نام profiles_string ذخیره می‌کنیم:

# ********************
import subprocess

command = "netsh wlan show profiles"
profiles_string = subprocess.getoutput(cmd=command)
print(profiles_string)
# ********************

- قدم سوم: با استفاده از دستورات و توابع مربوط به string، سعی می‌کنیم که از این متن، یک لیست ایجاد کنیم که آیتم‌های آن، اسامی WIFI Network ها باشد:

# ********************
import subprocess

command = "netsh wlan show profiles"
profiles_string = subprocess.getoutput(cmd=command)

index = profiles_string.find("User profiles")

profiles_string = profiles_string[index:]
profiles_string = profiles_string.replace("User profiles", "")
profiles_string = profiles_string.replace("-------------", "")
profiles_string = profiles_string.replace("\r", "")

profiles_lines = profiles_string.split(sep="\n")

wifi_names = []
for line in profiles_lines:
if line != "":
parts = line.split(sep=":")
wifi_name = parts[1].strip()
wifi_names.append(wifi_name)

wifi_names.sort()

for wifi_name in wifi_names:
print(f"[{wifi_name}]")
# ********************

#SourceCode #SourceCode10033 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
3👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که فهرست تمام WIFI Profile های ثبت شده بر روی دستگاه‌تان را چاپ نموده و در مقابل هر یک از آن‌ها، گذرواژه مربوطه (ذخیره شده) را نمایش دهد؟

مرحله دوم

- فرض کنید که نام یکی از WIFI های شما، MobinNet110 باشد.

- قدم اول: در محیط Windows PowerShell دستور ذیل را اجرا کرده و نتیجه آن‌را مشاهده می‌کنیم:

# ********************
netsh wlan show profile name="MobinNet110" key=clear
# ********************

- قدم دوم: حال این دستور را توسط زبان برنامه‌نویسی پایتون اجرا می‌کنیم و نتیجه اجرای این دستور را در متغیری به نام profile_string ذخیره می‌کنیم:

# ********************
import subprocess

wifi_name = "MobinNet110"

command = f'netsh wlan show profile name="{wifi_name}" key=clear'
profile_string = subprocess.getoutput(cmd=command)
print(profile_string)
# ********************

- قدم سوم: با استفاده از دستورات و توابع مربوط به string، سعی می‌کنیم که از این متن، گذرواژه (password) موجود در متن را استخراج کرده و آن‌را نمایش می‌دهیم:

# ********************
import subprocess

wifi_name = "MobinNet110"

command = f'netsh wlan show profile name="{wifi_name}" key=clear'
profile_string = subprocess.getoutput(cmd=command)

index_1 = profile_string.find("Key Content")
index_2 = profile_string.find("Cost settings")

profile_string = profile_string[index_1:index_2]
profile_string = profile_string.replace(":", "")
profile_string = profile_string.replace("Key Content", "")

password = profile_string.strip()
print(f"[{password}]")
# ********************

#SourceCode #SourceCode10033 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
2👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که فهرست تمام WIFI Profile های ثبت شده بر روی دستگاه‌تان را چاپ نموده و در مقابل هر یک از آن‌ها، گذرواژه مربوطه (ذخیره شده) را نمایش دهد؟

مرحله سوم

- حال کافی است که کدهای مرحله یک و مرحله دو را در هم ادغام نماییم!

# ********************
import subprocess

command = "netsh wlan show profiles"
profiles_string = subprocess.getoutput(cmd=command)

index = profiles_string.find("User profiles")

profiles_string = profiles_string[index:]
profiles_string = profiles_string.replace("User profiles", "")
profiles_string = profiles_string.replace("-------------", "")
profiles_string = profiles_string.replace("\r", "")

profiles_lines = profiles_string.split(sep="\n")

wifi_names = []
for line in profiles_lines:
if line != "":
parts = line.split(sep=":")
wifi_name = parts[1].strip()
wifi_names.append(wifi_name)

wifi_names.sort()

for wifi_name in wifi_names:
command = f'netsh wlan show profile name="{wifi_name}" key=clear'
profile_string = subprocess.getoutput(cmd=command)

index_1 = profile_string.find("Key Content")
index_2 = profile_string.find("Cost settings")

profile_string = profile_string[index_1:index_2]
profile_string = profile_string.replace(":", "")
profile_string = profile_string.replace("Key Content", "")

password = profile_string.strip()
print(f"[{wifi_name}]: [{password}]")
# ********************

نکته: همان‌طور که ملاحظه می‌کنید، برنامه به زیبایی کار می‌کند، ولی خروجی نتایج، از نظر ظاهری و قیافه چندان جذابیت ندارد، لذا در مرحله چهارم (مرحله آخر) یک سری تکنیک‌های حرفه‌ای به این کد اضافه می‌کنیم تا نتایج مورد قبول و پسند ما قرار گیرد!

#SourceCode #SourceCode10033 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
3👍1
📌 عنوان برنامه: برنامه‌ای بنویسید که فهرست تمام WIFI Profile های ثبت شده بر روی دستگاه‌تان را چاپ نموده و در مقابل هر یک از آن‌ها، گذرواژه مربوطه (ذخیره شده) را نمایش دهد؟

مرحله چهارم (پایانی)

🛑 یک برنامه کاربردی و هیجان‌انگیز با کلی تکنیک‌های حرفه‌ای برنامه‌نویسی!

# ********************
import os, subprocess

os.system(command="cls")

command = "netsh wlan show profiles"
profiles_string = subprocess.getoutput(cmd=command)

index = profiles_string.find("User profiles")

profiles_string = profiles_string[index:]
profiles_string = profiles_string.replace("User profiles", "")
profiles_string = profiles_string.replace("-------------", "")
profiles_string = profiles_string.replace("\r", "")

profiles_lines = profiles_string.split(sep="\n")

wifi_names = []
for line in profiles_lines:
if line != "":
parts = line.split(sep=":")
wifi_name = parts[1].strip()
wifi_names.append(wifi_name)

wifi_names.sort()

for index, wifi_name in enumerate(wifi_names):
command = f'netsh wlan show profile name="{wifi_name}" key=clear'
profile_string = subprocess.getoutput(cmd=command)

index_1 = profile_string.find("Key Content")
index_2 = profile_string.find("Cost settings")

profile_string = profile_string[index_1:index_2]
profile_string = profile_string.replace(":", "")
profile_string = profile_string.replace("Key Content", "")

password = profile_string.strip()
print(f"[{(index + 1):>2}] - [{wifi_name:<32}]: [{password}]")

print()
# ********************

#SourceCode #SourceCode10033 #Practical #EthicalHacking
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
3👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که به سایت IMDB متصل شده و از اطلاعات درج شده در متن صفحات HTML آن:

۱. فهرست ۲۵۰ فیلم برتر جهان
۲. فهرست تمام فیلم‌هایی که در نام آن‌ها کلمات Star Wars وجود دارد
۳. فهرست ۵۰ سریال برتر که در ژانر علمی / تخیلی می‌باشند
۴. فهرست ۵۰ فیلم برتر که در ژانر علمی / تخیلی می‌باشند

را بدست آورده و به ما نمایش دهد؟

نکته: این برنامه، برای عزیزانی نوشته شده است که هنوز در حوزه زبان برنامه‌نویسی پایتون Junior می‌باشند! در برنامه بعدی از امکانات هیجان‌انگیز زیادی استفاده می‌گردد و برنامه بعدی برای عزیزان Senior مناسب می‌باشد.

نکته: تقریبا تا پایان سال ۲۰۲۲، برای حل این تمرین، کتابخانه‌ای به نام IMDBPY وجود داشت که از ابتدای سال ۲۰۲۳، توسعه‌دهنده این کتابخانه، کتابخانه دیگری به نام Cinemagoer، با امکانات جذاب‌تری توسعه داده است که ما آخرین نسخه آن استفاده می‌کنیم!

نکته: متاسفانه پاسخ شما یک، در بعضی از مواقع کار نمی‌کند! ولی بقیه پاسخ‌ها به درستی کار می‌کنند.

# ********************
# pip install cinemagoer
# https://cinemagoer.github.io/
# https://github.com/cinemagoer/cinemagoer
# ********************
from imdb import Cinemagoer

instance = Cinemagoer()

# 1
movies = instance.get_top250_movies()
# 2
# movies = instance.search_movie(title="Star Wars")
# 3
# movies = instance.get_top50_tv_by_genres(genres="Sci-Fi")
# 4
# movies = instance.get_top50_movies_by_genres(genres="Sci-Fi")

for movie in movies:
print(movie)
# ********************

#SourceCode #SourceCode10034 #Practical #General
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
5👍2
📌 عنوان برنامه: برنامه‌ای بنویسید که به سایت IMDB متصل شده و از اطلاعات درج شده در متن صفحات HTML آن:

۱. فهرست ۲۵۰ فیلم برتر جهان
۲. فهرست تمام فیلم‌هایی که در نام آن‌ها کلمات Star Wars وجود دارد
۳. فهرست ۵۰ سریال برتر که در ژانر علمی / تخیلی می‌باشند
۴. فهرست ۵۰ فیلم برتر که در ژانر علمی / تخیلی می‌باشند

را بدست آورده و به ما نمایش دهد؟

نکته: در این برنامه، می‌خواهیم اطلاعات برحسب سال تولید مرتب شده و در ابتدای هر سطر اطلاعاتی، شماره ردیف نمایش داده شده و در همان سطر، سال تولید، Rating، و مناسب سن بودن نیز نمایش داده شود.

نکته: این برنامه، برای عزیزان Senior نوشته شده است!

نکته: تقریبا تا پایان سال ۲۰۲۲، برای حل این تمرین، کتابخانه‌ای به نام IMDBPY وجود داشت که از سال ۲۰۲۳، توسعه‌دهنده این کتابخانه، کتابخانه دیگری به نام Cinemagoer، با امکانات جذاب‌تری توسعه می‌دهد!

نکته: متاسفانه پاسخ شما یک، بعضی وقت‌ها کار نمی‌کند! ولی بقیه پاسخ‌ها به درستی کار می‌کنند.

# ********************
# pip install cinemagoer
# https://cinemagoer.github.io/
# https://github.com/cinemagoer/cinemagoer
# ********************
from imdb import Cinemagoer

instance = Cinemagoer()

# 1
# movies = instance.get_top250_movies()
# 2
movies = instance.search_movie(title="Star Wars")
# 3
# movies = instance.get_top50_tv_by_genres(genres="Sci-Fi")
# 4
# movies = instance.get_top50_movies_by_genres(genres="Sci-Fi")

movies.sort(key=lambda item: item["year"], reverse=True)

for index, movie in enumerate(movies):
id = movie.movieID

title = movie["title"]

year = movie["year"]

rating = "-"
if "rating" in movie:
rating = movie["rating"]

certificate = "-"
if "certificates" in movie:
certificate = movie["certificates"][0]

message = f"[{index + 1:>2}] {title:<55} Year: {year:<4} Rating: {rating:<3} Certificate: {certificate:<8}"
# message += f" [{id:>8}]"

print(message)
# ********************

#SourceCode #SourceCode10034 #Practical #General
ادمین:
@Dariush_Tasdighi
کانال اصلی:
@IranianExperts
کانال پایتون:
@DT_PYTHON_LEARNING
.
👍53
❤️ سلام دوستان عزیزم ❤️

🔴 برای یک برنامه هیجان‌انگیز و کاربردی دیگر، با زبان برنامه‌نویسی پایتون آماده شوید...

شرح برنامه:‌ برنامه‌ای که اطلاعات اکانت Github خودمان و یا شخص دیگری را دریافت کرده، و به طور خودکار، تمام Repository های Fork نشده آن اکانت (Account) را شناسایی کرده، و در ضمن، نام Branch اصلی هر یک از آن Repository ها را استخراج کرده (master / main)، سپس پوشه‌ای به همان نام Account ایجاد نموده، و کلیه سورس‌کدهای هر یک از Repository ها را، در قالب یک فایل ZIP، به زیبایی دانلود می‌کند!

📌 نکته: ضمنا برنامه کاملا هوشمند بوده و اگر مثلا چند هفته و یا چند ماه بعد، مجددا برنامه را برای همان اکانت اجرا نماییم، صرفا Repository های Update شده را دانلود می‌کند!

نکته: به دلیل جذابیت و کاربردی بودن این برنامه، و این‌که به غیر از گرفتن کلی ایده‌های جذاب، کلی از نکات و تکنیک‌های زبان برنامه‌نویسی پایتون را نیز فرا خواهید گرفت و یا برایتان مرور می‌گردد، احتمالا علاوه بر انتشار سورس‌کد، فیلم آموزشی این برنامه نیز تولید و منتشر خواهد شد...

🔴 نکته مهم: قابل توجه شاگردان عزیز و گرامی اینجانب، در کلاس‌های عمومی C# Fundamental و یا Programming in C# 1، و البته دیگر عزیزان: شما از این پس می‌توانید، با استفاده از این برنامه، هر از گاهی، نسبت به دانلود کلیه سورس‌کدهای موجود در اکانت‌های Github اینجانب اقدام نمایید:

https://github.com/dariush-tasdighi
https://github.com/learning-csharp

#SourceCode #SourceCode10037 #Practical #EthicalHacking

🆔 @Dariush_Tasdighi
🆔
@IranianExperts
🆔
@DT_PYTHON_LEARNING
.
Please open Telegram to view this post
VIEW IN TELEGRAM
11👍2
Media is too big
VIEW IN TELEGRAM
❤️ سلام دوستان عزیزم ❤️

شرح برنامه:‌
برنامه‌ای که اطلاعات اکانت Github خودمان و یا شخص دیگری را دریافت کرده، و به طور خودکار، تمام Repository های Fork نشده آن اکانت (Account) را شناسایی کرده، و در ضمن، نام Branch اصلی هر یک از آن Repository ها را استخراج کرده (master / main)، سپس پوشه‌ای به همان نام Account ایجاد نموده، و کلیه سورس‌کدهای هر یک از Repository ها را، در قالب یک فایل ZIP، به زیبایی دانلود می‌کند!

📌 نکته: ضمنا برنامه کاملا هوشمند بوده و اگر مثلا چند هفته و یا چند ماه بعد، مجددا برنامه را برای همان اکانت اجرا نماییم، صرفا Repository های Update شده را دانلود می‌کند!

🔴 نکته: دوستان عزیزم، فارغ از این‌که به زبان برنامه‌نویسی پایتون علاقه دارید یا خیر! و یا دانشی در این خصوص دارید یا خیر! قویا مشاهده این فیلم را به شما توصیه می‌کنم!

https://github.com/dariush-tasdighi
https://github.com/learning-csharp

#Movie #SourceCode #SourceCode10037 #Practical #EthicalHacking

🆔 @Dariush_Tasdighi
🆔
@IranianExperts
🆔
@DT_PYTHON_LEARNING
.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍54
عنوان برنامه:‌ دانلود فایل‌های یک Repository

# ********************
import os, requests

os.system(command="cls")
username = input("What is github account: ").lower()

url = f"https://api.github.com/users/{username}/repos"

try:
response = requests.get(url=url)
except:
print(f"Connection Error!")
quit()

if (
not response
or response.status_code != 200
or response.text == ""
or response.text == "[]"
or "Not Found" in response.text
):
print(f"Repository '{username}' not found or empty!")
quit()

response_json = response.json()

non_fork_list = []

for item in response_json:
if item["fork"] == False:
name = item["name"].upper()
updated_at = item["updated_at"]
default_branch = item["default_branch"]
data = (name, default_branch, updated_at)
non_fork_list.append(data)

non_fork_list.sort()

for index, item in enumerate(non_fork_list):
message = f"[{(index + 1):>3}] - [{item[2]:<20}] - [{item[1]:<10}] - {item[0]}"
print(message)

if os.path.exists(path=username) == False:
os.mkdir(path=username)

index = 0
for item in non_fork_list:
updated_at = (
item[2].replace(":", "_").replace("-", "_").replace("T", "_").replace("Z", "")
)

file_name = f"{item[0]}_{updated_at}.zip"
path_name = f"{username}\{file_name}"
if os.path.exists(path=path_name):
break

index += 1

url = f"https://github.com/{username}/{item[0]}/archive/refs/heads/{item[1]}.zip"

response = requests.get(url=url, stream=True)
if response.status_code == 200:
with open(file=path_name, mode="wb") as file:
for chunk in response.iter_content(chunk_size=1024):
file.write(chunk)

message = f"[{(index):>3}] - File '{file_name}' downloaded."
print(message)
# ********************

#SourceCode #SourceCode10037 #Practical #EthicalHacking

🆔 @Dariush_Tasdighi
🆔
@IranianExperts
🆔
@DT_PYTHON_LEARNING
.
👍72
Media is too big
VIEW IN TELEGRAM
❤️ سلام دوستان عزیزم ❤️

🔴 برای یک برنامه هیجان‌انگیز و کاربردی دیگر، با زبان برنامه‌نویسی پایتون آماده شوید...

🟢 موضوع برنامه یا آموزش
Web Scraping
/ Web Crawling

شرح برنامه:‌
استخراج اطلاعات از صفحات سایت دیوار!

می‌خواهیم مثلا اطلاعات مربوط به رهن / اجاره، آپارتمان‌هایی که محدوده سهروردی تهران هستند را بدست آورده، اطلاعات آن‌را ویرایش (تر و تمیز) کرده و این اطلاعات را در یک فایل Excel اصطلاحا Export نماییم!

نکته: به دلیل جذابیت و کاربردی بودن این برنامه، و این‌که به غیر از گرفتن کلی ایده‌های جذاب، کلی از نکات و تکنیک‌های زبان برنامه‌نویسی پایتون را نیز فرا خواهید گرفت و یا برایتان مرور می‌گردد، علاوه بر انتشار سورس‌کد، فیلم‌های آموزشی این برنامه نیز تولید و منتشر خواهد شد...

🛑 نکته مهم: بسیاری از این‌گونه برنامه‌هایی که در این کانال، نوشته و منتشر می‌شوند، بسیار کاربردی بوده و حتی اگر علاقه‌ای به برنامه‌نویسی ندارید و یا به زبان خاصی مانند پایتون نیز علاقه‌ای ندارید، می‌توانید صرفا این برنامه‌ها را اجرا کرده و از نتیجه آن‌ها استفاده کرده و لذت ببرید!

#Movie #Practical #EthicalHacking

🆔 @Dariush_Tasdighi
🆔
@IranianExperts
🆔
@DT_PYTHON_LEARNING
.
Please open Telegram to view this post
VIEW IN TELEGRAM
20👍2