vocalolyrics/
lib.rs

1mod helpers;
2mod search_page;
3mod song_page;
4
5#[derive(Debug, Clone, Copy, PartialEq)]
6pub enum LyricsFetchError {
7	NotFound,
8	NetworkError,
9	ParseError,
10	SelectorError,
11}
12
13pub async fn fetch_vocaloid_lyrics(title: &str) -> Result<Vec<String>, LyricsFetchError> {
14	let url = search_page::parser::search_song_url_in_atwiki(title).await?;
15	let lyrics = song_page::scraper::fetch_lyrics_from_atwiki(&url).await?;
16	Ok(lyrics)
17}
18
19pub async fn fetch_vocaloid_lyrics_html(title: &str) -> Result<Vec<String>, LyricsFetchError> {
20	let url = search_page::parser::search_song_url_in_atwiki(title).await?;
21	let lyrics = song_page::scraper::fetch_lyrics_from_atwiki_html(&url).await?;
22	Ok(lyrics)
23}
24
25#[tokio::test]
26async fn test_fetch_vocaloid_lyrics() {
27	let title = "ageha";
28	let lyrics = fetch_vocaloid_lyrics(title).await;
29	dbg!(&lyrics);
30	assert!(lyrics.is_ok());
31}
32
33
34#[tokio::test]
35async fn test_search_atwiki_with_contain_title_in_lyrics() {
36	let search_word = "ルカルカ★ナイトフィーバー";
37	let lyrics = fetch_vocaloid_lyrics_html(search_word).await;
38	dbg!(&lyrics);
39	assert!(lyrics.is_ok());
40}