@ -1,114 +1,13 @@
require " ../../parsers_helper.cr "
require " ../../parsers_helper.cr "
Spectator . describe " parse_video_info " do
Spectator . describe " parse_video_info " do
it " parses scheduled livestreams data (test 1) " do
it " parses scheduled livestreams data " do
# Enable mock
_player = load_mock ( " video/scheduled_live_nintendo.player " )
_next = load_mock ( " video/scheduled_live_nintendo.next " )
raw_data = _player . merge! ( _next )
info = parse_video_info ( " QMGibBzTu0g " , raw_data )
# Some basic verifications
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( info [ " videoType " ] . as_s ) . to eq ( " Scheduled " )
# Basic video infos
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 [ " lengthSeconds " ] . as_i ) . to eq ( 0 _i64 )
expect ( info [ " published " ] . as_s ) . to eq ( " 2022-06-22T14:00:00Z " ) # Unix 1655906400
# Extra video infos
expect ( info [ " allowedRegions " ] . as_a ) . to_not be_empty
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 [ " keywords " ] . as_a ) . to_not be_empty
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 )
# related video #1
expect ( info [ " relatedVideos " ] [ 3 ] [ " id " ] . as_s ) . to eq ( " a-SN3lLIUEo " )
expect ( info [ " relatedVideos " ] [ 3 ] [ " author " ] . as_s ) . to eq ( " Nintendo " )
expect ( info [ " relatedVideos " ] [ 3 ] [ " ucid " ] . as_s ) . to eq ( " UCGIY_O-8vW4rfX98KlMkvRg " )
expect ( info [ " relatedVideos " ] [ 3 ] [ " view_count " ] . as_s ) . to eq ( " 147796 " )
expect ( info [ " relatedVideos " ] [ 3 ] [ " short_view_count " ] . as_s ) . to eq ( " 147K " )
expect ( info [ " relatedVideos " ] [ 3 ] [ " author_verified " ] . as_s ) . to eq ( " true " )
# Related video #2
expect ( info [ " relatedVideos " ] [ 16 ] [ " id " ] . as_s ) . to eq ( " l_uC1jFK0lo " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " author " ] . as_s ) . to eq ( " Nintendo " )
expect ( info [ " relatedVideos " ] [ 16 ] [ " ucid " ] . as_s ) . to eq ( " UCGIY_O-8vW4rfX98KlMkvRg " )
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 ] [ " 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
it " parses scheduled livestreams data (test 2) " do
# Enable mock
# Enable mock
_player = load_mock ( " video/scheduled_live_PBD-Podcast.player " )
_player = load_mock ( " video/scheduled_live_PBD-Podcast.player " )
_next = load_mock ( " video/scheduled_live_PBD-Podcast.next " )
_next = load_mock ( " video/scheduled_live_PBD-Podcast.next " )
raw_data = _player . merge! ( _next )
raw_data = _player . merge! ( _next )
info = parse_video_info ( " RG0cjYbXxME " , raw_data )
info = parse_video_info ( " N-yVic7BbY0 " , raw_data )
# Some basic verifications
# Some basic verifications
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
expect ( typeof ( info ) ) . to eq ( Hash ( String , JSON :: Any ) )
@ -117,11 +16,11 @@ Spectator.describe "parse_video_info" do
# Basic video infos
# Basic video infos
expect ( info [ " title " ] . as_s ) . to eq ( " The Truth About Greenpeace w/ Dr. Patrick Moore | PBD Podcast | Ep. 17 1" )
expect ( info [ " title " ] . as_s ) . to eq ( " Home Team | PBD Podcast | Ep. 24 1" )
expect ( info [ " views " ] . as_i ) . to eq ( 24 )
expect ( info [ " views " ] . as_i ) . to eq ( 6 )
expect ( info [ " likes " ] . as_i ) . to eq ( 22 )
expect ( info [ " likes " ] . as_i ) . to eq ( 7 )
expect ( info [ " lengthSeconds " ] . as_i ) . to eq ( 0 _i64 )
expect ( info [ " lengthSeconds " ] . as_i ) . to eq ( 0 _i64 )
expect ( info [ " published " ] . as_s ) . to eq ( " 202 2-07-14T13:00:00Z" ) # Unix 16578036 00
expect ( info [ " published " ] . as_s ) . to eq ( " 202 3-02-28T14:00:00Z" ) # Unix 16775928 00
# Extra video infos
# Extra video infos
@ -173,39 +72,22 @@ Spectator.describe "parse_video_info" do
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
expect ( info [ " relatedVideos " ] . as_a . size ) . to eq ( 20 )
# related video #1
expect ( info [ " relatedVideos " ] [ 0 ] [ " id " ] ) . to eq ( " j7jPzzjbVuk " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " id " ] ) . to eq ( " La9oLLoI5Rc " )
expect ( info [ " relatedVideos " ] [ 0 ] [ " author " ] ) . to eq ( " Democracy Now! " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " author " ] ) . to eq ( " Tom Bilyeu " )
expect ( info [ " relatedVideos " ] [ 0 ] [ " ucid " ] ) . to eq ( " UCzuqE7-t13O4NIDYJfakrhw " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " ucid " ] ) . to eq ( " UCnYMOamNKLGVlJgRUbamveA " )
expect ( info [ " relatedVideos " ] [ 0 ] [ " view_count " ] ) . to eq ( " 7576 " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " view_count " ] ) . to eq ( " 13329149 " )
expect ( info [ " relatedVideos " ] [ 0 ] [ " short_view_count " ] ) . to eq ( " 7.5K " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " short_view_count " ] ) . to eq ( " 13M " )
expect ( info [ " relatedVideos " ] [ 0 ] [ " author_verified " ] ) . to eq ( " true " )
expect ( info [ " relatedVideos " ] [ 2 ] [ " author_verified " ] ) . to eq ( " true " )
# Related video #2
expect ( info [ " relatedVideos " ] [ 9 ] [ " id " ] ) . to eq ( " IQ_4fvpzYuA " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " author " ] ) . to eq ( " Business Today " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " ucid " ] ) . to eq ( " UCaPHWiExfUWaKsUtENLCv5w " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " view_count " ] ) . to eq ( " 26432 " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " short_view_count " ] ) . to eq ( " 26K " )
expect ( info [ " relatedVideos " ] [ 9 ] [ " author_verified " ] ) . to eq ( " true " )
# Description
# Description
description_start_text = << - TXT
description_start_text = " PBD Podcast Episode 241. The home team is ready and at it again with the latest news, interesting topics and trending conversations on topics that matter. Try our sponsor Aura for 14 days free - https://aura.com/pbd "
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 [ " description " ] . as_s ) . to start_with ( description_start_text )
expect ( info [ " shortDescription " ] . 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 (
expect ( info [ " descriptionHtml " ] . as_s ) . to start_with (
<< - TXT
" PBD Podcast Episode 241. The home team is ready and at it again with the latest news, interesting topics and trending conversations on topics that matter. Try our sponsor Aura for 14 days free - <a href= \" https://aura.com/pbd \" >aura.com/pbd</a> "
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
# Video metadata
@ -223,6 +105,6 @@ Spectator.describe "parse_video_info" do
" https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj "
" https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj "
)
)
expect ( info [ " authorVerified " ] . as_bool ) . to be_false
expect ( info [ " authorVerified " ] . as_bool ) . to be_false
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 227 K" )
expect ( info [ " subCountText " ] . as_s ) . to eq ( " 594 K" )
end
end
end
end