לתועלת הרבים מצורף בזה כל קבצי ההגדרות המעודכנים.
קבצי הגדרות - ימות המשיח מעודכן אלול פ''ו
כמו כן ניתן לקבל למייל במספר 033046966 שלוחה 6
שימו לב שהקובץ מחולק לתיקיות לפי נושאים, ואילו בהורדה זה מוריד את כל הפוסטים אחד אחד.
בנוסף קוד פייתון להורדת כל הקבצים מאזור התעשייה.
#!/usr/bin/env python3
import argparse, json, re, sys, ssl, os
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
from urllib.parse import quote
BASE = "https://f2.freeivr.co.il"
DCID = "1"
DSLUG = "אזור-התעשייה-הגדרות-המערכת"
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
def fj(url):
r = Request(url, headers={"Accept": "application/json", "User-Agent": "scraper/1.0"})
with urlopen(r, timeout=15, context=ctx) as resp:
return json.loads(resp.read().decode("utf-8"))
def sh(text):
if not text:
return ""
text = re.sub(r"<[^>]*>", "", text)
for o, n in {" ": " ", "&": "&", "<": "<", ">": ">", """: '"', "'": "'", "/": "/"}.items():
text = text.replace(o, n)
return text.strip()
def dl(tid):
posts = []
title = ""
for page in range(1, 51):
data = fj(f"{BASE}/api/topic/{tid}?page={page}")
if page == 1:
title = sh(data.get("title", str(tid)))
tp = data.get("pagination", {}).get("pageCount", 1)
for p in data.get("posts", []):
posts.append(sh(p.get("content", "")))
if page >= tp:
break
lines = []
for p in posts:
lines.append(p)
lines.append("")
lines.append("")
st = re.sub(r'[\\/:*?"<>|]', "", title)
st = re.sub(r'[a-zA-Z_]+', " ", st)
st = re.sub(r'\s+', " ", st).strip()[:50]
desk = os.path.join(os.path.expanduser("~"), "Desktop")
folder = os.path.join(desk, "אזור התעשיה")
os.makedirs(folder, exist_ok=True)
fn = os.path.join(folder, f"{st}.txt")
with open(fn, "w", encoding="utf-8") as f:
f.write("\n".join(lines))
print(f" OK {st}.txt ({len(posts)} posts)")
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--txt-all", action="store_true")
ap.add_argument("--txt", action="store_true")
ap.add_argument("--topics")
ap.add_argument("--cid", default=DCID)
ap.add_argument("--slug", default=DSLUG)
ap.add_argument("--page", type=int, default=1)
ap.add_argument("--save")
a = ap.parse_args()
try:
if a.txt_all:
items = []
page = 1
while True:
data = fj(f"{BASE}/api/category/{a.cid}/{quote(a.slug)}?page={page}")
ts = data.get("topics", [])
if not ts:
break
for t in ts:
items.append({"tid": t.get("tid"), "title": t.get("title", "")})
page += 1
print(f"Found {len(items)} topics")
c = 0
for i in items:
if i["tid"] is None:
continue
try:
print(f"Topic {i['tid']}")
dl(i["tid"])
c += 1
except Exception as e:
print(f" SKIP {i['tid']}: {e}")
print(f"\nDone! {c} files saved")
return
if a.txt and a.topics:
for t in a.topics.split(","):
print(f"\nDownloading topic {t.strip()}")
dl(int(t.strip()))
return
data = fj(f"{BASE}/api/category/{a.cid}/{quote(a.slug)}?page={a.page}")
topics = []
for t in data.get("topics", []):
topics.append({"id": t.get("tid"), "title": t.get("title"), "author": t.get("user", {}).get("username"), "posts": t.get("postcount")})
result = {"topic_count": len(topics), "topics": topics}
if a.save:
with open(a.save, "w", encoding="utf-8") as f:
f.write(json.dumps(result, ensure_ascii=False, indent=2))
print(f"Saved: {a.save}")
else:
print(json.dumps(result, ensure_ascii=False, indent=2))
except Exception as e:
print(f"ERROR: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()
לא ממש יודעים מה זה פייתון?
הדרכה מסודרת שלב אחר שלב בספויילר
מדריך מלא — הורדת פוסטים מפורום FreeIVR
מה אנחנו עושים?
אנחנו הולכים להוריד פוסטים מאתר אינטרנט (פורום) ולשמור אותם כקבצי טקסט במחשב.
שלב 1 — התקנת פייתון (Python)
פייתון היא תוכנה חינמית שמריצה סקריפטים (קטעי קוד קטנים).
כנס לאתר: https://www.python.org/downloads/
לחץ על הכפתור הצהוב "Download Python" (הורד פייתון)
פתח את הקובץ שהורדת
חשוב מאוד! במסך הראשון שנפתח, למטה יש תיבה קטנה שכתוב עליה "Add Python to PATH" (הוסף פייתון ל-PATH) — סמן אותה ב-V!
לחץ על "Install Now" (התקן עכשיו)
חכה שההתקנה תסתיים (יופיע כיתוב "Setup was successful")
לחץ "Close" (סגור)
שלב 2 — פתיחת שורת הפקודה (Command Prompt)
שורת הפקודה היא חלון שחור שבו אנחנו כותבים פקודות למחשב.
לחץ על מקש Windows (המקש עם הלוגו של Windows, בין Ctrl ל-Alt)
כתוב: cmd
לחץ Enter
ייפתח חלון שחור עם טקסט לבן.
כתוב את הפקודה הבאה ולחץ Enter:
python --version
אמור להופיע משהו כמו Python 3.12.x. אם כן — מצוין, פייתון מותקן. אם לא — חזור לשלב 1 וודא שסימנת "Add Python to PATH".
שלב 3 — יצירת תיקייה לעבודה
לחץ על מקש Windows
כתוב: cmd
לחץ Enter
כתוב את הפקודות הבאות (כל אחת ואז Enter):
cd Desktop
mkdir freeivr
cd freeivr
מה זה עושה?
cd Desktop — עובר לשולחן העבודה (Desktop = שולחן עבודה)
mkdir freeivr — יוצר תיקייה חדשה בשם freeivr (mkdir = make directory = צור תיקייה)
cd freeivr — נכנס לתיקייה (cd = change directory = החלף תיקייה)
שלב 4 — יצירת קובץ הסקריפט
לחץ על מקש Windows
כתוב: notepad
לחץ Enter — ייפתח פנקס רשימות (Notepad)
העתק את כל הקוד הבא והדבק ב-Notepad:
#!/usr/bin/env python3
import argparse, json, re, sys, ssl, os
from urllib.request import Request, urlopen
from urllib.error import HTTPError, URLError
from urllib.parse import quote
BASE = "https://f2.freeivr.co.il"
DCID = "1"
DSLUG = "אזור-התעשייה-הגדרות-המערכת"
ctx = ssl.create_default_context()
ctx.check_hostname = False
ctx.verify_mode = ssl.CERT_NONE
def fj(url):
r = Request(url, headers={"Accept": "application/json", "User-Agent": "scraper/1.0"})
with urlopen(r, timeout=15, context=ctx) as resp:
return json.loads(resp.read().decode("utf-8"))
def sh(text):
if not text:
return ""
text = re.sub(r"<[^>]*>", "", text)
for o, n in {" ": " ", "&": "&", "<": "<", ">": ">", """: '"', "'": "'", "/": "/"}.items():
text = text.replace(o, n)
return text.strip()
def dl(tid):
posts = []
title = ""
for page in range(1, 51):
data = fj(f"{BASE}/api/topic/{tid}?page={page}")
if page == 1:
title = sh(data.get("title", str(tid)))
tp = data.get("pagination", {}).get("pageCount", 1)
for p in data.get("posts", []):
posts.append(sh(p.get("content", "")))
if page >= tp:
break
lines = []
for p in posts:
lines.append(p)
lines.append("")
lines.append("")
st = re.sub(r'[\\/:*?"<>|]', "", title)
st = re.sub(r'[a-zA-Z_]+', " ", st)
st = re.sub(r'\s+', " ", st).strip()[:50]
desk = os.path.join(os.path.expanduser("~"), "Desktop")
folder = os.path.join(desk, "אזור התעשיה")
os.makedirs(folder, exist_ok=True)
fn = os.path.join(folder, f"{st}.txt")
with open(fn, "w", encoding="utf-8") as f:
f.write("\n".join(lines))
print(f" OK {st}.txt ({len(posts)} posts)")
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--txt-all", action="store_true")
ap.add_argument("--txt", action="store_true")
ap.add_argument("--topics")
ap.add_argument("--cid", default=DCID)
ap.add_argument("--slug", default=DSLUG)
ap.add_argument("--page", type=int, default=1)
ap.add_argument("--save")
a = ap.parse_args()
try:
if a.txt_all:
items = []
page = 1
while True:
data = fj(f"{BASE}/api/category/{a.cid}/{quote(a.slug)}?page={page}")
ts = data.get("topics", [])
if not ts:
break
for t in ts:
items.append({"tid": t.get("tid"), "title": t.get("title", "")})
page += 1
print(f"Found {len(items)} topics")
c = 0
for i in items:
if i["tid"] is None:
continue
try:
print(f"Topic {i['tid']}")
dl(i["tid"])
c += 1
except Exception as e:
print(f" SKIP {i['tid']}: {e}")
print(f"\nDone! {c} files saved")
return
if a.txt and a.topics:
for t in a.topics.split(","):
print(f"\nDownloading topic {t.strip()}")
dl(int(t.strip()))
return
data = fj(f"{BASE}/api/category/{a.cid}/{quote(a.slug)}?page={a.page}")
topics = []
for t in data.get("topics", []):
topics.append({"id": t.get("tid"), "title": t.get("title"), "author": t.get("user", {}).get("username"), "posts": t.get("postcount")})
result = {"topic_count": len(topics), "topics": topics}
if a.save:
with open(a.save, "w", encoding="utf-8") as f:
f.write(json.dumps(result, ensure_ascii=False, indent=2))
print(f"Saved: {a.save}")
else:
print(json.dumps(result, ensure_ascii=False, indent=2))
except Exception as e:
print(f"ERROR: {e}", file=sys.stderr)
sys.exit(1)
if __name__ == "__main__":
main()
ב-Notepad לחץ קובץ (File) → שמירה בשם (Save As)
נווט לתיקייה freeivr שיצרנו על שולחן העבודה
בשדה "שם הקובץ" (File name) כתוב בדיוק: freeivr_scraper.py
בשדה "שמור כסוג" (Save as type) בחר "כל הקבצים" (All Files) — לא "מסמכי טקסט"!
בשדה "קידוד" (Encoding) בחר UTF-8
לחץ "שמור" (Save)
שלב 5 — הרצת הסקריפט
חזור לחלון השחור (cmd)
ודא שאתה בתיקייה freeivr (אם לא — כתוב cd Desktop\freeivr)
כתוב את הפקודה:
python freeivr_scraper.py --txt-all
לחץ Enter
מה יקרה עכשיו? הסקריפט יוריד את כל הנושאים מהפורום וישמור כל אחד כקובץ טקסט בתיקיית אזור התעשיה על שולחן העבודה. זה יכול לקחת דקה-שתיים.
בסוף תראה משהו כמו:
Done! 163 files saved
שלב 6 — בדיקה
מזער את החלון השחור
פתח את שולחן העבודה
תראה תיקייה חדשה בשם אזור התעשיה
פתח אותה — יש בפנים קבצי טקסט רבים
פתח אחד מהם — תראה את תוכן הפוסטים
פקודות נוספות (אופציונלי)
להוריד רק נושא אחד
python freeivr_scraper.py --txt --topics 8166
(החלף 8166 במספר הנושא שתרצה)
לראות רשימת נושאים בלי להוריד
python freeivr_scraper.py
מילון מונחים
אנגלית עברית
Python פייתון (שפת תכנות)
Download הורדה
Install התקנה
Command Prompt (cmd) שורת הפקודה
Desktop שולחן העבודה
Directory / Folder תיקייה
File קובץ
Save As שמירה בשם
All Files כל הקבצים
Encoding קידוד
UTF-8 UTF-8 (פורמט טקסט שתומך בעברית)
Notepad פנקס רשימות
PATH PATH (משתנה סביבה של Windows)
Script סקריפט (קטע קוד)
Enter Enter (מקש אישור)
Copy העתקה
Paste הדבקה
לעריכת קבצי ini
באופן מלא + הגדרות נוספות בדרך...