@ -1,6 +1,6 @@
require " ../../parsers_helper.cr "
require " ../../parsers_helper.cr "
Spectator . describe Invidious :: Hashtag do
Spectator . describe " parse_video_info " do
it " parses scheduled livestreams data (test 1) " do
it " parses scheduled livestreams data (test 1) " do
# Enable mock
# Enable mock
_player = load_mock ( " video/scheduled_live_nintendo.player " )
_player = load_mock ( " video/scheduled_live_nintendo.player " )
@ -12,25 +12,50 @@ Spectator.describe Invidious::Hashtag do
# Some basic verifications
# Some basic verifications
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( info [ " shortDescription " ] . as_s ) . to eq (
expect ( info [ " videoType " ] . as_s ) . to eq ( " Scheduled " )
" Tune in on 6/22 at 7 a.m. PT for a livestreamed Xenoblade Chronicles 3 Direct presentation featuring roughly 20 minutes of information about the upcoming RPG adventure for Nintendo Switch. "
)
# Basic video infos
expect ( info [ " descriptionHtml " ] . as_s ) . to eq (
" Tune in on 6/22 at 7 a.m. PT for a livestreamed Xenoblade Chronicles 3 Direct presentation featuring roughly 20 minutes of information about the upcoming RPG adventure for Nintendo Switch. "
)
expect ( info [ " title " ] . as_s ) . to eq ( " Xenoblade Chronicles 3 Nintendo Direct " )
expect ( info [ " views " ] . as_i ) . to eq ( 160 )
expect ( info [ " likes " ] . as_i ) . to eq ( 2_283 )
expect ( info [ " likes " ] . as_i ) . to eq ( 2_283 )
expect ( info [ " lengthSeconds " ] . as_i ) . to eq ( 0 _i64 )
expect ( info [ " published " ] . as_s ) . to eq ( " 2022-06-22T14:00:00Z " ) # Unix 1655906400
expect ( info [ " genre " ] . as_s ) . to eq ( " Gaming " )
# Extra video infos
expect ( info [ " genreUcid " ] . as_s ) . to be_empty
expect ( info [ " license " ] . as_s ) . to be_empty
expect ( info [ " authorThumbnail " ] . as_s ) . to eq (
expect ( info [ " allowedRegions " ] . as_a ) . to_not be_empty
" https://yt3.ggpht.com/ytc/AKedOLTt4vtjREUUNdHlyu9c4gtJjG90M9jQheRlLKy44A=s48-c-k-c0x00ffffff-no-rj "
expect ( info [ " allowedRegions " ] . as_a . size ) . to eq ( 249 )
expect ( info [ " allowedRegions " ] . as_a ) . to contain (
" AD " , " BA " , " BB " , " BW " , " BY " , " EG " , " GG " , " HN " , " NP " , " NR " , " TR " ,
" TT " , " TV " , " TW " , " TZ " , " VA " , " VC " , " VE " , " VG " , " VI " , " VN " , " VU " ,
" WF " , " WS " , " YE " , " YT " , " ZA " , " ZM " , " ZW "
)
)
expect ( info [ " authorVerified " ] . as_bool ) . to be_true
expect ( info [ " keywords " ] . as_a ) . to_not be_empty
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 8.5M " )
expect ( info [ " keywords " ] . as_a . size ) . to eq ( 11 )
expect ( info [ " keywords " ] . as_a ) . to contain_exactly (
" nintendo " ,
" game " ,
" gameplay " ,
" fun " ,
" video game " ,
" action " ,
" adventure " ,
" rpg " ,
" play " ,
" switch " ,
" nintendo switch "
) . in_any_order
expect ( info [ " allowRatings " ] . as_bool ) . to be_true
expect ( info [ " isFamilyFriendly " ] . as_bool ) . to be_true
expect ( info [ " isListed " ] . as_bool ) . to be_true
expect ( info [ " isUpcoming " ] . as_bool ) . to be_true
# Related videos
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
@ -49,6 +74,32 @@ Spectator.describe Invidious::Hashtag do
expect ( info [ " relatedVideos " ] [ 16 ] [ " view_count " ] . as_s ) . to eq ( " 53510 " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " view_count " ] . as_s ) . to eq ( " 53510 " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " short_view_count " ] . as_s ) . to eq ( " 53K " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " short_view_count " ] . as_s ) . to eq ( " 53K " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " author_verified " ] . as_s ) . to eq ( " true " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " author_verified " ] . as_s ) . to eq ( " true " )
# Description
description = " Tune in on 6/22 at 7 a.m. PT for a livestreamed Xenoblade Chronicles 3 Direct presentation featuring roughly 20 minutes of information about the upcoming RPG adventure for Nintendo Switch. "
expect ( info [ " description " ] . as_s ) . to eq ( description )
expect ( info [ " shortDescription " ] . as_s ) . to eq ( description )
expect ( info [ " descriptionHtml " ] . as_s ) . to eq ( description )
# Video metadata
expect ( info [ " genre " ] . as_s ) . to eq ( " Gaming " )
expect ( info [ " genreUcid " ] . as_s ) . to be_empty
expect ( info [ " license " ] . as_s ) . to be_empty
# Author infos
expect ( info [ " author " ] . as_s ) . to eq ( " Nintendo " )
expect ( info [ " ucid " ] . as_s ) . to eq ( " UCGIY_O-8vW4rfX98KlMkvRg " )
expect ( info [ " authorThumbnail " ] . as_s ) . to eq (
" https://yt3.ggpht.com/ytc/AKedOLTt4vtjREUUNdHlyu9c4gtJjG90M9jQheRlLKy44A=s48-c-k-c0x00ffffff-no-rj "
)
expect ( info [ " authorVerified " ] . as_bool ) . to be_true
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 8.5M " )
end
end
it " parses scheduled livestreams data (test 2) " do
it " parses scheduled livestreams data (test 2) " do
@ -62,33 +113,63 @@ Spectator.describe Invidious::Hashtag do
# Some basic verifications
# Some basic verifications
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( info [ " shortDescription " ] . as_s ) . to start_with (
expect ( info [ " videoType " ] . as_s ) . to eq ( " Scheduled " )
<< - TXT
PBD Podcast Episode 171 . In this episode , Patrick Bet - David is joined by Dr . Patrick Moore and Adam Sosnick .
Join the channel to get exclusive access to perks : https : / / bit . ly / 3 Q9rSQL
# Basic video infos
TXT
)
expect ( info [ " descriptionHtml " ] . as_s ) . to start_with (
<< - TXT
PBD Podcast Episode 171 . In this episode , Patrick Bet - David is joined by Dr . Patrick Moore and Adam Sosnick .
Join the channel to get exclusive access to perks : < a href = " https://bit.ly/3Q9rSQL " > bit . ly / 3 Q9rSQL < / a>
TXT
)
expect ( info [ " title " ] . as_s ) . to eq ( " The Truth About Greenpeace w/ Dr. Patrick Moore | PBD Podcast | Ep. 171 " )
expect ( info [ " views " ] . as_i ) . to eq ( 24 )
expect ( info [ " likes " ] . as_i ) . to eq ( 22 )
expect ( info [ " likes " ] . as_i ) . to eq ( 22 )
expect ( info [ " lengthSeconds " ] . as_i ) . to eq ( 0 _i64 )
expect ( info [ " published " ] . as_s ) . to eq ( " 2022-07-14T13:00:00Z " ) # Unix 1657803600
expect ( info [ " genre " ] . as_s ) . to eq ( " Entertainment " )
# Extra video infos
expect ( info [ " genreUcid " ] . as_s ) . to be_empty
expect ( info [ " license " ] . as_s ) . to be_empty
expect ( info [ " authorThumbnail " ] . as_s ) . to eq (
expect ( info [ " allowedRegions " ] . as_a ) . to_not be_empty
" https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj "
expect ( info [ " allowedRegions " ] . as_a . size ) . to eq ( 249 )
expect ( info [ " allowedRegions " ] . as_a ) . to contain (
" AD " , " AR " , " BA " , " BT " , " CZ " , " FO " , " GL " , " IO " , " KE " , " KH " , " LS " ,
" LT " , " MP " , " NO " , " PR " , " RO " , " SE " , " SK " , " SS " , " SX " , " SZ " , " ZW "
)
)
expect ( info [ " authorVerified " ] . as_bool ) . to be_false
expect ( info [ " keywords " ] . as_a ) . to_not be_empty
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 227K " )
expect ( info [ " keywords " ] . as_a . size ) . to eq ( 25 )
expect ( info [ " keywords " ] . as_a ) . to contain_exactly (
" Patrick Bet-David " ,
" Valeutainment " ,
" The BetDavid Podcast " ,
" The BetDavid Show " ,
" Betdavid " ,
" PBD " ,
" BetDavid show " ,
" Betdavid podcast " ,
" podcast betdavid " ,
" podcast patrick " ,
" patrick bet david podcast " ,
" Valuetainment podcast " ,
" Entrepreneurs " ,
" Entrepreneurship " ,
" Entrepreneur Motivation " ,
" Entrepreneur Advice " ,
" Startup Entrepreneurs " ,
" valuetainment " ,
" patrick bet david " ,
" PBD podcast " ,
" Betdavid show " ,
" Betdavid Podcast " ,
" Podcast Betdavid " ,
" Show Betdavid " ,
" PBDPodcast "
) . in_any_order
expect ( info [ " allowRatings " ] . as_bool ) . to be_true
expect ( info [ " isFamilyFriendly " ] . as_bool ) . to be_true
expect ( info [ " isListed " ] . as_bool ) . to be_true
expect ( info [ " isUpcoming " ] . as_bool ) . to be_true
# Related videos
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
@ -107,5 +188,41 @@ Spectator.describe Invidious::Hashtag do
expect ( info [ " relatedVideos " ] [ 9 ] [ " view_count " ] ) . to eq ( " 26432 " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " view_count " ] ) . to eq ( " 26432 " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " short_view_count " ] ) . to eq ( " 26K " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " short_view_count " ] ) . to eq ( " 26K " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " author_verified " ] ) . to eq ( " true " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " author_verified " ] ) . to eq ( " true " )
# Description
description_start_text = << - TXT
PBD Podcast Episode 171 . In this episode , Patrick Bet - David is joined by Dr . Patrick Moore and Adam Sosnick .
Join the channel to get exclusive access to perks : https : / / bit . ly / 3 Q9rSQL
TXT
expect ( info [ " description " ] . as_s ) . to start_with ( description_start_text )
expect ( info [ " shortDescription " ] . as_s ) . to start_with ( description_start_text )
expect ( info [ " descriptionHtml " ] . as_s ) . to start_with (
<< - TXT
PBD Podcast Episode 171 . In this episode , Patrick Bet - David is joined by Dr . Patrick Moore and Adam Sosnick .
Join the channel to get exclusive access to perks : < a href = " https://bit.ly/3Q9rSQL " > bit . ly / 3 Q9rSQL < / a>
TXT
)
# Video metadata
expect ( info [ " genre " ] . as_s ) . to eq ( " Entertainment " )
expect ( info [ " genreUcid " ] . as_s ) . to be_empty
expect ( info [ " license " ] . as_s ) . to be_empty
# Author infos
expect ( info [ " author " ] . as_s ) . to eq ( " PBD Podcast " )
expect ( info [ " ucid " ] . as_s ) . to eq ( " UCGX7nGXpz-CmO_Arg-cgJ7A " )
expect ( info [ " authorThumbnail " ] . as_s ) . to eq (
" https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj "
)
expect ( info [ " authorVerified " ] . as_bool ) . to be_false
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 227K " )
end
end
end
end