Git Product home page Git Product logo

propresenter-custom-bibles's Introduction

Custom Bible translations in ProPresenter 7

Custom translation in ProPresenter

ProPresenter offers a list of bible translations to use during your services. In Dutch however quite a few translations are missing NBV21 being one of them. After multiple requests to RenewedVision team to add it, they never did. After inspecting the code and file structure of how ProPresenter stores bibles on the disk I leveraged this to create new translations which can be opened an used.

How to automatically

I created a script which automatically downloads a Bible translation from bible.com and converts it to a ProPresenter bible (RVBible format). You can run the script, which will guide you through the steps needed to download and install the bible for ProPresenter.

  1. Go to the releases on GitHub
  2. Download the attached zip file for your platform from the assets section. There is a Windows and a Mac version.
  3. After download, unzip the binary by right clicking to extract
  4. Double click to open and run the executable
  5. It will guide you through the steps. It will prompt for a three letter language code (eng for English, nld for Dutch, deu for German), will ask for the Bible translation you'd like and will then perform the download operation.

Important

The script currently only has been tested on Windows, Mac OSX and on numerous translations. If you experience any issues with downloading or after bible installation it not working properly, please create a ticket and I'll be happy to help out.

Ad hoc scripts

Important

The manual ad hoc scripts do not work out of the box and contain hard coded values. I would recommend everyone to use the executables or the bible_import.py script directly!

Prerequisites

  • Python knowledge
  • Knowledge on APIs and HTTP requests
  • XML knowledge
  • ProPresenter

Windows

  1. Observe that ProPresenter stores the Bibles on the location %programdata%\RenewedVision\ProPresenter\Bibles, each bible will be stored in a separate folder with a UUID as name.

  2. Run the Python script retrieve_chapters_nbv21.py.
    This will retrieve NBV21 bible chapter by chapter from the website and stores it in JSON format.

    python retrieve_chapters_nbv21.py
  3. Run the script json_to_usx.py
    This will convert the JSON contents to a valid USX book file by merging the different chapter files.

    python json_to_usx.py
  4. Download the 005eb691-c7b9-4f87-84dc-e6afb79e77c5 folder from /Resources in this repository and place it in the the bible directory on you disk

  5. Place the USX files that were generated in the folder 005eb691-c7b9-4f87-84dc-e6afb79e77c5/USX

  6. Update BibleData.proPref file such that it contains an entry for our new translation (By using the translation definition of WARMB).

    InstalledBiblesNew=["6fb4fb55-78a4-43bc-ac6a-076818c7abfc|BB|BasisBijbel|1","005eb691-c7b9-4f87-84dc-e6afb79e77c5|WARMB|Nieuwe Bijbelvertaling 2021|1"];
  7. Reopen ProPresenter

Mac

  1. Observe that ProPresenter stores the Bibles on the location /Library/Application Support/RenewedVision/RVBibles/v2/, each bible will be stored in a ZIP file with extension .rvbible.

  2. Run the Python script retrieve_chapters_nbv21.py.
    This will retrieve NBV21 bible chapter by chapter from the website and stores it in JSON format.

    python retrieve_chapters_nbv21.py
  3. Run the script json_to_usx.py
    This will convert the JSON contents to a valid USX book file by merging the different chapter files.

    python json_to_usx.py
  4. Download the 005eb691-c7b9-4f87-84dc-e6afb79e77c5 folder from /Resources in this repository and place it in the the bible directory on you disk

  5. Place the USX files that were generated in the folder 005eb691-c7b9-4f87-84dc-e6afb79e77c5/USX

  6. Zip the contents of the folder and place it in the directory where the other .rvbible files are. Finally rename it such that it has the extension .rvbible instead of zip,

  7. ProPresenter for Mac should continuously detect new bibles. If this is not the case you can try to restart ProPresenter. Note that incorrect files might cause crashes!

How does this work

ProPresenter enables you to install bibles through their in application store. This store contains many translations of scriptures in various languages, but since it is a closed store managed completely by RenewedVision only translations they add to their store themselves can be bought, installed and used.

After downloading a bible it is stored on the users machine for easy lookup and (offline) use. Installed bibles on a machine are available for all users and is not bound to a single user profile. There is a slight difference in how these bibles are stored between Mac OSX systems and Windows.

On Windows these are stored in a Bibles folder, with an index file BibleData.proRef. This file holds a list of pipe separated bible installations with UUIDs refering to folder names where the contents of the translations are stored.

On Mac the contents of the bibles, which are the files in the UUID folders, are stored in a ZIP file with .rvbible as extension. For Mac there is no index file.

ProPresenter uses bibles stored in the Unified Scripture XML format. This is an open, common format and therefore modifying or extension is possible as there is plenty documentation on this. And with that, it opens up the opportunity for us to sideload different bible translations.

Notes

  • As I did research on how to approach this; to be able to sideload a scripture it is required that the abbreviation is known within ProPresenter. At various points inside the code a translation is identified by its translation, for that reason I am using an abbrevation of a translation and language that I'm not going to be using. In my case this was the WARMB translation.
  • ProPresenter reads the rvmetadata.xml as reference on how to display the bible. That means that the name, abbrevation (through displayAbbreviation) can be overwritten. With that the bible translation you load into the system will behave exactly as a normal translation, but under the hood its original abbreviation is used to refer to it.
  • On Windows it looks like that, just as the abbreviation, the UUID of a translation also needs to match up with an existing translation.
  • On Mac XML comments in the metadata.xml will cause exceptions and ProPresenter to crash.
  • When the bible translations on Windows are corrupt they will simply not appear in the dropdown. On Mac it will cause crashes.
  • As NBV21 bible is licenced, like most bibles, I am unable to give you its contents.

Folder structure

ProPresenter stores the Bibles on the Windows location %programdata%\RenewedVision\ProPresenter\Bibles, each bible will be stored in a separate folder with a UUID as name. On Mac OSX this is /Library/Application Support/RenewedVision/RVBibles/v2/, each bible will be stored in a ZIP file with extension .rvbible.

│   BibleData.proPref
│
├───818d0d02-fa1e-4038-85f9-bb5fcc65497b | kjv-en.rvbible
│   │   metadata.xml
│   │   rvmetadata.xml
│   │
│   ├───SearchIndex
│   │       segments.gen
│   │       segments_2
│   │       version
│   │       _0.cfs
│   │       _0.cfx
│   │
│   └───USX_1
│           1CH.usx
│           1CO.usx
  • BibleData.proPref - File containing the installed bibles on the machine
    • {UUID}/metadata.xml - Holds the DBL metadata configuration
    • {UUID}/rvmetadata.xml - RenewedVision ProPresenter metadata that is used in the Bibles tab
    • {UUID}/SearchIndex - Folder containing the Lucene search index which is the generated index for the bible
    • {UUID}/USX - Folder containing the USX XML files per chapter

propresenter-custom-bibles's People

Contributors

alphahasher avatar joehoel avatar martijnlentink avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

propresenter-custom-bibles's Issues

Tamil Translation Issue

Greetings,
@martijnlentink Sorry, was not aware about your earlier messages about the issue I had raised about the Translation being wrong in ProPresenter vs. the translation on Bible.com
This is the Translation on Bible.com The Reference is Genesis 1:1 and Version used is "TAVOBSI". I have Highlighted the specific Consonants in the tamil scrip in the verse.
Bible com Translation
This is the Verse displayed on Propresenter after importing Bible from your Program. I have highlighted the same areas as on the image about the Translation on Bible.com
ProPresenter Translation
Compare both of the images side by side and you will notice that the Dots "." above each letter in tamil is missing on the ProPresenter version in your program. That little "." make difference in the Tamil Script and can change the meaning of the words. Omission of the Dot "." is the issue in your Program.

Translation is not Proper

I installed the Tamil Bible and its working with ProPresenter but the Translation is wrong and has errors. How can it be solved?

Feature that will allow to adjust Bible verse numbering

Hello,

Similar to your initial problem where the Pro7 team would not want to add a Bible translation, we have a similar issue. I am in a slavic-english church and on the screen we put up both Russian and an English translation. The issue comes into play when the preacher cites a passage from Psalms for example. https://www.ph4.org/btraduk_ruennum.php . Using this guide you can see how the numbering of verses between the English and Russian Bible differs, especially in the Psalms.

I looked into how your code takes the scriptures and converts them into the USX format and then into their rvbible format.

I am currently trying to write a script that will take the chapter and verse numbers and adjust them to the guide so that the translations line up on the screen. Yes I am aware that this will cause the text to be the same but the numbering will be off for the English translation but I think that this is a good comprise

Would you @martijnlentink be willing to help?

Generate search index

It's a good way to get translations from YouVersion bible.
I have same repo with translations for PP.

Maybe you know a way to generate SearchIndex. Because searching for verse fragments in the PP is very uncomfortable

MSG(The Message) Translation (Matthew Chapter 1) issue

The text on chapter 1 verse 2 to verse 11 is not right it only contains the text "2-6" and "6-11"

I encounter the same issue on MSG, MBB05, MBBTAG12

but all other translations are good

please check attached image for your reference
Capture

thank you

Contextual Search Feature Not Working

Hi @martijnlentink , thank you so much for this solution.. 🙏🏼

I was able to install the NKJV version successfully. Unfortunately, I realized that the "contextual search" feature does not work. You get a "No Search Results" message. After doing some deep-dive, I realized that this is because the "SearchIndex" folder is not included in the downloaded files for the translation.

Below is a snapshot of the result gotten.

image

However, after some troubleshooting, I was able to get it to work by copy the "SearchIndex" folder from the KJV version which I installed directly from ProPresenter's interface. Apparently, it seems the SearchIndex config for a particular translation can work for other translations, provided they are the same language.

Thank you so much.

New folder is created every restart

A new folder with uuid is created every time I restart ProPresenter.
eg. 5f1bb711-2dcf-48a3-88b6-9f42ad715856
in here: %programdata%\RenewedVision\ProPresenter\Bibles
It's like sideloading the custom bible at every startup.
Is this normal operation?

proposal: Download bible chapters async

Hey @martijnlentink, thank you so much for this script, I could test it in both windows and mac machines and is working great.

I want to propose downloading Bible chapters asynchronously to significantly reduce the time it takes for the script to import them into PP.

We can leverage of the metadata object, which already has chapters, and loop through them as:

for book in metadata["books"]:
        for chapter in book["chapters"]:
           // async chapter download

An use this url path to retrieve the chapter

https://www.bible.com/_next/data/{api_id}/en/bible/{bible_id}/{chapter.usfm}/{bible_id}.json?parallel={bible_id}

for instance:

https://www.bible.com/_next/data/{api_id}/en/bible/3699/GEN.1/3699.json?parallel=3699

Doesn't work on Mac that has Intel processor

In church I have Mac that works on Intel processor. When I've tried to run the program it shows me "bad cpu type in executable".
Then I came to my brother he has two Macs.
Program on Mac with apple processor works perfect but on the seond Max that Intel processor has the same issue "bad cpu type in executable".
Is it possible to make specific built that will work on Mac with old arcitecture of processor?

FileNotFoundError: [Errno 2] No such file or directory

Hi, I got this error after I chose Overwrite option:

Traceback (most recent call last):
  File "bible_import.py", line 475, in <module>
  File "bible_import.py", line 381, in overwrite_free_bible
FileNotFoundError: [Errno 2] No such file or directory: 'C:\\Users\\Labcom\\AppData\\Local\\Temp\\_MEI213642\\available_bibles.json'
[12096] Failed to execute script 'bible_import' due to unhandled exception!

Is there something missing?

Not retrieving my language bible

Thank you for sharing this incredible work, i was looking for that script for so long, but i got an issue for my side, i needed to add a Kirundi Language Bible, but it seems like not working at all, i tried to run the .exe but it close the terminal after entering the three letters language code which is "RUN1967", i also used to bible_import.py in order to check what is going wrong, then it gives the error below:

Traceback (most recent call last):
File "C:\Users\Schammah\Downloads\propresenter-custom-bibles-2024-03-05\propresenter-custom-bibles-2024-03-05\bible_import.py", line 328, in
available_bibles = retrieve_bibles_for_language(language)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\Schammah\Downloads\propresenter-custom-bibles-2024-03-05\propresenter-custom-bibles-2024-03-05\bible_import.py", line 46, in retrieve_bibles_for_language
available_bibles = { x['id']:x for x in bible_list_json["response"]["data"]["versions"]}
~~~~~~~~~~~~~~~^^^^^^^^^^^^
KeyError: 'response'

Thank you again for your precious work, i'm looking for your help

Mac - incorrect chapter sorting

Hello, I love this script however I found an issue l.

Image 2-18-24 at 1.14 PM.jpg

The chapters are not sorted.

Mac version: Sonoma 14.2.1
ProPresenter: 7.15

Nice work

Can we get an amplified bible in english on the next update?

Bible Translation not displaying for custom bible

Hi brother,
First of all, thank you so much for this awesome tool. It solved the problem we were facing for ages. I was able to add the TAMIL Bible successfully using your script. One small issue is that in the options when I select show translation, it is just showing the TAMIL Bible and it’s not showing the English translation along side. Could you please look into this?
Thanks and Regards,
Rajesh

[Feature]: GUI for bible installation

Right now, the only way to install bibles is via a terminal. I think creating a seperate GUI application (and maybe even a CLI option for bible_import.py to open that application) would be very beneficial for people who may be unfamiliar with using a terminal.

The GUI doesn't have to be complicated, maybe just Labels and Comboboxes using tkinter or even ThorPy.

version 2024-04-05. can't download specific bibile

version 2024-04-05
When I've tried to download all bible with ukranian translation I've faced an issue with specific one.
Languange code : urk
scripture number : 1755
When I'm trying to download it then after some percentage the program close, but I've managed to record screen and do the screenshot of callstack

Turkoniaka

Arabic Version

First of all I can't thank you enough for such great tool,
We have downloaded the arabic version of the bible a while ago and it's really working perfeclty fine, just 1 thing that I am not sure that it would be a bible related or importing related,

As you know Arabic is Right to left, also Arabic has it's own numbers. While displaying the bible, it shows the numbers in the English format, as well it shows the numbers on the left while the numbers should be on the right, other than that it's perfect,

I have added screenshot for your reference. Appreicate your response in advance :)
Screenshot 2024-07-20 at 9 17 12 AM

Want to extract telugu bible

Hi Martjin,
As per the given code it is to extract dutch language bible, but am looking to extract telugu language bible. Language code as per the read me "te", and as per bible_import.py telugu language version code is "1737" after executing this bible_import.py ,.. After applying these changes I executed it but still am getting dutch language bible. Can you please help me in extracting the telugu language bible.

Downloads only book of Revelation

Thanks a lot for the code. Tried and it downloads the translation i require. But the issue is that it only downloads the book of Revelation.
Tried multiple version of the Tamil (tam) bible. Can you please check?

SQLite Bible

Nice finding about the format and the location of the Bible files!
Thank you for sharing that!

I've noticed that on MacOS ProPresenter 7 stores the Bible as an SQLite3 database. Not sure about Windows, but will be able to check that on Sunday.

I was curious if you had some findings regarding that as I was going to start researching how to add Bibles in such a format.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.