DEV.to 블로그 게시물용 오디오 생성기 빌드
16140 단어 showdevpythonproductivity
나는 읽기보다 듣기를 좋아하는 사람이다. 그리고 읽기보다 듣기를 할 때 생산성이 향상되는 것을 느낍니다. dev.to에는 그런 오디오 기능이 없기 때문에(기본적으로 가져오면 도움이 될 것입니다).
그래서 저는 dev.to 블로그 게시물 URL을 입력하고 다운로드할 수 있는 오디오를 출력하는 도구를 만들었습니다.
도구: https://audioblogs.herokuapp.com/
아래 비디오에서 도구의 작동을 확인할 수 있습니다.
이 도구의 워크플로는 gTTS 모듈을 사용하여 기사/블로그 게시물을 스크랩하고 오디오를 생성하는 것입니다.
사용된 모듈:
요청 - HTML 페이지를 가져오기 위해 HTTP 요청을 보낼 수 있습니다
BeautifulSoup - HTML 페이지를 구문 분석하는 데 도움이 됩니다
gTTS - 입력한 텍스트를 mp3 파일로 저장할 수 있는 오디오로 변환합니다
Streamlit - 아름다운 사용자 정의 웹 앱을 쉽게 만들고 공유할 수 있게 해주는 Python 라이브러리
의 시작하자:
필요한 모든 모듈 가져오기
import streamlit as st
import requests
from bs4 import BeautifulSoup
from gtts import gTTS
웹 페이지의 내용을 변수로 가져오기
results = requests.get("https://dev.to/sunilaleti/building-a-pdf-locker-gui-application-4l67")
콘텐츠를 이해하기 쉽게 하기 위해 BeautifulSoup을 사용하고 있으며 콘텐츠는 soup 변수에 저장됩니다.
soup = BeautifulSoup(results.text, "html.parser")
우리는 soup.find를 사용하여 블로그 게시물의 이름을 얻고 요소를 검사하여 클래스 이름을 얻을 수 있습니다.
Article=soup.find("div",{"class":"crayons-article__header__meta"}).find('h1').get_text()
저자의 이름을 얻으려면
Author=soup.find("div",{"class":"crayons-article__subheader"}).find('a').get_text()
기사 내용을 얻으려면
text=soup.find("div", {"id": "article-body"}).find_all(['p','h1','h2','h3','h4','h5','h6','ol','ul'])
콘텐츠와 함께 HTML 태그도 얻습니다. 따라서 모든 HTML 태그를 제거해야 합니다.
def remove_html_tags(text):
for item in text:
try:
blog.append(item.get_text())
except:
pass
이제 콘텐츠를 스크랩하고 정리한 후 gTTS 모듈의 도움으로 오디오를 생성해야 합니다.
gTTS 모듈은 프랑스어, 스페인어 등과 같은 다른 언어도 지원합니다.
from gtts import gTTS
language = 'en'
myobj = gTTS(text=Text, lang=language, slow=False)
# Saving the converted audio in an mp3 file name "Audio"
myobj.save("Audio.mp3")
이 웹앱은 streamlit을 사용하여 구축되었으며 herokuapp에 배포되었습니다.
소스 코드:
import streamlit as st
import requests
from bs4 import BeautifulSoup
from gtts import gTTS
def app():
st.set_page_config(page_title="Audio Blog",page_icon="🎧")
st.title("Generate Audio for dev.to blogposts")
url=st.text_area("Enter any DEV.TO blog url ").strip()
if st.button("submit"):
if len(url)!=0:
with st.spinner('Miracles take time to happen \n Just kidding 😂 \n Generating audio..'):
results = requests.get(url)
soup = BeautifulSoup(results.text, "html.parser")
blog=[]
try:
Article=soup.find("div",{"class":"crayons-article__header__meta"}).find('h1').get_text()
#st.write(Article)
Author=soup.find("div",{"class":"crayons-article__subheader"}).find('a').get_text()
#st.write(Author)
intro="This blogpost {article} is written by {author}".format(article = Article, author = Author)
blog.append(intro)
text=soup.find("div", {"id": "article-body"}).find_all(['p','h1','h2','h3','h4','h5','h6','ol','ul'])
def remove_html_tags(text):
for item in text:
try:
blog.append(item.get_text())
except:
pass
remove_html_tags(text)
Text=""
for ele in blog:
Text +=ele+" "
myobj = gTTS(text=Text, lang='en', slow=False)
myobj.save("Audio.mp3")
audio_file = open('Audio.mp3', 'rb')
audio_bytes = audio_file.read()
st.success("Play or download the audio")
st.audio(audio_bytes, format='audio/mp3')
except:
st.error("Enter a valid url")
else:
st.error("Enter a valid url")
if __name__ == "__main__":
app()
문제가 있는지 알려주세요. 추가할 사항이 있으면 자유롭게 풀 요청을 보내주세요.
알레티수닐 / 오디오블로그
Reference
이 문제에 관하여(DEV.to 블로그 게시물용 오디오 생성기 빌드), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/sunilaleti/building-an-audio-generator-for-dev-to-blogposts-1hgc텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)