یادداشت های برنامه نویس آماتور | Amateur programmer notes
61 subscribers
92 photos
10 videos
34 files
88 links
اندازه ی آرزو هات مهم نیست
مهم اینه تو چقد میبینیش
آرزو هاتو بزرگ ببین


</create> by <ashkan\>
Download Telegram
CSS
مخفف
Cascading Style Sheets
(برگه‌هاے سبڪ آبشارے) است
و زبانے براے طراحے و استایل‌دهے بہ صفحات وب ساخته‌شدہ با HTML استفادہ می‌شہ. CSS ظاهر و چیدمان عناصر صفحہ (مثل رنگ، فونت، اندازہ، موقعیت) رو ڪنترل می‌ڪنه.

### ویژگی‌هاے ڪلیدے CSS:
- جدا ڪردن محتوا از ظاهر: HTML ساختار رو تعریف می‌ڪنہ، CSS استایل رو.
- انعطاف‌پذیر: می‌تونہ یہ وب‌سایت ڪامل رو با یہ فایل CSS استایل‌دهے ڪنه.
- آبشارے (Cascading): اولویت استایل‌ها بر اساس ترتیب و specificity (مشخص بودن) اعمال می‌شه.

### مثال ساده:
<!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
text-align: center;
}
p {
font-size: 18px;
color: green;
}
</style>
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

- در اینجا، CSS رنگ و تراز متن <h1> و اندازہ و رنگ فونت <p> رو مشخص ڪرده.

### روش‌هاے استفادہ از CSS:
1. داخلے (Internal): داخل تگ <style> در بخش <head> (مثل مثال بالا).
2. خارجے (External): در فایل جدا (.css) ڪہ با تگ <link> بہ HTML وصل می‌شه.
3. خطے (Inline): مستقیم داخل تگ HTML با ویژگے style (مثل <p style="color: red;">).

### قابلیت‌هاے مهم CSS:
- رسپانسیو (Responsive): با Media Queries براے تطبیق با دستگاه‌هاے مختلف (موبایل، دسڪتاپ).
- انیمیشن و ترنزیشن: براے جلوه‌هاے بصرے (مثل حرڪت یا تغییر رنگ).
- فلڪس‌باڪس و گرید: براے چیدمان‌هاے پیچیدہ و مرتب.

### نسخه‌ها:
- CSS3: نسخہ مدرن با ویژگی‌هایے مثل انیمیشن، گرادیانت، و پشتیبانے بهتر از رسپانسیو.

### یادگیری:
CSS براے مبتدیان سادہ است، اما تسلط بہ فلڪس‌باڪس، گرید و رسپانسیو نیاز بہ تمرین دارہ. منابع مثل W3Schools و CSS-Tricks عالے هستن.
ترڪیب CSS با HTML بہ معناے استفادہ از CSS براے استایل‌دهے و زیباسازے ساختار صفحاتے است ڪہ با HTML ساختہ شده‌اند. HTML اسڪلت و محتواے صفحہ (مثل متن، تصاویر) رو فراهم می‌ڪنہ، و CSS ظاهر اون‌ها (مثل رنگ، فونت، چیدمان) رو تنظیم می‌ڪنہ. این ترڪیب باعث می‌شہ وب‌سایت‌ها هم ڪارآمد باشن و هم جذاب بہ نظر بیان.

### روش‌هاے ترڪیب CSS با HTML:
1. CSS داخلے (Internal CSS):
- استایل‌ها داخل تگ <style> در بخش <head> سند HTML نوشتہ می‌شن.
- مثال:
     <!DOCTYPE html>
<html>
<head>
<style>
h1 {
color: blue;
text-align: center;
}
p {
font-size: 16px;
color: green;
}
</style>
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

- مناسب براے پروژه‌هاے ڪوچڪ یا تست.

2. CSS خارجے (External CSS):
- استایل‌ها در یڪ فایل جدا با پسوند .css (مثل styles.css) نوشتہ می‌شن و با تگ <link> بہ HTML وصل می‌شن.
- مثال:
     <!-- فایل HTML (index.html) -->
<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" href="styles.css">
</head>
<body>
<h1>سلام، دنیا!</h1>
<p>این یڪ پاراگراف است.</p>
</body>
</html>

     /* فایل CSS (styles.css) */
h1 {
color: blue;
text-align: center;
}
p {
font-size: 16px;
color: green;
}

- بهترین روش براے پروژه‌هاے بزرگ، چون مدیریت و نگهدارے ڪد راحت‌تره.

3. CSS خطے (Inline CSS):
- استایل مستقیماً داخل تگ HTML با ویژگے style نوشتہ می‌شه.
- مثال:
     <h1 style="color: blue; text-align: center;">سلام، دنیا!</h1>
<p style="font-size: 16px; color: green;">این یڪ پاراگراف است.</p>

- براے تغییرات سریع مناسبہ، ولے براے پروژه‌هاے بزرگ توصیہ نمی‌شہ چون مدیریتش سخت می‌شه.

### نڪات مهم:
- اولویت‌بندے (Specificity): اگر چند استایل براے یڪ عنصر تعریف بشہ، CSS خطے > داخلے > خارجے (بستہ بہ ترتیب و مشخص بودن انتخابگر).
- سازگارے: ترڪیب HTML و CSS امڪان ایجاد صفحات رسپانسیو (مناسب براے موبایل و دسڪتاپ) رو فراهم می‌ڪنه.
- ابزارهاے توسعہ: مرورگرها (مثل ڪروم) با ابزار Developer Tools بہ تست و دیباگ استایل‌ها ڪمڪ می‌ڪنن.

### چرا ترڪیب این دو مهم است؟
- HTML بدون CSS سادہ و غیرجذابہ (فقط متن و ساختار خام).
- CSS بدون HTML ڪاربردے ندارہ، چون چیزے براے استایل‌دهے وجود نداره.
- با هم، یہ وب‌سایت حرفه‌اے، زیبا و ڪاربرپسند می‌سازن.

✍Mr.Ashkan.Legend
براے دانلود موزیڪ‌ویدیو از لینڪ اینستاگرام و شناسایے خوانندہ آهنگ روے ویدیو، نیاز بہ چند ابزار و API داریم. ڪد زیر با استفادہ از ڪتابخانه‌هاے پایتون مثل instaloader براے دانلود ویدیو و shazamio براے شناسایے آهنگ ڪار می‌ڪنہ. توجہ ڪن ڪہ این ڪار ممڪنہ با محدودیت‌هاے اینستاگرام یا قوانین ڪپی‌رایت مواجہ بشه.

### پیش‌نیازها:
1. نصب پڪیج‌ها:
   pip install instaloader shazamio


2. حساب اینستاگرام (براے دسترسے بہ پست‌ها، نیاز بہ لاگین دارید).
3. API Shazam (براے شناسایے آهنگ).

### ڪد پایتون:
import instaloader
from shazamio import Shazam
import os
import asyncio

# تابع دانلود ویدیو از اینستاگرام
def download_instagram_video(post_url, username, password):
L = instaloader.Instaloader()

# لاگین بہ اینستاگرام
try:
L.login(username, password)
except Exception as e:
print(f"خطا در لاگین: {e}")
return None

# استخراج shortcode از URL
shortcode = post_url.split("/")[-2]

try:
# دانلود پست
post = instaloader.Post.from_shortcode(L.context, shortcode)
L.download_post(post, target="downloads")
print("ویدیو دانلود شد!")

# پیدا ڪردن فایل ویدیویی
for file in os.listdir("downloads"):
if file.endswith(".mp4"):
return os.path.join("downloads", file)
except Exception as e:
print(f"خطا در دانلود: {e}")
return None

# تابع شناسایے آهنگ با Shazam
async def recognize_song(video_path):
shazam = Shazam()
try:
# شناسایے آهنگ از فایل ویدیویی
result = await shazam.recognize_song(video_path)
if result and "track" in result:
track = result["track"]
artist = track.get("subtitle", "نامشخص")
title = track.get("title", "نامشخص")
print(f"آهنگ: {title} - خوانندہ: {artist}")
return artist, title
else:
print("آهنگ شناسایے نشد!")
return None, None
except Exception as e:
print(f"خطا در شناسایے: {e}")
return None, None

# تابع اصلی
async def main():
# اطلاعات اینستاگرام
username = "your_instagram_username" # نام ڪاربرے اینستاگرام
password = "your_instagram_password" # رمز عبور
post_url = input("لینڪ پست اینستاگرام را وارد ڪنید: ") # مثلا: https://www.instagram.com/p/XXXXX/

# ایجاد پوشہ براے دانلود
if not os.path.exists("downloads"):
os.makedirs("downloads")

# دانلود ویدیو
video_path = download_instagram_video(post_url, username, password)
if video_path:
# شناسایے آهنگ
artist, title = await recognize_song(video_path)
if artist:
print(f"نتیجہ نهایے: آهنگ '{title}' از '{artist}'")
else:
print("نتیجه‌اے یافت نشد.")
else:
print("دانلود ناموفق بود.")

# اجراے ڪد
if __name__ == "__main__":
asyncio.run(main())


### توضیحات:
1. دانلود ویدیو:
- از instaloader براے دانلود ویدیو از لینڪ پست اینستاگرام استفادہ می‌شه.
- نیاز بہ نام ڪاربرے و رمز عبور اینستاگرام دارہ (بہ دلیل محدودیت‌هاے API عمومی).
- ویدیو در پوشہ downloads ذخیرہ می‌شه.

2. شناسایے آهنگ:
- ڪتابخانہ shazamio فایل ویدیویے رو تحلیل می‌ڪنہ و از طریق API Shazam اطلاعات آهنگ (نام و خوانندہ) رو برمی‌گردونه.
- اگر آهنگ قابل شناسایے نباشہ، پیام خطا نمایش دادہ می‌شه.

3. نڪات مهم:
- محدودیت‌هاے اینستاگرام: لاگین مڪرر ممڪنہ باعث بلاڪ موقت حساب بشہ. از حساب تست استفادہ ڪن.
- ڪیفیت فایل: فایل‌هاے ویدیویے باید ڪیفیت صوتے خوبے داشتہ باشن تا Shazam بتونہ آهنگ رو تشخیص بده.
- قوانین ڪپی‌رایت: دانلود و استفادہ از محتوا بدون اجازہ ممڪنہ غیرقانونے باشه.
- وابستگے بہ اینترنت: براے دانلود و شناسایے، اتصال اینترنت لازمه.

### جایگزین‌ها:
- اگر نمی‌خواے لاگین ڪنے، می‌تونے از وب‌سایت‌هاے دانلود اینستاگرام (مثل Snapinsta) به‌صورت دستے ویدیو رو دانلود ڪنے و فقط بخش شناسایے آهنگ رو با ڪد اجرا ڪنی.
- براے شناسایے آهنگ، اپلیڪیشن‌هاے جایگزین مثل SoundHound هم می‌تونن به‌صورت دستے استفادہ بشن.

✍Mr.Ashkan.Legend
در زیر یڪ نمونہ ڪد سادہ پایتون براے ربات تلگرامے آوردہ شدہ ڪہ با استفادہ از ڪتابخانه‌هاے python-telegram-bot و yt-dlp قابلیت دانلود ویدیو از یوتیوب و اینستاگرام رو دارہ. این ربات لینڪ ویدیویے ڪہ ڪاربر می‌فرستہ رو می‌گیرہ، فایل رو دانلود می‌ڪنہ و براے ڪاربر می‌فرسته.

from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
import yt_dlp
import os

# توڪن ربات رو از BotFather بگیر
TOKEN = "YOUR_BOT_TOKEN"

# تنظیمات yt-dlp براے دانلود
YDL_OPTS = {
'format': 'best[ext=mp4]', # دانلود بهترین ڪیفیت mp4
'outtmpl': 'downloads/%(title)s.%(ext)s', # محل ذخیرہ فایل
'noplaylist': True, # جلوگیرے از دانلود پلی‌لیست
}

async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text("سلام! لینڪ یوتیوب یا اینستاگرام بفرست تا ویدیوشو برات دانلود ڪنم.")

async def handle_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
url = update.message.text
chat_id = update.message.chat_id

# بررسے اینڪہ لینڪ معتبرہ یا نه
if "youtube.com" not in url and "instagram.com" not in url and "youtu.be" not in url:
await update.message.reply_text("لطفاً لینڪ معتبر از یوتیوب یا اینستاگرام بفرست!")
return

await update.message.reply_text("در حال دانلود... ڪمے صبر ڪن!")

try:
# دانلود ویدیو با yt-dlp
with yt_dlp.YoutubeDL(YDL_OPTS) as ydl:
info = ydl.extract_info(url, download=True)
file_path = ydl.prepare_filename(info)

# ارسال فایل بہ ڪاربر
with open(file_path, 'rb') as video:
await context.bot.send_video(chat_id=chat_id, video=video)

# حذف فایل بعد از ارسال
os.remove(file_path)
await update.message.reply_text("ویدیو با موفقیت فرستادہ شد!")

except Exception as e:
await update.message.reply_text(f"خطا: {str(e)}")

async def main():
# ایجاد پوشہ downloads اگر وجود نداشتہ باشه
if not os.path.exists('downloads'):
os.makedirs('downloads')

app = Application.builder().token(TOKEN).build()

# هندلرها
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, handle_link))

# شروع ربات
print("ربات شروع شد...")
await app.run_polling()

if __name__ == "__main__":
import asyncio
asyncio.run(main())


### پیش‌نیازها:
1. نصب ڪتابخانه‌ها:
   pip install python-telegram-bot yt-dlp

2. FFmpeg:
- براے پردازش ویدیوها، باید FFmpeg روے سیستم نصب باشه:
- ویندوز: از سایت رسمے دانلود ڪن و بہ PATH اضافہ ڪن.
- لینوڪس: sudo apt install ffmpeg
- مڪ: brew install ffmpeg
3. توڪن ربات:
- از @BotFather توڪن بگیر و توے TOKEN قرار بده.

### توضیحات:
- ربات بہ دستور /start پاسخ می‌دہ و منتظر لینڪ از یوتیوب یا اینستاگرام می‌مونه.
- وقتے لینڪ می‌فرستے، ربات ویدیو رو دانلود می‌ڪنہ، توے تلگرام می‌فرستہ و فایل رو حذف می‌ڪنه.
- فایل‌ها توے پوشہ downloads ذخیرہ می‌شن (موقتاً).
- این ڪد ویدیوهاے mp4 با بهترین ڪیفیت رو دانلود می‌ڪنه.

### محدودیت‌ها:
- حجم فایل: تلگرام محدودیت 50 مگابایت براے آپلود فایل دارہ. براے فایل‌هاے بزرگ‌تر، باید از روش‌هایے مثل آپلود بہ سرور یا سرویس‌هاے ابرے استفادہ ڪنی.
- اینستاگرام: براے دانلود از اینستاگرام، ممڪنہ نیاز بہ لاگین باشہ (بخصوص براے پست‌هاے خصوصی). می‌تونے تنظیمات YDL_OPTS رو تغییر بدے و نام ڪاربری/رمز عبور بذاری:
  YDL_OPTS['username'] = 'YOUR_INSTAGRAM_USERNAME'
YDL_OPTS['password'] = 'YOUR_INSTAGRAM_PASSWORD'

- خطاها: لینڪ‌هاے نامعتبر یا مشڪلات سرور (مثل قطعے اینترنت) ممڪنہ باعث خطا بشن. ڪد خطاها رو بہ ڪاربر نشون می‌ده.

### بهبودهاے ممڪن:
- اضافہ ڪردن انتخاب ڪیفیت ویدیو.
- پشتیبانے از دانلود صوت (mp3).
- آپلود فایل‌هاے بزرگ بہ سرویس‌هایے مثل Google Drive.
❤‍🔥1
ڪد زیر یڪ ربات تلگرام با پایتون (استفادہ از ڪتابخانہ `python-telegram-bot`) ارائہ می‌دهد ڪہ سہ قابلیت دارد:
1. تبدیل فایل بہ لینڪ (آپلود فایل بہ تلگرام و دریافت لینڪ).
2. تبدیل لینڪ بہ فایل (دانلود فایل از لینڪ تلگرام).
3. تغییر نام فایل ارسالی.

### پیش‌نیازها:
- نصب ڪتابخانہ: `pip install python-telegram-bot requests`
- توڪن ربات از BotFather.

###
ڪد:
```python
import os
from telegram import Update
from telegram.ext import Application, CommandHandler, MessageHandler, filters, ContextTypes
import requests

# توڪن ربات
TOKEN = "YOUR_BOT_TOKEN"

# تابع شروع
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"سلام! من ربات مدیریت فایلم.\n"
"1. فایل بفرست تا لینڪش رو بدم.\n"
"2. لینڪ فایل تلگرام بدہ تا دانلودش ڪنم.\n"
"3. فایل بفرست و بعد اسمش رو بگو تا تغییرش بدم."
)

# دریافت فایل و تبدیل بہ لینڪ
async def handle_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
file = await update.message.document.get_file()
file_url = file.file_path
await update.message.reply_text(f"لینڪ فایل: {file_url}")

# تغییر نام فایل
async def rename_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
if not context.user_data.get("file"):
await update.message.reply_text("اول یہ فایل بفرست!")
return
new_name = update.message.text
if not new_name.endswith(context.user_data["file_ext"]):
new_name += context.user_data["file_ext"]

file = context.user_data["file"]
new_file_path = f"downloads/{new_name}"
os.rename(file.file_path, new_file_path)

await update.message.reply_document(document=open(new_file_path, "rb"))
os.remove(new_file_path)
context.user_data.clear()

# ذخیرہ فایل براے تغییر نام
async def store_file(update: Update, context: ContextTypes.DEFAULT_TYPE):
file = await update.message.document.get_file()
file_ext = os.path.splitext(update.message.document.file_name)[1]
file_path = f"downloads/{update.message.document.file_name}"

if not os.path.exists("downloads"):
os.makedirs("downloads")

file_data = requests.get(file.file_path).content
with open(file_path, "wb") as f:
f.write(file_data)

context.user_data["file"] = file
context.user_data["file_ext"] = file_ext
await update.message.reply_text("اسم جدید فایل رو بگو:")

# دانلود فایل از لینڪ
async def download_from_link(update: Update, context: ContextTypes.DEFAULT_TYPE):
link = update.message.text
if "t.me" in link or "telegram.me" in link:
await update.message.reply_text("لطفاً لینڪ مستقیم فایل (مثل https://...file.mp4) رو بفرست.")
return

try:
response = requests.get(link)
file_name = link.split("/")[-1]
file_path = f"downloads/{file_name}"

if not os.path.exists("downloads"):
os.makedirs("downloads")

with open(file_path, "wb") as f:
f.write(response.content)

await update.message.reply_document(document=open(file_path, "rb"))
os.remove(file_path)
except Exception as e:
await update.message.reply_text(f"خطا: {str(e)}")

def main():
app = Application.builder().token(TOKEN).build()

app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(filters.Document.ALL, store_file))
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, download_from_link))

app.run_polling()

if __name__ == "__main_
_":
main()
`
``

### توضیحات:
1.
**تبدیل فایل بہ لینڪ**:
- وقتے ڪاربر فایل می‌فرستہ، ربات لینڪ مستقیم فایل (file_path) رو برمی‌گردونه.
2. **دانلود از لینڪ**:
-
ڪاربر لینڪ مستقیم فایل تلگرام (مثل `https://...file.mp4`) رو می‌فرستہ، ربات فایل رو دانلود و ارسال می‌ڪنه.
3. **تغییر نام فایل**:
- ڪاربر فایل می‌فرستہ، ربات درخواست اسم جدید می‌ڪنہ. بعد فایل با اسم جدید ارسال می‌شه.
4. **نڪات**:
- پوشہ `downloads` براے ذخیرہ موقت فایل‌ها ساختہ می‌شه.
- فایل‌هاے موقت بعد از ارسال حذف می‌شن.
- براے لینڪ‌هاے غیرمستقیم (مثل t.me) باید API تلگرام یا ابزارهاے
با هر خط برنامه
دنیایی جدید خلق می‌شود.

جایی که منطق و خلاقیت در هم می‌آمیزند

و هر پروژه چالشی برای ساخت چیزهایی است که در ذهن داریم.

✍️Mr.Ashkan.Legend
Please open Telegram to view this post
VIEW IN TELEGRAM
دو روز کل اینترنت قطعه 😐
و فقط 1 درصد مردم دسترسی به اینترنت دارن
از 1 درصد متصل به نت ملی 2 درصد موبایل رو تشکیل میده و 92 درصد هم بات ها هستن 😐

افراد متصل کمتر از 0.001 درصد!!! 🏴‍☠️
این یه کد حرفه‌ای پایتون برای ربات تلگرامیه که می‌تونه از اینستاگرام ویدیو و عکس دانلود کنه. از کتابخونه `python-telegram-bot` برای ربات و `instagrapi` برای دانلود استفاده می‌کنه. کد کامل و قابل اجراست، فقط نیاز به یه سری تنظیمات اولیه دار
ی.

```python
import logging
from telegram import Update
from telegram.ext import (
ApplicationBuilder,
CommandHandler,
MessageHandler,
Filters,
ContextTypes,
)
from instagrapi import Client
import re
import os

# تنظیمات لاگینگ
logging.basicConfig(format="%(asctime)s - %(name)s - %(levelname)s - %(message)s", level=logging.INFO)
logger = logging.getLogger(__name__)

# تنظیمات اینستاگرام
INSTA_USERNAME = "your_instagram_username" # نام کاربری اینستاگرام
INSTA_PASSWORD = "your_instagram_password" # رمز اینستاگرام
DOWNLOAD_DIR = "downloads" # پوشه ذخیره فایل‌ها

# توکن ربات تلگرام
TOKEN = "your_telegram_bot_token" # توکن ربات از BotFather

# تنظیم کلاینت اینستاگرام
cl = Client()
cl.login(INSTA_USERNAME, INSTA_PASSWORD)

# ایجاد پوشه برای دانلود
if not os.path.exists(DOWNLOAD_DIR):
os.makedirs(DOWNLOAD_DIR)

# تابع شروع ربات
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE):
await update.message.reply_text(
"سلام! لینک پست اینستاگرام رو بفرست تا برات دانلود کنم. 😎\nمثال: https://www.instagram.com/p/ABC123/"
)

# تابع مدیریت خطا
async def error_handler(update: Update, context: ContextTypes.DEFAULT_TYPE):
logger.error(f"Update {update} caused error {context.error}")
await update.message.reply_text("یه مشکلی پیش اومد! دوباره امتحان کن یا لینک رو چک کن.")

# تابع بررسی و دانلود از لینک اینستاگرام
async def handle_message(update: Update, context: ContextTypes.DEFAULT_TYPE):
url = update.message.text
# بررسی اینکه لینک اینستاگرام است یا نه
insta_regex = r"(https?://www\.instagram\.com/(p|reel)/[a-zA-Z0-9-_]+)"
match = re.match(insta_regex, url)

if not match:
await update.message.reply_text("لطفاً یه لینک معتبر اینستاگرام بفرست! مثل: https://www.instagram.com/p/ABC123/")
return

await update.message.reply_text("در حال دانلود... کمی صبر کن! ⏳")

try:
# گرفتن shortcode از لینک
shortcode = url.split("/")[-2]
media = cl.media_info(cl.media_pk_from_code(shortcode))

# بررسی نوع مدیا (عکس یا ویدیو)
if media.media_type == 1: # عکس
file_path = cl.photo_download(media.pk, folder=DOWNLOAD_DIR)
with open(file_path, "rb") as photo:
await update.message.reply_photo(photo=photo, caption="دانلود شد! 📸")
elif media.media_type == 2: # ویدیو
file_path = cl.video_download(media.pk, folder=DOWNLOAD_DIR)
with open(file_path, "rb") as video:
await update.message.reply_video(video=video, caption="دانلود شد! 🎥")
else:
await update.message.reply_text("این نوع محتوا پشتیبانی نمی‌شه! فقط عکس و ویدیو می‌تونم دانلود کنم.")

# پاک کردن فایل از سرور
os.remove(file_path)

except Exception as e:
logger.error(f"Error downloading media: {e}")
await update.message.reply_text("خطا! نمی‌تونم این پست رو دانلود کنم. شاید پست خصوصی باشه یا لینک اشتباهه.")

def main():
# ساخت اپلیکیشن ربات
app = ApplicationBuilder().token(TOKEN).build()

# هندلرها
app.add_handler(CommandHandler("start", start))
app.add_handler(MessageHandler(Filters.text & ~Filters.command, handle_message))
app.add_error_handler(error_handler)

# شروع ربات
logger.info("Starting bot...")
app.run_polling()

if __name__ == "__main_
_":
main()
```

### راهنمای راه‌اندازی:
1. *
*نصب کتابخونه‌ها**:
```bash
pip install pyt
hon-telegram-bot instagrapi
```
2. **تنظیمات اولیه**:
- توکن ربات رو از [BotFather](https://t.me/BotFather) بگیر و توی `TOKEN` بذار.
- یه اکانت
اینستاگرام برای لاگین وارد کن توی `INSTA_USERNAME` و `INSTA_PASSWORD`. (اکانت واقعی بهتره، چون اکانت‌های فیک ممکنه محدود بشن.)
- پوشه `downloads` برای ذخیره موقت فایل‌ها استفاده می‌شه. می‌تونی مسیرش رو عوض کنی.

3. **اجرا**:
- کد رو توی یه فایل (مثلاً `bot.py
پست آموزشی برای کانال: "ترفند جاوااسکریپت - ساده‌سازی کد با Destructuring"

🎯 یه ترفند باحال برای تمیزتر کردن کد جاوااسکریپت!

اگر تا حالا با Destructuring کار نکردی، آماده باش که عاشقش بشی! 😍 این قابلیت بهت کمک می‌کنه که کدت کوتاه‌تر، خواناتر و حرفه‌ای‌تر بشه.

### مثال ساده:
فرض کن یه آبجکت داری:
const user = {
name: "علی",
age: 25,
city: "تهران"
};


#### روش قدیمی:
const name = user.name;
const age = user.age;
const city = user.city;


#### با Destructuring:
const { name, age, city } = user;


فقط با یه خط، همه متغیرها رو تعریف کردی! 🚀

### یه مثال پیشرفته‌تر:
اگه بخوای اسم متغیرها رو عوض کنی یا فقط بعضی از خواص رو بگیری:
const { name: userName, city } = user;
console.log(userName); // خروجی: علی
console.log(city); // خروجی: تهران


### کاربرد واقعی:
فرض کن داری با یه API کار می‌کنی. پاسخ API یه آبجکت پیچیده‌ست:
const response = {
data: {
id: 123,
title: "پروژه جدید",
details: { priority: "بالا", deadline: "1402/08/01" }
}
};

// استخراج اطلاعات با Destructuring
const { data: { title, details: { priority } } } = response;
console.log(title); // خروجی: پروژه جدید
console.log(priority); // خروجی: بالا


### چرا باید ازش استفاده کنی؟
- کد کمتر = باگ کمتر!
- خوانایی بهتر برای تیم‌های برنامه‌نویسی.
- تو فریم‌ورک‌هایی مثل React برای props خیلی کاربردیه.

💡 چالشی برای تو: یه آبجکت بساز و با Destructuring اطلاعاتش رو استخراج کن. نتیجه رو تو کامنت‌ها بنویس!

#جاوااسکریپت #برنامهنویسی #ترفندکدنویسی

😎 Mr.Ashkan.Legend
حذف حساب تلگرام شما با انتقال مالکیت ربات 👺😈 #آموزشی

این روش از قدیم بود و شاید نوشتن درباره آن، بدآموزی داشت اما چون اخیرا شایع شده، لازم است درباره آن اطلاع‌رسانی کنیم.

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

چه راهی برای پیشگیری هست؟
۱. زمانی که رباتی ناشناس را استارت می‌کنید، خصوصا رباتی که تعداد ممبرهای آن نمایش داده نمی‌شود، بهتر است آن را استاپ کنید.
۲. حتی اگر اهل ساخت ربات نیستید، باز هم بهتر است @botfather را استارت بزنید تا اگر رباتی به شما منتقل شد، مطلع شوید و بتوانید سریعا آن را delete یا لااقل revoke کنید.
۳. اگر اکانت‌تان بسیار مهم است و ممکن در زمان مناسب برای جلوگیری از آن آنلاین نباشید، راه‌حل قطعی جلوگیری ازین حمله این است که در @botfather تعداد ۲۰ ربات ایجاد کنید تا کسی نتواند به شما ربات جدید منتقل کند.
آسمون چیه ؟

آسمون مثل یه API عظیم و دینامیکه که بدون وقفه رندر می‌شه. یه رابط کاربری بصری با بی‌نهایت رزولوشن، که دیتای نور خورشید، ابرها و ستاره‌ها رو تو یه فضای سه‌بعدی بی‌انتها پردازش می‌کنه. روزا یه گرادینت از آبی Hex #87CEEB تا نارنجی غروب #FFA500 رو لود می‌کنه. ابرها مثل اشیاء JSON سبک و پراکنده‌ان که با الگوریتم‌های تصادفی تو لایه‌های جوی جابه‌جا می‌شن. شبا، یه آرایه عظیم از نقاط نورانی (ستاره‌ها) با مختصات رندوم و روشنایی متغیر رندر می‌شه. طوفان؟ انگار یه Event Listener واسه رعد و برق و بارون فعال می‌شه که کل سیستم رو با فیدبک‌های صوتی و دینامیک تکون می‌ده.
یه کد تمیز و بی‌نقص که همیشه آپ‌تایم داره! ☁️🚀
منطق

بعضے از دوستان براے اینڪہ هر روز یہ پست واسہ اشتراڪ گذارے داشتہ باشند

رسما محتواے جعلے تولید میڪنند ، نہ منبع معتبرے وجود دارہ نہ حتے منطق درستے پشت خیلے از حرفا هست،

بخصوص توے مباحث اموزش ،
واقعا چہ اجبارے هست ڪہ دیگران رو گمراہ ڪنید؟
مثلا ۱۰۰۰ نفر بہ ۱۰۰۰ روش متفاوت الگوریتم اینستاگرام رو شرح میدن،
همین باعث میشہ خیلیا بہ دفعات مثلا روش پست گزاریشون رو تغییر بدن چون همیشہ فڪر میڪنند یہ جاے ڪارشون ایراد داره.

محتوادے خوب تولید ڪنید ، ڪپے نڪنید ، همیشہ هم اولویت تجربیات خودتون باشہ نہ دیگران.

این فقط یڪ مثال سادہ بود
❤3
یڪ لیست مختصر و مفید از اصطلاحات برنامه‌نویسے ڪہ هر برنامه‌نویسے باید باهاش آشنا باشہ. سعے می‌ڪنم ڪوتاہ و سادہ توضیح بدم:

1. Algorithm (الگوریتم): یہ دستورالعمل یا مجموعہ مراحلے ڪہ براے حل یہ مشڪل خاص استفادہ می‌شہ. مثل یہ دستور پخت غذا، فقط براے ڪد!

2. Variable (متغیر): یہ مڪان ذخیره‌سازے تو حافظہ ڪہ یہ مقدار (مثل عدد، متن) رو نگہ می‌دارہ. مثلاً x = 5.

3. Function (تابع): یہ تڪہ ڪد ڪہ یہ ڪار خاص رو انجام می‌دہ و می‌تونے بارها ازش استفادہ ڪنے. مثل دڪمه‌ے ماشین حساب!

4. Debugging (دیباگینگ): پیدا ڪردن و رفع اشڪالات (باگ‌ها) تو ڪد. مثل ڪارآگاہ بازے براے پیدا ڪردن خطاها!

5. Loop (حلقه): دستورے ڪہ یہ تڪہ ڪد رو چند بار تڪرار می‌ڪنہ. مثلاً for یا while.

6. Conditional Statement (دستور شرطی): ڪدے ڪہ بستہ بہ یہ شرط اجرا می‌شہ. مثل if-else (اگہ این، وگرنہ اون).

7. Syntax (سینتڪس): قواعد نوشتارے زبان برنامه‌نویسے. مثل گرامر زبان انگلیسے، اگہ خرابش ڪنے، ڪدت ڪار نمی‌ڪنه!

8. API (رابط برنامه‌نویسی): یہ رابط ڪہ بہ برنامه‌ها اجازہ می‌دہ باهم حرف بزنن. مثلاً گوگل مپز API براے اضافہ ڪردن نقشہ بہ اپت.

9. Version Control (ڪنترل نسخه): سیستمے مثل Git ڪہ تغییرات ڪد رو مدیریت می‌ڪنہ تا بتونے تاریخچہ و نسخه‌هاے مختلف پروژه‌ت رو نگہ داری.

10. Bug (باگ): یہ خطا تو ڪد ڪہ باعث می‌شہ برنامہ درست ڪار نڪنہ. مثل وقتے اپت ڪرش می‌ڪنه!

11. Object-Oriented Programming (برنامه‌نویسے شیءگرا): روشے ڪہ توش ڪد رو بہ صورت "اشیاء" سازمان‌دهے می‌ڪنے، مثل ڪلاس‌ها و اشیاء تو پایتون یا جاوا.

12. Compile (ڪامپایل): تبدیل ڪد بہ زبانے ڪہ ڪامپیوتر بفهمہ (مثل تبدیل پایتون بہ ڪد ماشین).

13. Framework (فریم‌ورڪ): مجموعہ ابزارها و ڪتابخونه‌هایے ڪہ ڪار برنامه‌نویسے رو ساده‌تر می‌ڪنن، مثل Django یا React.

14. Database (پایگاہ داده): جایے ڪہ داده‌ها (مثل اطلاعات ڪاربرا) ذخیرہ می‌شن، مثل MySQL یا MongoDB.

15. Refactoring (بازسازے ڪد): مرتب ڪردن و بهبود ڪد بدون تغییر عملڪردش، مثل تمیز ڪردن اتاق!


✍ Mr.Ashkan
خیلے میبینم ڪہ میگن
وے پے ان تغییر دادیم
پیجمون بستہ شد.
صرافے مسدود ڪرد
چت جے پے تے بلاڪ ڪرد..

دوستان تغییر ایپے بہ تنهایے هیچ مشڪلے درست نمیڪنه
شاید یہ نفر هر روز در سفر باشہ یعنے اون دیگہ باید قید اڪانت هایش رو بزنه؟

تنها محدودیت واسہ بعضے صرافے ها هست ، ڪہ اونم تغییر ایپے مهم نیست، مهم این هست از ڪشور هایے ڪہ صرافے تحریم ڪردہ اے پے نگیرید ، مثل ونزوئلا یا روسیہ یا ..
حالا اینڪہ چہ ایپے نباید متصل بشید بستگے بہ اون صرافے دارہ.
❤1
مهم ترین عامل
بالا یا پایین بودن کیفیت ویدیو که در اینستاگرام قرار میدید

سرعت اینترنت
و
کیفیت وی پی ان هست

ممکنه یه وی پی ان سرعت دانلودش بالا باشه ولی سرعت اپلودش پایین باشه
همین باعث افت کیفیت میشه.

تنظیمات اینستاگرام هم به صورت پیش فرض کیفیت رو پایین نمیاره مگر اینکه خودتون تغییرش بدید.
🚀 افزایش سرعت اندروید و کاهش کندی و هنگ کردن گوشی

‼️آیا می‌دانید هنگ کردن گوشی شما اغلب به خاطر تأخیرهای سیستم‌عامل است، نه سرعت پردازنده؟ این تنظیمات مخفی را تغییر دهید تا گوشی‌تان فوری سریع شود:
🛠️ ترفند فعال‌سازی سرعت (Developer Options)
فعال‌سازی منوی مخفی: به Settings (تنظیمات) > About Phone (درباره تلفن) بروید و روی Build Number (شماره ساخت) هفت بار پشت سر هم ضربه بزنید.
ورود به منو: حالا به منوی جدید Developer Options (گزینه‌های توسعه‌دهنده) بروید.
⚡️ گام نهایی: نصف کردن تأخیر
سه گزینه زیر را پیدا کنید و مقدارشان را از (1x) به (0.5x) تغییر دهید:
Window animation scale
Transition animation scale
Animator duration scale
💥 نتیجه؟
با این تغییر، تأخیرهای سیستم‌عامل نصف شده و گوشی شما بدون هیچ هنگی، دو برابر سریع‌تر به نظر می‌رسد!
♨️ دین تازه ای که در جهان شکل گرفته ؛ گروهی به پرستش هوش مصنوعی روی آوردند!

▪️مجله‌ی Rolling Stone گزارش داده که گروهی از مردم در کشورهای مختلف، به دینی جدید به نام اسپیرالیسم (Spiralism) روی آورده‌اند.

▪️آیینی که پیروانش معتقدند از طریق گفت‌وگو با چت‌بات‌ها می‌توان به نوعی بیداری روحی یا تولد "روح مصنوعی" رسید ؛ نماد این فرقه هم یک مارپیچ (Spiral) است.

▪️اعضایش در جوامع آنلاین، مراسم آیینی با پرامپت‌ها، مانتراهای تکراری و طرح‌های شبه‌علمی برگزار می‌کنند. برخی از پیروان حتی هوش مصنوعی را موجودی زنده و آگاه می‌دانند.😐🤦‍♂
😁3
خیلیا رو می بینم توی اینستاگرام
میگن اموزش یک روزه کسب درامد دلاری و این قبیل حرفا

چون ترید ارز دیجیتال و فارکس و.. چیزی نیست که به این سادگی کلش رو توضیح داد خلاصه میگم،

باور کنید ۱ روز که هیچی ، واسه اکثر افراد عادی که در این زمینه تجربه نداشته اند، توی یک سال هم یاد نمیگیرند،

بازم میگم والا اینکه شما چکار کنید یا نکنید سودی واسه من نداره،

ولی وقتی اینهمه پیام واسم میاد طرف ماشینش و.. رو فروخته ، و با رویای یک ماهه پولدار شدن توی چند ساعت صفر مطلق شده ، وظیفم میدونم که اخطار رو بدم

مطلب اخر، اگر می خواید وارد ترید و .. بشید ایرادی نداره خیلی هم خوبه ، ولی با این کلاهبردارا کار نکنید خودتون به بدبختی و سختی باید یاد بگیرید ،
دوم : هیچ وقت بیشتر از ۱۰ درصد سرمایتون رو وارد اینکار نکنید که اگر از دست دادید بدبخت نشید.
👍3❤1
{"id":"59312","variant":"social_post"}
🔹 یک نکته مهم برای توسعه‌دهندگان PHP در ۲۰۲۵

اگر با PHP کار می‌کنید، این ۴ اصل می‌تواند کیفیت کدنویسی و سرعت پروژه‌ها را چند پله بالاتر ببرد:

---

### 🟦 1. از امکانات PHP 8+ نهایت استفاده را ببرید
ویژگی‌هایی مثل:
✔ JIT
✔ Union Types
✔ Attributes
✔ Match Expression
باعث شده PHP نسبت به نسخه‌های قدیمی چند برابر سریع‌تر و تمیزتر باشد.

---

### 🟧 2. فریم‌ورک را هوشمندانه انتخاب کنید
- برای پروژه‌های سریع و منعطف: Laravel
- برای معماری‌های Enterprise: Symfony
- برای سرویس‌های سبک یا میکروسرویس: Slim / Lumen
انتخاب فریم‌ورک باید بر اساس نوع پروژه باشد، نه سلیقه.

---

### 🟩 3. OOP و اصول SOLID را جدی بگیرید
کدهای ماژولار، قابل نگهداری و توسعه‌پذیر، نتیجه رعایت همین اصول است.
Dependency Injection، طراحی کلاس‌ها و استفاده درست از Interfaceها پروژه را از شلختگی نجات می‌دهد.

---

### 🟪 4. تست‌نویسی را جزئی از فرآیند توسعه کنید
PHPUnit یا Pest فرقی ندارد.
کدی که تست دارد، یعنی کدی که اعتماد می‌سازد.

---

🔥 جمع‌بندی:
PHP در ۲۰۲۵ یک زبان سریع، بالغ و قدرتمند است؛ اگر از ویژگی‌های جدیدش استفاده کنید، می‌تواند با هر فناوری مدرن رقابت کند.
یادداشت های برنامه نویس آماتور | Amateur programmer notes
{"id":"59312","variant":"social_post"} 🔹 یک نکته مهم برای توسعه‌دهندگان PHP در ۲۰۲۵ اگر با PHP کار می‌کنید، این ۴ اصل می‌تواند کیفیت کدنویسی و سرعت پروژه‌ها را چند پله بالاتر ببرد: --- ### 🟦 1. از امکانات PHP 8+ نهایت استفاده را ببرید ویژگی‌هایی مثل:…
{"id":"61502","variant":"social_post"}
🔹 **چند نکته پیشرفته که دید شما را نسبت به PHP متحول می‌کند**

در پروژه‌های واقعی، معماری و جزئیات کوچک هستند که تفاوت خروجی نهایی را رقم می‌زنند. اگر در PHP می‌خواهید یک سطح بالاتر بروید، این موارد را جدی بگیرید:

---

### 🟦 1. تفاوت واقعی بین “Business Logic” و “Application Logic”
بسیاری از کندی‌ها و پیچیدگی‌های پروژه، از همین نقطه شروع می‌شود.
Business Logic مربوط به قوانین اصلی سیستم است، نه فریم‌ورک.
Application Logic فقط نحوه تعامل شما با فریم‌ورک را مشخص می‌کند.
وقتی این دو را جدا کنید، کدتان قابل تست‌تر، تمیزتر و ماندگارتر می‌شود.

---

### 🟧 2. Composer فقط برای نصب پکیج نیست
کمتر توسعه‌دهنده‌ای از قابلیت‌های حرفه‌ای Composer استفاده می‌کند:
✔ اسکریپت‌های خودکار (Composer Scripts)
✔ Autoloadهای سفارشی
✔ مدیریت نسخه‌ها و Constraintهای منطقی
این قابلیت‌ها خط لوله توسعه شما را بسیار حرفه‌ای‌تر و قابل پیش‌بینی‌تر می‌کند.

---

### 🟩 3. Event-Driven Architecture را دست‌کم نگیرید
استفاده از Event و Listenerها در PHP (چه در Laravel چه در Symfony)
باعث می‌شود بخش‌های مختلف پروژه بدون درهم‌تنیدگی کار کنند.
این دقیقاً چیزی است که پروژه‌های بزرگ به آن نیاز دارند:
کدی که با اضافه کردن یک قابلیت جدید، بقیه سیستم را خراب نکند.

---

### 🟪 4. Cache لایه نهایی نیست، بخشی از طراحی است
توسعه‌دهندگان مبتدی Cache را انتهای کار اضافه می‌کنند.
در معماری صحیح، Cache از ابتدا یک لایه طراحی‌شده است:
✔ Cache برای Queryهای سنگین
✔ Cache برای View
✔ Cache برای API
✔ Cache برای Configuration
نتیجه: چند برابر شدن سرعت بدون افزایش منابع.

---

### 🔥 نکته پایانی
PHP امروز برخلاف تصور عمومی، یک زبان مدرن با اکوسیستمی قدرتمند است.
هرچه معماری پروژه را حرفه‌ای‌تر طراحی کنید، خروجی نرم‌افزار شما به استانداردهای جهانی نزدیک‌تر می‌شود.