Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Empty file.
112 changes: 112 additions & 0 deletions tasks/Localization_of_Latin_quotation_marks/run.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,112 @@
list_of_pages = [
"محمود_كجك_(لاعب_كرة_قدم)",
"علي_صباغ",
"كأس_العرب_2023",
"تعليم_في_لامارات",
"الجبهة_السورية_للتحرير",
"يو_إف_سي_ليلة_القتال:_ديلاشو_ضد_كروز",
"يو_إف_سي_على_فوكس:_ديلاشو_ضد_باراو_2",
"يو_إف_سي_على_فوكس:_هندرسون_ضد_دياز",
"عينين_سلامه_في_سأكون_عمان",
"مجلس_مراقبة_ألعاب_القوى_في_ولاية_نيوجيرسي",
"اليابان..",
"الغابات_(توضيح)",
"مقال_مدرسي",
"حسين_الأحدب",
"نزوح_آرمن_مرتفعات_قره_باغ",
"نزوح_أرمن_مرتفعات_قره_باغ",
"ديوان_الرئاسة_(الإمارات_العربية_المتحدة)",
"حسين_إبراهيم_الأحدب",
"رئيف_أبو_اللمع",
"رئيف_شديد_أبي_اللمع",
"اتفاق_وقف_إطلاق_النار_في_مرتفعات_قره_باغ_2023",
"بيدفيست_جروب",
"شاسترا",
"رئيف_أبي_اللمع",
"خليل_أبي_اللمع",
"سامي_ريحانا",
"روكز_طانيوس_أبو_ناضر",
"روكز_أبو_ناضر",
"شاهزاده_أحمد",
"منصور_بن_عبد_الرحمن_الطنوخي",
"صلاح_البنعلي",
"جابي_روث",
"إينر_جنسن",
"السلطة_التعليمية",
"داني_جنسن",
"ماجد_بن_حمود_السعدون",
"الغليون_(البايب)",
"ألفي_بو",
"إيرما_سيرماي",
"آنا_ألما_تاديما",
"ماري_بويس_تيمبل",
"ليه_دينيس",
"سيسفان",
"أميليا_سكوت",
"أزياء_ستيمبانك",
"تشارلز_بولفينش",
"داني_واشبروك",
"ألكسندر_تومسون",
"نيتي_أوتنبرغ",
"أوكتافيا_ويليامز_بيتس",
"وادي_دقيق",
"أغنيس_دولان",
"ماري_كوك_برانش_مونفورد",
"الإجهاض_في_البرازيل",
"ليوبولد_السادس_دوق_النمسا",
"آني_شناكنبيرغ",
"متلازمة_ثلاسيميا_ألفا_مرتبطة_بتخلف_عقلي",
"شارلوت_آيفز_كوب_كيربي",
"حنيطة",
"علي_الشعالي",
"منظف_الفرش",
"وادي_الحيول",
"لبنان_في_ألعاب_البحر_الأبيض_المتوسط_2009",
"كابستان_(سيجارة)",
"اساف_ماندفي",
"التبغ_التركي",
"بطولة_يو_إف_سي_لوزن_الريشة",
"مطار_أولاد_محمد",
"أبو_ليلى",
"حمبصيص",
"عملية_أحلام_الأنابيب",
"ألفريد_دنهيل_المحدودة",
"مطار_سكن_أولاد_محمد",
"لبنان_في_الألعاب_الآسيوية_2022",
"محمد_محسن_(منتج_سينمائي)",
"جيم_سباي_أركيد",
"محاولة_انقلاب_1961_في_لبنان",
"فلسطين_في_الألعاب_الآسيوية_2022",
"كأس_الأردن_2021",
"قائمة_الشركات_المصرية",
"جعفر_بن_منصور_اليمن",
"عفيف_بن_معديكرب",
"ألفريد_دنهيل_المحدودة.",
"ذا_هانج_اوفر",
"ذا_هانج_اوفر_(سلسلة_أفلام)",
"خزاف",
"فرجينيا_الذهبية",
"حكاية_المغربي_(رواية)",
"علي_ميرزا_الصفوي",
"جوتنبرج_رابيه",
"سجائر_الموضة",
"يوم_حصاد_كوكب",
"الغابات_(لبنان)",
"حسين_بيك_شاملو",
"صلاة_مدرسية",
"ليستير_ر._براون",
"قائمة_الوحدات_الإدارية_في_محافظة_السويس",
"فن_اليوتشول",
"جوزف_إبراهيم_أبو_خاطر",
"جوزيف_أبو_خاطر",

]

from tasks.Localization_of_Latin_quotation_marks.src.bot import BotFactory

for page in list_of_pages:
try:
bot = BotFactory()
bot.run(page.replace("_", " "))
except Exception as e:
print(e)
Empty file.
54 changes: 54 additions & 0 deletions tasks/Localization_of_Latin_quotation_marks/src/bot.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
import pywikibot
import wikitextparser as wtp


class BotFactory:
def __init__(self):
self.site = pywikibot.Site()
self.page = None
self.page_text = str("")

def load_page(self, page_title: str):
self.page = pywikibot.Page(self.site, page_title)
if not self.page.exists():
raise Exception("Page " + page_title + " is not exists")
self.page_text = self.page.text

def run(self, page_title: str):
self.load_page(page_title=page_title)
self.remove()
self.save()

def remove(self):
parse = wtp.parse(self.page_text)

# Create a list to store the start and end indices of templates and HTML tags
indices = []

# templates
for template in parse.templates:
indices.append(template.span)

# HTML tags
for tag in parse.get_tags():
indices.append(tag.span)
# tables
for table in parse.get_tables():
indices.append(table.span)

# Replace double quotes outside of templates and HTML tags
modified_content = list(self.page_text)
number_of_fount = 0
for i in range(len(modified_content)):
if modified_content[i] == '"' and not any(start <= i < end for start, end in indices):
modified_content[i] = '«' if number_of_fount % 2 == 0 else '»'
number_of_fount += 1

# Join the modified characters back into a string
modified_content = ''.join(modified_content)

self.page_text = modified_content

def save(self):
self.page.text = self.page_text
self.page.save("بوت:تعريب علامات التنصيص اللاتينية v0.0.1-beta")