21

تحويل القران الكريم الى صيغة JSON

السلام عليكم ورحمة الله وبركاته

اخواني في مجتمع ارابيا

انا لدي تطبيق اذكار على متجر الاندرويد واريد اضافة القران الكريم اليه

ولكن لا اريد وضع القران الكريم بصيغة صورية او ملف PDF مما يعني كبر حجم التطبيق او ورود ويجب حينها معرفة الـ Api الخاص بالورود وكيفية التعامل معه

اريد تحويله لـ JSON لصغر حجمها كما يمكنني التحكم بالكثير من الامور مثل حجم الخط وتقسيم الايات والكثير

ان شاءالله ساقوم بتحويل القران الموجودة على موقع "مجمع الملك فهد لطباعة المصحف الشريف" لضمان عدم التلاعب به وذكر مصدر ان شاءالله موثوق للمستخدم

السؤال الاول : ماهي افضل طريقة لتحويل القران الكريم الى صيغة JSON ؟

السؤال الثاني : هل احوله وهو بحركات التشكيل ام بدون وذلك لاغراض مثل البحث ؟

لمن يريد ان يحمل النسخة التي اريد تحويلها هذا رابطها

http://fonts.qurancomplex.g...

وشكراً لكم

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

أنت تعرف أن JSON ستقوم باستخدام أزواج اسم-قيمة لكل قيمة ستتحول

ولكن بما أن القرآن معروفة تركيبته فلما لا تنشيء خوارزمية خاصة بك تختصر الكثير

مثلاً تخصص رمز واحد وليكن على سبيل المثال @ للدلالة على نهاية الآية ورمز آخر وليكن $ للدلالة على نهاية السورة

والتركيب سيكون لدية اسم السورة ثم فاصل الآيات ، ثم الآية ، ثم في النهاية فاصل السور وتبدأ من جديد

وما بين الفواصل أي الآيات تخزنها كما هي لأنها نصوص فلا داعي لفصلها لكلمات مثلاً

وبالنسبة لرقم السورة أو الآية سيتم معرفته عند فك التشفير بحيث تعرف عدادات تزيد مع كل مرور على فاصل .

فمثلاً لترميز السورة الأولى وبداية الثانية

$سورة الفاتحة@بِسْمِ اللَّـهِ الرَّ‌حْمَـٰنِ الرَّ‌حِيمِ@الْحَمْدُ لِلَّـهِ رَ‌بِّ الْعَالَمِينَ@الرَّ‌حْمَـٰنِ الرَّ‌حِيمِ@مَالِكِ يَوْمِ الدِّينِ@إِيَّاكَ نَعْبُدُ وَإِيَّاكَ نَسْتَعِينُ@اهْدِنَا الصِّرَ‌اطَ الْمُسْتَقِيمَ@صِرَ‌اطَ الَّذِينَ أَنْعَمْتَ عَلَيْهِمْ غَيْرِ‌ الْمَغْضُوبِ عَلَيْهِمْ وَلَا الضَّالِّينَ

$سورة البقرة@بِسْمِ اللَّـهِ الرَّ‌حْمَـٰنِ الرَّ‌حِيمِ@الم@ذَٰلِكَ الْكِتَابُ لَا رَ‌يْبَ ۛ فِيهِ ۛ هُدًى لِّلْمُتَّقِينَ@الَّذِينَ يُؤْمِنُونَ بِالْغَيْبِ وَيُقِيمُونَ الصَّلَاةَ وَمِمَّا رَ‌زَقْنَاهُمْ يُنفِقُونَ@ .... الخ

فكرة جميلة جداً يا استاذ عبدالرحمن

من الممكن ان استخدم فكرتك لصناعة قارء يقوم بتحويل القران الكريم على مفكرة الى Json بالتنسيق الذي اريده

وبما انك قلت ان Json هي اسم-قيمة

فالفكرة انو يكون الاسم(اسم السورة)-القيمة(مصفوفة من ايات السورة) الميزة هنا ان تكون ايات السورة معدودة بالفعل

ما رأيك ؟

لا بأس أيا كان الترميز سواء JSON أو XML أو خاص

المهم أن يؤدي الغرض ويسهل المهمة التي نريدها

بالنسبة لي معتاد على استخدام XML و أحيانا أستخدم JSON بالشكل المختصر مع بعض التخصيص للاختصار أي أستخدم الفاصلة المنقوطة للفصل بين الأزواج و النقطتان للفصل بين اسم المتغير والقيمة وبرمجت دالة تقوم بفك التميز

مثلا أحد القيم إن كان اسمها F وهي اختصار Flag فهذا يعني أن القيمة التي تليها أخذها حرفاً حرفاً وكل حرف يعني شيء معين

القرآن كامل بصيغة json

https://raw.githubuserconte...

كم انت رائع يا احمد ولكن احتاج الى ماهو مصدر هذا القران :(

لانه في الاذكار اخذتها من مصدر عشوائي واتضح انه بها بعض المشاكل وهذا قران صعب ان يكون من مصدر غير موثوق

أعتقد بسهولة أن تنشئ ملفين نصيين للقرآن لغرض الإختبار، واحد من مصدر json بالأعلى والآخر من المصدر الموثوق وتقارن بينهم إن كان هناك أي إختلاف بإستخدام أي لغة برمجة،

ثم تعتمده وتحفظه لديك .. إن إحتجت مساعدة لتنفيذ هذا راسلني وسأحاول عمل ما أستطيع

شكراً لك ياعزيزي احمد ولكن ان برمجة قارء ليقارن بين اثنين فالافضل ان ابرمج قارء لينتج لي ملف Json من المصدر الموثوق واختصر الجهد

والعقبة الاخرى انه عندما وجدت احد زملائي في العمل يريد تحميل تطبيق القران فكان يدخل ويقرأ من اين المصدر

والمصدر الذي لايعرفه كان مباشرة لايقوم بتحميل تطبيقه

ففكرت انه يجب علي وضع مكان المصدر وانه موثوق وللاسف المصدر الذي ادرجته غير معروف ولا اشكك في صحته ام لأ

العفو أخي الفاضل عبدالعزيز .. بالمناسبة إسمك يذكّرني بصديق عزيز وغالي من جِدّة ويبدو أن لكم صلة دم بطريقة أو بأخرى .. ما علينا ( :

ثق أني هنا لا أحاول أن أقنعك بأن تستخدم الملف بالأعلى مع بعض التعديلات، أبداً .. فقط أحاول أن أفهم لماذا تريد أن تعيد إختراع العجلة وإنشاء ملف json شبيه بالسابق فقط من مصدر مختلف، في حين أنه لا مقارنة في الوقت والجهد مع إنشاء ملف برمجي بسيط ليعمل مقارنة بين المصدرين في الأعلى .. أعقتد في غضون ساعتين أو أقل يمكنك إنشاء المقارنة والتأكد من صحة المصدر الأول وأيضاً تصحيحه إن كان هناك به بعض الأخطاء .. بخصوص أهميّة المصدر بالنسبة لك وهذا واجب شرعي أعتقد وتُشكر عليه.. لكن، أليس المصدر الموثوق ثابت؟ أي أنه لن يتغيّر مع الوقت ويتم تصحيحه مع الأيام مثلاً.. هو فقط نص قرآني مكتوب من مصدر موثوق فقط .. هل تقصد أنك بتستخدم المصدر مباشرة online في تطبيقك كـ stream وتستحبه مع كل تشغيل للتطبيق ؟ أو فقط أخذ القرآن كامل من المصدر الموثوق وحفظه مع ملفات التطبيق ورفعه ؟ إن كان الخيار الأول فأنا أتفق معك في أنك يجب أن تنشئ ملف جديد ببرمجتك يسحب من المصدر الموثوق، لكن إن كنت في الأخير بتحفظه كملف وترفقه مع التطبيق، فأرى أنه لا داعي لإعادة أختراع العجلة وكل ما تحتاجه فقط التأكد من الملف المتاح ومقارنته مع المصدر الموثوق ثم تصحيحه إن وجد أخطاء ورفعه مع تطبيقك .. وإكتب في وصف التطبيق أن مصدر القرآن هو مصدرك الموثوق، لإنه فعلاً كذلك بعد أن تأكدت بنفسك وعملت المقارنة.

عموماً هذه وجهة نظري المتواضعة وقد أكون أني لم أفهم فكرتك بشكل كامل وقد أكون على خطأ بكل الأحوال.. أتمنى لك كل التوفيق وأن يكتب الله لك أجره ولا يضيّع لك تعب يا رب ..

Peace

لا اظن ياصديقي لانني من المدينة وليس لي اقارب في جدة

انت محق ولديك وجهة نظر انه لايجب اختراع العجلة ولكن ماسفعله هو كالاتي

ساقوم بنسخ الكلام من الورود الى ملف نصي

وازيل المسافات (باستخدام موقع يساعدك على هذا)

http://textmechanic.com بالمناسبة الموقع مفيد لكثير من الاشياء :)

وبعدها اقوم ببرمجة قارء سريع بأي لغة برمجة بحيث يقوم بتفصيل ملف JSON كيفما اريد

لانني افكر ان اصنع ملفين Json واحد بالتشكيل والاخر بدون لحل مشكلة البحث

ان رايت الامر سيطول ساستخدم الملف الذي بالاعلى مع المقارنة كما تفضلت

ووجهة نظرك سليمة ومؤيد لها

ألم يفي بالغرض الكود الذي قمت بمشاركته معك هنا, إن أردت الكود ينتج نفس الشكل في الرابط الذي تم إرفاقه الأخ أحمد من المصدر الموثوق يمكن هذا بتعديل بسيط على الكود لفعل هذا, وإن أردت شكل مخصص للمخرجات يمكنك توضيحه وسأقوم بتعديل الكود لإخراج الناتج في الشكل المطلوب.

استنتسخ مشروعي هذا

https://github.com/forabi/a...

تحتاج لـnode.js وتثبيت gulp ثم متطلبات المشروع، بعدها شغل المهمة gulp arabic من الطرفية، سيولد صفحات JSON. بشكل افتراضي يولد البرنامج نسخة من النص القرآني من مشروع الدكتور خالد حسني، وهي تجريبية وقد اكتشتفت بعض إشارات الوقف في غير موضعها، احذف السطر .pipe(arabic.hosnify) من الملف gulpfile.

إذا أردت نسخة من المصحف في ملف JSON واحد، تستطيع تحميل نسخة من النص ذاته مولّدة هنا:

إذا أردت نسخة من النص القرآني بحسب مشروع الفانوس، استنسخ مشروعي

وشغل مهمة gulp المسماة quran

أو، يمكنك تحميل ملف قاعدة بيانات SQLite من المشروع ذاته، وأفترض أن هذا أفضل لأنه الخيار المفضل لتخزين البيانات في Android وiOS وتتوفر لكليهما دعم أصلي

جميل ساجرب فكرتك ولكن يبقى السؤال هنا من اين مصدر هذا القران

وفكرة الـ SQLite ليست فكرة سيئة على الاطلاق ولكن افضل Json

كما ذكرت أحدهما من مشروع الأستاذ خالد حسني، وتستطيع مراسلته للتفاصيل. الآخر من مشروع الفانوس، ربما تتوفر مصادر على موقعهم الرسمي.

يتوفر أيضاً نسخة على موقع برنامج ذكر Zekr ويذكر أصحابها الجهود التي بذلوها ويقارنونها بالنصوص الأخرى على الويب. لا أستطيع كتابة الروابط لأنني اكتب على العاتف، معذرة.

شكراً لك ياعزيزي لم تقصر

سوف ادخل مواقعهم واقرأ واراسلهم ان لزم الامر

فقط قم بفتح ملف الوورد وانسخ محتواه وضعه بالمفكرة و احفظه كملف txt ستحصل على ملف 731 كيلوبايت

ويمكنك اعتباره مرمز حيث أن الآيات مفصولة بالأرقام ويمكنك التعرف على بداية كل سورة من خلال كلمة " سُورَةُ " مع التشكيل لأن كلمة سورة موجودة ضمن الآيات ولكنها نكرة أي بالتنوين

وفي حال قمت بإعادة ترميزها كما أشرت بالتعليق الآخر فسينخفض الحجم لأنك ستختصر الفراغات بين الآيات والأرقام ولكن هذا لن يؤثر كثيرا

لأنه الآيات عددها 6 آلاف تقريبا أي أنه سينخفض بمقدار 12 ألف بايت أي 12 كيلو وهو لا شيء بالنسبة للـ 731

ولكن لو حولتها إلى JSON فستزيد عن الحجم السابق وبحسب الملف الذي أرفقه الأخ أحمد فحجمه 1755 كيلوبايت وبعد ضغطه أصبح 222

بينما لو قمت بضغطه سينخفض إلى 194 كيلوبايت

الحجم ليس مشكلة ان كان داخل الجهاز وان وصل حجم التطبيق الى ٢٠ ميقا فلا بأس!

والمشكلة الثانية التي فكرة فيها ان استقريت على ملف TXT سيكون الامر بطيئ نوع ما على عكس الـ Json سيكون الامر اسرع

السلام عليكم

الأفضل من حيث السرعة هو تقسيم القرآن لملفات كل ملف به سورة, قمت بتسمت السور من 001 إلى 114 للوصول السريع لملف السورة برقمها مباشراً, كل ملف عبارة عن مصفوفة بتنسيق json بها آيات الصورة.

وهذا رابط ملف به الكود وناتجه: https://drive.google.com/fi...

يمكن إعادة نسخ القرآن للملف حتى تتحقق أنت من كون مصدره مجمع الملك فهد, ستقوم بفتح ملف الورد ونسخ القرآن لملف text باسم quran.txt بترمير utf-8 ومن ثَم إستخدم الكود التالي:

    <?php
        $quran = file_get_contents('quran.txt');
        $quran = explode('سُورَةُ', $quran);
        $count = -1;
        foreach($quran as $value)
        {
            ++$count;
            if($count == 0) continue;
            $sora = preg_replace('/[\x{0660}-\x{0669}]/u','Ahmed',$value);
            $sora = explode('Ahmed',$sora);
            $out = array();
            $len = count($sora);
            for($j=0;$j<$len;++$j)
            {
                if($j == 0){
                    if($count == 1){
                        $out[] = 'بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ';
                    }else if($count == 9){

                        $var = explode('التَّوۡبَةِ',$sora[$j]);
                        $var = trim(preg_replace('/([\n\r])/','',$var[1]));
                        $out[] = $var;
                    }else{
                        $var = explode('بِسۡمِ ٱللَّهِ ٱلرَّحۡمَٰنِ ٱلرَّحِيمِ',$sora[$j]);
                        $var = trim(preg_replace('/([\n\r])/','',$var[1]));
                        if($var != ""){
                            $out[] = $var;
                        }   
                    }
                }else{
                    $var = trim(preg_replace('/([\n\r])/','',$sora[$j]));
                    if($var != null){
                        $out[] = $var;
                    }
                }
            }
            file_put_contents(str_pad($count, 3, '0', STR_PAD_LEFT).'.json',json_encode($out,JSON_UNESCAPED_UNICODE));
        }
    ?>

سيظهر لك خطأ بسبب إختلاف في تشكيل البسملة على ما أظن؛ إنسخ البسملة الموجودة في الكود وإستبدلها ببسملة بداية سورة كلاً من سورة التين وسورة القدر؛ ثم أعد تنفيذ الكود ستختفي الأخطاء.

  • ملاحظة:

إن أردت القرآن كامل في ملف واحد ستقوم بتعديل بسيط على الكود وهو بدلاً من الحفظ المباشر في الملفات الحفظ في مصفوفة وبعد إنتهاء حلقة foreach تصدير المصفوفة لملف على شكلة تنسيق JSON.

  • كما يمكنك أيضاً تعديل الكود لحفظ نسخة بدون تشكيل لإستخدامها لعملية البحث داخل تطبيقك.

شكراً لك ياعزيزي

فكرتك اختصرت علي برمجة القارء او المحول من الصفر

وكما تفضلت تقسيم الملف سيكون اسرع واخف من ناحية التحميل ولكن على مايبدو انني سالتزم بملف واحد لانه ربما والله اعلم ان اجعل هناك نسخة من تطبيقي للويب

:) على الرحب والسعة

  • ملاحظة:

نسيت عامل الإضافة + (وجود النمط مرة أو أكثر), ولكن هذا لن يؤثر على عمل الكود لأني أقوم بتجاهل القيم الفارغة في المصفوفة, ولكن لفهم أكثر وضوح للكود الصحيح أن يكون كود الإستبدال:

    $sora = preg_replace('/[\x{0660}-\x{0669}]+/u','Ahmed',$value);

أعتقد أن مشروع "الفانوس" وهو محرك بحث في آي القرآن الكريم يوفر ذلك: www.alfanous.org/ar/aya/

السلام علكم

شاهد هذا الررابط: http://www.everyayah.com/da...

وعليكم السلام ورحمة الله وبركاته

اخي الكريم هذا الموقع يوفر القران بصيغة XML وليس JSON

وايضاً لم ارى ذكر للمصدر

والحمدلله المشكلة حلت يا اخي الكريم وجزاك الله خيرا

مرحبا أخي هذا الموقع يوفر الآيات بصيغة mp3 و على شكل صورة png وبحثت عن json ولم أجد سوى xml فإقترحته عسى أن ينفعكم

وهذا الموقع يستعمله محرك بحث الفانوس في جلب القراءات

لكن لم أفهم عبارت لم رى ذكر للمصدر

وبارك الله فيك

شكراً لك على المساعدة يا اخي الكريم

واقصد بعدم ذكر المصدر اعني ماهو مصدر هذا القران الكريم

كما ترى في المقال الذي وضعته النسخة التي اريد تحويلها هي نسخة من مطبعة الملك فهد وان شاءالله هي نسخة موثوقة بالنسبة لي

السلام عليكم

اخي اليك الحل

https://raw.githubuserconte...