-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathconfig.php.example
More file actions
164 lines (136 loc) · 10.2 KB
/
Copy pathconfig.php.example
File metadata and controls
164 lines (136 loc) · 10.2 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
<?php
/**
* Channel Scraper — فایل تنظیمات (نمونه)
*
* این فایل را با نام config.php در کنار cron.php کپی کنید و مقادیر را پر کنید:
* cp config.php.example config.php
*/
return [
// ─────────────────────────────────────────────────────────────
// ربات تلگرام
// ─────────────────────────────────────────────────────────────
'telegram' => [
// توکن رباتی که از @BotFather گرفتید
'bot_token' => 'PUT-YOUR-BOT-TOKEN-HERE',
// بیس URL سرویس تلگرام.
// اگر هاست شما به api.telegram.org دسترسی ندارد، آدرس یک پراکسی/ورکر
// معتبر را اینجا بگذارید (بدون اسلش انتهایی).
'base_url' => 'https://api.telegram.org',
],
// ─────────────────────────────────────────────────────────────
// کانال موردنظر
// ─────────────────────────────────────────────────────────────
'channel' => [
// آدرس کامل صفحه عمومی کانال (برای ساخت لینک پیامها استفاده میشود)
'url' => 'https://splus.ir/ershadiiha',
// مرورگری که اسکرپر خودش را به جای آن جا میزند
'user_agent' => 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
// حداکثر زمان انتظار برای دریافت پاسخ (ثانیه)
'timeout' => 20,
],
// ─────────────────────────────────────────────────────────────
// وبسرویس JSON کانال ← روش اصلی دریافت پیامها
// ─────────────────────────────────────────────────────────────
// صفحه کانال یک اپلیکیشن جاوااسکریپتی است و متن پیامها داخل HTML نیست؛
// خود سایت پیامها را با یک درخواست POST از آدرس زیر میگیرد.
//
// اگر روزی این آدرس تغییر کرد، در مرورگر:
// F12 → تب Network → فیلتر Fetch/XHR → صفحه کانال را رفرش کنید →
// درخواستی که به .../channel/archive میرود را باز کنید →
// Request URL را در 'url' و مقدار channel_id را در 'channel_id' بگذارید.
'api' => [
'enabled' => true,
// آدرس کامل وبسرویس آرشیو پیامهای کانال
'url' => 'https://splus.ir/srvcs-app/v1/json/7743461522282941752/69c0b7e25ff7cb0c65289a93fa211d3c/channel/archive',
// شناسه عددی کانال (در بدنه درخواست ارسال میشود)
'channel_id' => '13013718',
// نام کلید بدنه درخواست (معمولاً نیازی به تغییر نیست)
'payload_key' => 'channel_id',
// هدرهای لازم برای عبور از بررسی CORS/Referer سرویس
'origin' => 'https://splus.ir',
'referer' => 'https://splus.ir/ershadiiha',
// حداکثر زمان انتظار (ثانیه)
'timeout' => 20,
// هدرهای اضافی دلخواه، مثلاً: ['X-Foo: bar']
'extra_headers' => [],
],
// ─────────────────────────────────────────────────────────────
// کلمات کلیدی (فیلتر پیامها)
// ─────────────────────────────────────────────────────────────
'keywords' => [
// پیام فقط وقتی ارسال میشود که حداقل یکی از این عبارتها را داشته باشد.
'include' => [
'آیین نامه',
'آییننامه',
'آئین نامه',
],
// اگر هرکدام از این عبارتها در پیام باشد، آن پیام نادیده گرفته میشود
// (مثلاً پیامهای مربوط به «آزمون افسر» ارسال نمیشوند).
'exclude' => [
'آزمون افسر',
'افسر',
],
// یکسانسازی متن قبل از مقایسه (بهشدت توصیه میشود).
// با true بودنش، تفاوت «آیین نامه / آییننامه / آییننامه / آئیننامه»
// و همچنین حروف عربی (ي، ك) با فارسی (ی، ک) نادیده گرفته میشود.
'normalize' => true,
],
// ─────────────────────────────────────────────────────────────
// تنظیمات پارسر
// ─────────────────────────────────────────────────────────────
'parser' => [
// حالت استخراج:
// api → فقط وبسرویس JSON بالا (پیشفرض و درستترین حالت)
// auto → اول وبسرویس، اگر جواب نداد پارس HTML
// html → فقط HTML بر اساس message_classes
// json → فقط JSON تعبیهشده داخل تگهای script صفحه
// regex → الگوی دلخواه شما در message_regex
'mode' => 'api',
// فقط برای حالت html: کلاس CSS عنصری که متن پیام داخلش است
'message_classes' => [
'channel-message-text',
],
// فقط برای حالت regex: الگوی PCRE با گروههای نامدار (?<id>...) و (?<text>...)
'message_regex' => '',
// عیبیابی: اگر true باشد و چیزی استخراج نشود، پاسخ خام سرور در پوشه logs
// ذخیره میشود (last-api.json / last-api-error.txt / last-page.html).
'debug_dump' => false,
],
// ─────────────────────────────────────────────────────────────
// قالب پیام اطلاعرسانی
// ─────────────────────────────────────────────────────────────
'notification' => [
// متنی که بالای پیام اطلاعرسانی میآید (HTML تلگرام مجاز است)
'header' => "\xF0\x9F\x94\x94 <b>پیام جدید دربارهٔ آییننامه</b>\n\n",
// متنی که پایین پیام میآید (خالی = بدون پانویس)
'footer' => '',
// افزودن لینک پیام در کانال به انتهای اطلاعرسانی
'send_channel_link' => true,
],
// ─────────────────────────────────────────────────────────────
// سیستم لاگ
// ─────────────────────────────────────────────────────────────
'log' => [
// مسیر فایل لاگ
'file' => __DIR__ . '/logs/scraper.log',
// سطح لاگ: debug | info | warning | error
'level' => 'info',
// حداکثر خطوط فایل لاگ (چرخش خودکار — خطوط قدیمی حذف میشوند)
'max_lines' => 5000,
],
// ─────────────────────────────────────────────────────────────
// امنیت اجرا از طریق وب (اختیاری)
// ─────────────────────────────────────────────────────────────
// اگر کرونجاب هاست شما فقط با فراخوانی URL کار میکند (wget/curl)،
// این کلید را تنظیم کنید و آدرس را اینطوری بزنید:
// https://your-domain.com/channel-scraper/cron.php?key=اینجا-کلید
// با مقدار خالی، cron.php فقط از خط فرمان (CLI) اجرا میشود.
'cron_key' => '',
// ─────────────────────────────────────────────────────────────
// محل ذخیره دادهها (معمولاً نیازی به تغییر نیست)
// ─────────────────────────────────────────────────────────────
'storage' => [
'users_file' => __DIR__ . '/storage/users.json', // لیست کاربران عضو ربات
'state_file' => __DIR__ . '/storage/state.json', // وضعیت (پیامهای دیدهشده و آفست تلگرام)
],
];