diff --git a/spec/invidious/videos/scheduled_live_extract_spec.cr b/spec/invidious/videos/scheduled_live_extract_spec.cr
index b80aec0c..ff5aacd5 100644
--- a/spec/invidious/videos/scheduled_live_extract_spec.cr
+++ b/spec/invidious/videos/scheduled_live_extract_spec.cr
@@ -1,6 +1,6 @@
 require "../../parsers_helper.cr"
 
-Spectator.describe Invidious::Hashtag do
+Spectator.describe "parse_video_info" do
   it "parses scheduled livestreams data (test 1)" do
     # Enable mock
     _player = load_mock("video/scheduled_live_nintendo.player")
@@ -12,25 +12,50 @@ Spectator.describe Invidious::Hashtag do
     # Some basic verifications
     expect(typeof(info)).to eq(Hash(String, JSON::Any))
 
-    expect(info["shortDescription"].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["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["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
 
-    expect(info["genre"].as_s).to eq("Gaming")
-    expect(info["genreUcid"].as_s).to be_empty
-    expect(info["license"].as_s).to be_empty
+    # Extra video infos
 
-    expect(info["authorThumbnail"].as_s).to eq(
-      "https://yt3.ggpht.com/ytc/AKedOLTt4vtjREUUNdHlyu9c4gtJjG90M9jQheRlLKy44A=s48-c-k-c0x00ffffff-no-rj"
+    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["authorVerified"].as_bool).to be_true
-    expect(info["subCountText"].as_s).to eq("8.5M")
+    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)
 
@@ -49,6 +74,32 @@ Spectator.describe Invidious::Hashtag do
     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
@@ -62,33 +113,63 @@ Spectator.describe Invidious::Hashtag do
     # Some basic verifications
     expect(typeof(info)).to eq(Hash(String, JSON::Any))
 
-    expect(info["shortDescription"].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.
+    expect(info["videoType"].as_s).to eq("Scheduled")
 
-      Join the channel to get exclusive access to perks: https://bit.ly/3Q9rSQL
-      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/3Q9rSQL</a>
-      TXT
-    )
+    # Basic video infos
 
+    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["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")
-    expect(info["genreUcid"].as_s).to be_empty
-    expect(info["license"].as_s).to be_empty
+    # Extra video infos
 
-    expect(info["authorThumbnail"].as_s).to eq(
-      "https://yt3.ggpht.com/61ArDiQshJrvSXcGLhpFfIO3hlMabe2fksitcf6oGob0Mdr5gztdkXxRljICUodL4iuTSrtxW4A=s48-c-k-c0x00ffffff-no-rj"
+    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", "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["subCountText"].as_s).to eq("227K")
+    expect(info["keywords"].as_a).to_not be_empty
+    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)
 
@@ -107,5 +188,41 @@ Spectator.describe Invidious::Hashtag do
     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_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/3Q9rSQL
+    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/3Q9rSQL</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