refactoring project structure

This commit is contained in:
github_username_here
2026-02-28 17:21:56 +01:00
parent 92b7c5ecab
commit 8fdf7c190a
5 changed files with 13 additions and 0 deletions

View File

@@ -0,0 +1,83 @@
package main
import(
"log"
"net/http"
"github.com/PuerkitoBio/goquery"
"strconv"
"strings"
)
type chapter struct{
verses []string
}
type book struct{
chapters []chapter
}
func fetchChapter(book, searchedChapter, version string) (chapter, error){
url := "https://www.biblegateway.com/passage/?search=" + book + "%20" + searchedChapter +"&version=" + version
res, err := http.Get(url)
if err != nil {
log.Printf("cant get %s : %v\n", url, err)
return chapter{}, err
}
defer res.Body.Close()
if res.StatusCode != http.StatusOK {
log.Printf("error code %v: %v\n", res.StatusCode, res.Status)
return chapter{}, err
}
doc, err := goquery.NewDocumentFromReader(res.Body)
if err != nil {
log.Printf("error reading the http response: %v\n", err)
return chapter{}, err
}
chapterText := chapter{}
replacer := strings.NewReplacer(
"L'Éternel", "YAHWEH",
"l'Éternel", "YAHWEH",
"Éternel", "YAHWEH",
)
doc.Find(".verse > span").Each(func(i int, s *goquery.Selection){
/**********************************************************************************/
/**** verses are marked by an .verse class. Inside the text is in a span and *****/
/**** begin either by the chapter number (first verse), or by the verse *****/
/**** (the other verses). With that the code is straight forward. *****/
/**********************************************************************************/
rawText := s.Text()
verse:= ""
if i == 0 {
verse, _ = strings.CutPrefix(rawText, searchedChapter )
}else{
verse, _ = strings.CutPrefix(rawText, strconv.Itoa(i+1))
}
verse = replacer.Replace(verse)
chapterText.verses = append(chapterText.verses, strings.TrimSpace(verse))
})
return chapterText, nil
}
/*
func fecthBook (book, version string, chapterNumbers int) book, error{
failedChapter := 0
bookChapters := book{}
for i:= 1 ; i > chapterNumbers ; i++{
verses, err := fetchChapter(book, strconv.Itoa(i), version)
if err != nil {
failedChapter++
log.Printf("%s", err)
continue
}
book.chapters = append(book,
}
*/