def build_kafi() -> Chapter:
    kafi = Chapter()
    kafi.index = BOOK_INDEX
    kafi.path = BOOK_PATH
    kafi.titles = {Language.EN.value: "Al-Kafi", Language.AR.value: "الكافي"}
    kafi.descriptions = {
        Language.EN.value: [
            "Of the majestic narrator and the scholar, the jurist, the Sheykh Muhammad Bin Yaqoub Al-Kulayni Well known as ‘The trustworthy of Al-Islam Al-Kulayni’ Who died in the year 329 H"
        ]
    }
    kafi.chapters = []

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-1\\"), "Volume One",
                     "الجزء الأول‏", "First volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-2\\"), "Volume Two",
                     "الجزء الثاني‏", "Second volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-3\\"),
                     "Volume Three", "الجزء الثالث‏",
                     "Third volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-4\\"),
                     "Volume Four", "الجزء الرابع‏",
                     "Forth volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-5\\"),
                     "Volume Five", "الجزء الخامس‏",
                     "Fifth volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-6\\"), "Volume Six",
                     "الجزء السادس‏", "Sixth volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-7\\"),
                     "Volume Seven", "الجزء السابع‏",
                     "Seventh volume of Al-Kafi"))

    kafi.chapters.append(
        build_volume(get_path("hubeali_com\\Al-Kafi-Volume-8\\"),
                     "Volume Eight", "الجزء الثامن‏",
                     "Eighth volume of Al-Kafi", True))

    kafi.verse_start_index = 0
    kafi.index = BOOK_INDEX
    kafi.path = BOOK_PATH

    crumb = Crumb()
    crumb.titles = kafi.titles
    crumb.indexed_titles = kafi.titles
    crumb.path = kafi.path
    kafi.crumbs = [crumb]

    set_index(kafi, [0, 0, 0, 0], 0)

    return kafi
def build_quran() -> Chapter:
    verses = build_verses(get_path("tanzil_net/quran_simple.txt"))
    verse_translations = []

    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.ansarian.txt"), "ansarian", "fa",
        "Hussain Ansarian",
        "https://fa.wikipedia.org/wiki/%D8%AD%D8%B3%DB%8C%D9%86_%D8%A7%D9%86%D8%B5%D8%A7%D8%B1%DB%8C%D8%A7%D9%86"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.ayati.txt"), "ayati", "fa",
        "AbdolMohammad Ayati",
        "https://fa.wikipedia.org/wiki/%D8%B9%D8%A8%D8%AF%D8%A7%D9%84%D9%85%D8%AD%D9%85%D8%AF_%D8%A2%DB%8C%D8%AA%DB%8C"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.bahrampour.txt"), "bahrampour",
        "fa", "Abolfazl Bahrampour",
        "https://fa.wikipedia.org/wiki/%D8%A7%D8%A8%D9%88%D8%A7%D9%84%D9%81%D8%B6%D9%84_%D8%A8%D9%87%D8%B1%D8%A7%D9%85%E2%80%8C%D9%BE%D9%88%D8%B1"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.fooladvand.txt"), "fooladvand",
        "fa", "Mohammad Mahdi Fooladvand",
        "https://fa.wikipedia.org/wiki/%D9%85%D8%AD%D9%85%D8%AF%D9%85%D9%87%D8%AF%DB%8C_%D9%81%D9%88%D9%84%D8%A7%D8%AF%D9%88%D9%86%D8%AF"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.ghomshei.txt"), "ghomshei", "fa",
        "Mahdi Elahi Ghomshei",
        "https://fa.wikipedia.org/wiki/%D9%85%D9%87%D8%AF%DB%8C_%D8%A7%D9%84%D9%87%DB%8C_%D9%82%D9%85%D8%B4%D9%87%E2%80%8C%D8%A7%DB%8C"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.khorramdel.txt"), "khorramdel",
        "fa", "Mostafa Khorramdel",
        "https://rasekhoon.net/mashahir/Show-904328.aspx")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.khorramshahi.txt"),
        "khorramshahi", "fa", "Baha'oddin Khorramshahi",
        "https://fa.wikipedia.org/wiki/%D8%A8%D9%87%D8%A7%D8%A1%D8%A7%D9%84%D8%AF%DB%8C%D9%86_%D8%AE%D8%B1%D9%85%D8%B4%D8%A7%D9%87%DB%8C"
    )
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.makarem.txt"), "makarem", "fa",
        "Naser Makarem Shirazi",
        "https://en.wikipedia.org/wiki/Naser_Makarem_Shirazi")
    insert_quran_translation(verses, verse_translations,
                             get_path("tanzil_net/translations/fa.moezzi.txt"),
                             "moezzi", "fa", "Mohammad Kazem Moezzi", "")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.mojtabavi.txt"), "mojtabavi",
        "fa", "Sayyed Jalaloddin Mojtabavi",
        "http://rasekhoon.net/mashahir/Show-118481.aspx")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/fa.sadeqi.txt"), "sadeqi", "fa",
        "Mohammad Sadeqi Tehrani",
        "https://fa.wikipedia.org/wiki/%D9%85%D8%AD%D9%85%D8%AF_%D8%B5%D8%A7%D8%AF%D9%82%DB%8C_%D8%AA%D9%87%D8%B1%D8%A7%D9%86%DB%8C"
    )

    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.ahmedali.txt"), "ahmedali", "en",
        "Ahmed Ali", "https://en.wikipedia.org/wiki/Ahmed_Ali_(writer)")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.ahmedraza.txt"), "ahmedraza",
        "en", "Ahmed Raza Khan",
        "https://en.wikipedia.org/wiki/Ahmed_Raza_Khan_Barelvi")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.arberry.txt"), "arberry", "en",
        "A. J. Arberry", "https://en.wikipedia.org/wiki/Arthur_John_Arberry")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.daryabadi.txt"), "daryabadi",
        "en", "Abdul Majid Daryabadi",
        "https://en.wikipedia.org/wiki/Abdul_Majid_Daryabadi")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.hilali.txt"), "hilali", "en",
        "Muhammad Taqi-ud-Din al-Hilali and Muhammad Muhsin Khan",
        "https://en.wikipedia.org/wiki/Noble_Quran_(Hilali-Khan)")
    insert_quran_translation(verses, verse_translations,
                             get_path("tanzil_net/translations/en.itani.txt"),
                             "itani", "en", "Talal Itani", "")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.maududi.txt"), "maududi", "en",
        "Abul Ala Maududi",
        "https://en.wikipedia.org/wiki/Abul_A%27la_Maududi")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.mubarakpuri.txt"), "mubarakpuri",
        "en", "Safi-ur-Rahman al-Mubarakpuri",
        "https://en.wikipedia.org/wiki/Safiur_Rahman_Mubarakpuri")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.pickthall.txt"), "pickthall",
        "en", "Mohammed Marmaduke William Pickthall",
        "https://en.wikipedia.org/wiki/Marmaduke_Pickthall")
    insert_quran_translation(verses, verse_translations,
                             get_path("tanzil_net/translations/en.qarai.txt"),
                             "qarai", "en", "Ali Quli Qarai", "")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.qaribullah.txt"), "qaribullah",
        "en", "Hasan al-Fatih Qaribullah and Ahmad Darwish", "")
    insert_quran_translation(verses, verse_translations,
                             get_path("tanzil_net/translations/en.sahih.txt"),
                             "sahih", "en", "Saheeh International",
                             "http://www.saheehinternational.com/")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.sarwar.txt"), "sarwar", "en",
        "Muhammad Sarwar",
        "https://en.wikipedia.org/wiki/Shaykh_Muhammad_Sarwar")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.shakir.txt"), "shakir", "en",
        "Mohammad Habib Shakir",
        "https://en.wikipedia.org/wiki/Muhammad_Habib_Shakir")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.transliteration.txt"),
        "transliteration", "en", "English Transliteration", "")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.wahiduddin.txt"), "wahiduddin",
        "en", "Wahiduddin Khan",
        "https://en.wikipedia.org/wiki/Wahiduddin_Khan")
    insert_quran_translation(
        verses, verse_translations,
        get_path("tanzil_net/translations/en.yusufali.txt"), "yusufali", "en",
        "Abdullah Yusuf Ali",
        "https://en.wikipedia.org/wiki/Abdullah_Yusuf_Ali")

    chapters = build_chapters(get_path("tanzil_net/quran-data.xml"), verses,
                              verse_translations)

    q = Chapter()
    q.index = BOOK_INDEX
    q.path = BOOK_PATH
    q.verse_start_index = 0
    q.part_type = PartType.Book
    q.titles = {
        Language.EN.value: "The Holy Quran",
        Language.AR.value: "القرآن الكريم"
    }
    q.descriptions = {Language.EN.value: ["Was revealed to the prophet SAW"]}
    q.chapters = chapters
    q.verse_translations = verse_translations
    q.default_verse_translation_ids = {"en": "en.qarai", "fa": "fa.makarem"}

    crumb = Crumb()
    crumb.titles = q.titles
    crumb.indexed_titles = q.titles
    crumb.path = q.path
    q.crumbs = [crumb]

    set_index(q, [0, 0], 0)

    return q