committed by
GitHub
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 17 additions and 67 deletions
-
84main.py
@ -1,91 +1,41 @@ |
|||||
# 2020 Ravi Shah |
|
||||
# This script selects a random chapter and verse from the Bhagavad Gita and scrapes it from a website. |
|
||||
|
#code was updated by NotBeexoul ## instagram @not_beexoul ## |
||||
|
|
||||
# Imports |
|
||||
from bs4 import BeautifulSoup |
from bs4 import BeautifulSoup |
||||
import requests |
import requests |
||||
import random |
import random |
||||
|
|
||||
# Remove <p> tags from the scraped div and replace <br> with a newline |
|
||||
def get_p(transliteration): |
|
||||
j = 0 |
|
||||
for i in transliteration: |
|
||||
j = j+1 |
|
||||
i = str(i) |
|
||||
new_string = i.replace("<p>","").replace("</p>","").replace("<br/>","\n") |
|
||||
if j == 2: |
|
||||
return new_string |
|
||||
else: |
|
||||
continue |
|
||||
|
VERSE_RANGES = { |
||||
|
1: 47, 2: 72, 3: 43, 4: 42, 5: 29, |
||||
|
6: 47, 7: 30, 8: 28, 9: 34, 10: 42, |
||||
|
11: 55, 12: 20, 13: 35, 14: 27, 15: 20, |
||||
|
16: 24, 17: 28, 18: 78 |
||||
|
} |
||||
|
|
||||
# Generate a random verse number based on the provided chapter |
|
||||
def get_verse_numbers(chapter): |
def get_verse_numbers(chapter): |
||||
if chapter == 1: |
|
||||
verse = random.randint(1, 47) |
|
||||
elif chapter == 2: |
|
||||
verse = random.randint(1, 72) |
|
||||
elif chapter == 3: |
|
||||
verse = random.randint(1, 43) |
|
||||
elif chapter == 4: |
|
||||
verse = random.randint(1, 42) |
|
||||
elif chapter == 5: |
|
||||
verse = random.randint(1, 29) |
|
||||
elif chapter == 6: |
|
||||
verse = random.randint(1, 47) |
|
||||
elif chapter == 7: |
|
||||
verse = random.randint(1, 30) |
|
||||
elif chapter == 8: |
|
||||
verse = random.randint(1, 28) |
|
||||
elif chapter == 9: |
|
||||
verse = random.randint(1, 34) |
|
||||
elif chapter == 10: |
|
||||
verse = random.randint(1, 42) |
|
||||
elif chapter == 11: |
|
||||
verse = random.randint(1, 55) |
|
||||
elif chapter == 12: |
|
||||
verse = random.randint(1, 20) |
|
||||
elif chapter == 13: |
|
||||
verse = random.randint(1, 35) |
|
||||
elif chapter == 14: |
|
||||
verse = random.randint(1, 27) |
|
||||
elif chapter == 15: |
|
||||
verse = random.randint(1, 20) |
|
||||
elif chapter == 16: |
|
||||
verse = random.randint(1, 24) |
|
||||
elif chapter == 17: |
|
||||
verse = random.randint(1, 28) |
|
||||
elif chapter == 18: |
|
||||
verse = random.randint(1, 78) |
|
||||
else: |
|
||||
print("Invalid chapter number. Quitting...") |
|
||||
quit() |
|
||||
return verse |
|
||||
|
return random.randint(1, VERSE_RANGES.get(chapter, 1)) |
||||
|
|
||||
|
|
||||
# Generate a random chapter number and use that as input for the above function. Returns chapter and verse numbers |
|
||||
def random_chapter_verse(): |
def random_chapter_verse(): |
||||
chapter = random.randint(1, 18) |
chapter = random.randint(1, 18) |
||||
verse = get_verse_numbers(chapter) |
verse = get_verse_numbers(chapter) |
||||
return chapter, verse |
return chapter, verse |
||||
|
|
||||
# Concatenate chapter and verse numbers with the website link to scrape the specific verse |
|
||||
def generate_link(chapter, verse): |
def generate_link(chapter, verse): |
||||
link = "https://www.holy-bhagavad-gita.org/chapter/" + str(chapter) + "/verse/" + str(verse) |
|
||||
return link |
|
||||
|
|
||||
|
return f"https://www.holy-bhagavad-gita.org/chapter/{chapter}/verse/{verse}" |
||||
|
|
||||
# Main function which generates chapter & verse numbers, creates a link, scrapes the verse, and formats it properly |
|
||||
def main(): |
def main(): |
||||
chapter, verse = random_chapter_verse() |
chapter, verse = random_chapter_verse() |
||||
link = generate_link(chapter, verse) |
link = generate_link(chapter, verse) |
||||
page = requests.get(link) |
page = requests.get(link) |
||||
soup = BeautifulSoup(page.content, 'html.parser') |
soup = BeautifulSoup(page.content, 'html.parser') |
||||
transliteration = soup.find("div", {"id": "transliteration"}) |
|
||||
formatted_transliteration = get_p(transliteration) |
|
||||
print("Gita Shlok from chapter " + str(chapter) + ", verse " + str(verse) + ".") |
|
||||
print("") |
|
||||
|
|
||||
|
transliteration_wo_dia = soup.find("div", {"id": "transliteration_wo_dia"}) |
||||
|
formatted_transliteration = "" |
||||
|
if transliteration_wo_dia: |
||||
|
paragraphs = transliteration_wo_dia.find_all("p") |
||||
|
formatted_transliteration = "\n".join(paragraph.text.strip() for paragraph in paragraphs) |
||||
|
|
||||
|
print(f"# Gita Shlok from chapter {chapter}, verse {verse}.\n") |
||||
print(formatted_transliteration) |
print(formatted_transliteration) |
||||
|
|
||||
# Run the main function |
|
||||
if __name__ == '__main__': |
if __name__ == '__main__': |
||||
main() |
main() |
||||
Write
Preview
Loading…
Cancel
Save
Reference in new issue