video_info 3.0.0 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (169) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/unit_test.yml +3 -0
  3. data/lib/video_info/providers/youtube_scraper.rb +1 -0
  4. data/lib/video_info/version.rb +1 -1
  5. data/video_info.gemspec +1 -2
  6. metadata +3 -329
  7. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +0 -82
  8. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -87
  9. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author/1_3_7_1.yml +0 -91
  10. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_thumbnail/1_3_9_1.yml +0 -91
  11. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_author_url/1_3_8_1.yml +0 -91
  12. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +0 -91
  13. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_10_1.yml +0 -91
  14. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_12_1.yml +0 -91
  15. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_11_1.yml +0 -91
  16. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail/1_3_21_1.yml +0 -91
  17. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_18_1.yml +0 -91
  18. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_17_1.yml +0 -91
  19. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_16_1.yml +0 -91
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +0 -91
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/1_3_22_1.yml +0 -91
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +0 -151
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +0 -68
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +0 -127
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +0 -70
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -158
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -68
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author/1_13_2_1.yml +0 -130
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_thumbnail/1_13_3_1.yml +0 -130
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/author_url/1_13_4_1.yml +0 -132
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/available_/1_13_1_1.yml +0 -130
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/date/1_13_7_1.yml +0 -128
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/description/1_13_6_1.yml +0 -131
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/duration/1_13_8_1.yml +0 -130
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/height/1_13_10_1.yml +0 -131
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/keywords/1_13_9_1.yml +0 -128
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_large/1_13_14_1.yml +0 -129
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_medium/1_13_13_1.yml +0 -129
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/thumbnail_small/1_13_12_1.yml +0 -129
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/title/1_13_5_1.yml +0 -130
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/view_count/1_13_15_1.yml +0 -129
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_unavailable_video/width/1_13_11_1.yml +0 -129
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_20_1.yml +0 -158
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_20_1.yml +0 -80
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_19_1.yml +0 -158
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_19_1.yml +0 -85
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_21_1.yml +0 -159
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_21_1.yml +0 -80
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +0 -240
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +0 -160
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +0 -80
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +0 -158
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +0 -85
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +0 -158
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +0 -80
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +0 -240
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/1_3_18_1.yml +0 -236
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail/2_3_18_1.yml +0 -82
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +0 -236
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +0 -82
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +0 -235
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +0 -84
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +0 -236
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +0 -84
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +0 -159
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +0 -85
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_22_1.yml +0 -158
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_22_1.yml +0 -84
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +0 -156
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +0 -82
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/1_12_1_1.yml +0 -234
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail/2_12_1_1.yml +0 -78
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/1_12_2_1.yml +0 -233
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_large/2_12_2_1.yml +0 -78
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/1_12_3_1.yml +0 -235
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_medium/2_12_3_1.yml +0 -73
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/1_12_4_1.yml +0 -234
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_141349194/thumbnail_small/2_12_4_1.yml +0 -77
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +0 -75
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -79
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +0 -85
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +0 -85
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +0 -86
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +0 -86
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +0 -85
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +0 -86
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +0 -86
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +0 -85
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +0 -87
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail/1_3_15_1.yml +0 -87
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +0 -87
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +0 -87
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +0 -85
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +0 -85
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +0 -87
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +0 -59
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +0 -114
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +0 -59
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +0 -114
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +0 -59
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +0 -114
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +0 -59
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +0 -114
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +0 -59
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +0 -114
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +0 -59
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +0 -114
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_18_1.yml +0 -59
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_18_1.yml +0 -114
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -59
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -187
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +0 -59
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +0 -114
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_a_video_without_description/_description/1_1_1_1.yml +0 -59
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +0 -249
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +0 -59
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +0 -187
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +0 -59
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +0 -187
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +0 -59
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +0 -187
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +0 -59
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +0 -187
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_17_1.yml +0 -59
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_17_1.yml +0 -187
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +0 -115
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +0 -187
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +0 -115
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +0 -335
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +0 -59
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +0 -335
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/can_be_called_twice_and_receive_the_same_value.yml +0 -391
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +0 -243
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +0 -60
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +0 -187
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +0 -59
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +0 -187
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +0 -59
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +0 -187
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +0 -59
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +0 -187
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_21_1.yml +0 -59
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_21_1.yml +0 -187
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +0 -120
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +0 -154
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +0 -154
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_21_1.yml +0 -165
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_22_1.yml +0 -274
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_23_1.yml +0 -274
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +0 -165
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +0 -165
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail/1_3_18_1.yml +0 -165
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +0 -165
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large_2x/1_3_16_1.yml +0 -165
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_maxres/1_3_17_1.yml +0 -165
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +0 -165
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +0 -165
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +0 -165
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +0 -112
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +0 -114
  161. data/spec/lib/video_info/provider_spec.rb +0 -80
  162. data/spec/lib/video_info/providers/dailymotion_spec.rb +0 -204
  163. data/spec/lib/video_info/providers/vimeo_spec.rb +0 -338
  164. data/spec/lib/video_info/providers/wistia_spec.rb +0 -207
  165. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +0 -240
  166. data/spec/lib/video_info/providers/youtube_scraper_spec.rb +0 -14
  167. data/spec/lib/video_info/providers/youtube_spec.rb +0 -599
  168. data/spec/lib/video_info_spec.rb +0 -102
  169. data/spec/spec_helper.rb +0 -31
@@ -1,240 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VideoInfo::Providers::YoutubePlaylist, :vcr do
4
- before(:each) do
5
- api_key = ENV["YOUTUBE_API_KEY"] || "youtube_api_key_123"
6
- VideoInfo.provider_api_keys = { youtube: api_key }
7
- end
8
-
9
- describe '.usable?' do
10
- subject { VideoInfo::Providers::YoutubePlaylist.usable?(url) }
11
-
12
- context 'with youtube.com/playlist?p= url' do
13
- let(:url) { 'http://www.youtube.com/playlist?p=PLA575C81A1FBC04CF' }
14
- it { is_expected.to be_truthy }
15
- end
16
-
17
- context 'with youtube.com/playlist?list= url' do
18
- let(:url) { 'http://www.youtube.com/playlist?list=PLA575C81A1FBC04CF' }
19
- it { is_expected.to be_truthy }
20
- end
21
-
22
- context 'with youtube.com url' do
23
- let(:url) { 'http://www.youtube.com/watch?v=Xp6CXF' }
24
- it { is_expected.to be_falsey }
25
- end
26
-
27
- context 'with other url' do
28
- let(:url) { 'http://example.com/video1' }
29
- it { is_expected.to be_falsey }
30
- end
31
- end
32
-
33
- describe '#available?' do
34
- context 'with valid playlist' do
35
- playlist_url = 'http://www.youtube.com/playlist?p=PLA575C81A1FBC04CF'
36
- subject { VideoInfo.new(playlist_url.freeze) }
37
-
38
- describe '#available?' do
39
- subject { super().available? }
40
- it { is_expected.to be_truthy }
41
- end
42
- end
43
-
44
- context 'with invalid playlist' do
45
- invalid_playlist_url = 'http://www.youtube.com/playlist?' \
46
- 'p=PLA575C81A1FBC04CF_invalid'
47
- subject { VideoInfo.new(invalid_playlist_url) }
48
-
49
- describe '#available?' do
50
- subject { super().available? }
51
- it { is_expected.to be_falsey }
52
- end
53
- end
54
-
55
- context 'with &list= url' do
56
- playlist_url = 'http://www.youtube.com/playlist?list=PLA575C81A1FBC04CF'
57
- subject { VideoInfo.new(playlist_url) }
58
-
59
- describe '#available?' do
60
- subject { super().available? }
61
- it { is_expected.to be_truthy }
62
- end
63
- end
64
- end
65
-
66
- context 'with playlist PL9hW1uS6HUftLdHI6RIsaf' do
67
- let(:video_ids) do
68
- [
69
- "9g2U12SsRns", "AsqTAkLKb4M", "K681ILSXyUY", "OQVHWsTHcoc", "QtwplSG6VvM", "WK8qRNSmhEU", "XIoGq39abMk", "eKkv1C_O-QI", "lau14lhZpoU", "HvplY9BPKG8", "mTdNi9Mqiu8", "qAVwpBZ1HYA"
70
- ]
71
- end
72
-
73
- playlist_url = 'http://www.youtube.com/playlist?' \
74
- 'p=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr'
75
-
76
- subject { VideoInfo.new(playlist_url) }
77
-
78
- describe '#provider' do
79
- subject { super().provider }
80
- it { is_expected.to eq 'YouTube' }
81
- end
82
-
83
- describe '#playlist_id' do
84
- subject { super().playlist_id }
85
- it { is_expected.to eq 'PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr' }
86
- end
87
-
88
- describe '#url' do
89
- subject { super().url }
90
- it { is_expected.to eq playlist_url }
91
- end
92
-
93
- describe '#embed_url' do
94
- subject { super().embed_url }
95
- embed_url = '//www.youtube.com/embed/videoseries' \
96
- '?list=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr'
97
- it { is_expected.to eq embed_url }
98
- end
99
-
100
- describe '#embed_code' do
101
- subject { super().embed_code }
102
- embed_code = '<iframe src="//www.youtube.com/embed/videoseries' \
103
- '?list=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr" ' \
104
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
105
- '</iframe>'
106
- it { is_expected.to eq embed_code }
107
- end
108
-
109
- describe '#title' do
110
- subject { super().title }
111
- it { is_expected.to eq 'YouTube Policy and Copyright' }
112
- end
113
-
114
- describe '#description' do
115
- subject { super().description }
116
- description_text = 'Learn more about copyright basics, flagging, ' \
117
- 'and the YouTube community.'
118
- it { is_expected.to eq description_text }
119
- end
120
-
121
- describe '#keywords' do
122
- subject { super().keywords }
123
- it { is_expected.to be_nil }
124
- end
125
-
126
- describe '#duration' do
127
- subject { super().duration }
128
- it { is_expected.to be_nil }
129
- end
130
-
131
- describe '#width' do
132
- subject { super().width }
133
- it { is_expected.to be_nil }
134
- end
135
-
136
- describe '#height' do
137
- subject { super().height }
138
- it { is_expected.to be_nil }
139
- end
140
-
141
- describe '#date' do
142
- subject { super().date }
143
- it { is_expected.to be_nil }
144
- end
145
-
146
- describe '#thumbnail_small' do
147
- subject { super().thumbnail_small }
148
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/default.jpg'
149
- it { is_expected.to eq thumbnail_url }
150
- end
151
-
152
- describe '#thumbnail_medium' do
153
- subject { super().thumbnail_medium }
154
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/mqdefault.jpg'
155
- it { is_expected.to eq thumbnail_url }
156
- end
157
-
158
- describe '#thumbnail_large' do
159
- subject { super().thumbnail_large }
160
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/hqdefault.jpg'
161
- it { is_expected.to eq thumbnail_url }
162
- end
163
-
164
- describe '#thumbnail_large_2x' do
165
- subject { super().thumbnail_large_2x }
166
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/sddefault.jpg'
167
- it { is_expected.to eq thumbnail_url }
168
- end
169
-
170
- describe '#thumbnail_maxres' do
171
- subject { super().thumbnail_maxres }
172
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/maxresdefault.jpg'
173
- it { is_expected.to eq thumbnail_url }
174
- end
175
-
176
- describe '#thumbnail' do
177
- subject { super().thumbnail }
178
- thumbnail_url = 'https://i.ytimg.com/vi/9g2U12SsRns/default.jpg'
179
- it { is_expected.to eq thumbnail_url }
180
- end
181
-
182
- describe '#videos' do
183
- subject { super().videos.map(&:video_id) }
184
- it 'returns list of videos in playlist' do
185
- is_expected.to match_array(video_ids)
186
- end
187
- end
188
-
189
- describe '#view_count' do
190
- subject { super().view_count }
191
- it { is_expected.to be_nil }
192
- end
193
-
194
- describe '#author' do
195
- subject { super().author }
196
- it { is_expected.to eq 'TeamYouTube [Help]' }
197
- end
198
-
199
- describe '#author_thumbnail' do
200
- subject { super().author_thumbnail }
201
- author_thumbnail = 'https://yt3.ggpht.com/a/' \
202
- 'AATXAJwyEv0uEyk3JLskjLiUCqSVzsGmpWw2icLfBOBzWg' \
203
- '=s88-c-k-c0x00ffffff-no-rj'
204
- it { is_expected.to eq author_thumbnail }
205
- end
206
-
207
- describe '#author_url' do
208
- subject { super().author_url }
209
- author_url = 'https://www.youtube.com/channel/UCMDQxm7cUx3yXkfeHa5zJIQ'
210
- it { is_expected.to eq author_url }
211
- end
212
- end
213
-
214
- context 'with playlist that does not exist in embed path' do
215
- playlist_url = 'http://www.youtube.com/embed/videoseries?' \
216
- 'list=PL0E8117603D70E10A'
217
- subject { VideoInfo.new(playlist_url) }
218
-
219
- describe '#playlist_id' do
220
- subject { super().playlist_id }
221
- it { is_expected.to eq 'PL0E8117603D70E10A' }
222
- end
223
-
224
- describe '#videos' do
225
- subject { super().videos }
226
- it { is_expected.to eq [] }
227
- end
228
- end
229
-
230
- context 'with playlist valid playlist in embed path' do
231
- playlist_url = 'http://www.youtube.com/embed/videoseries' \
232
- '?list=PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr'
233
- subject { VideoInfo.new(playlist_url) }
234
-
235
- describe '#playlist_id' do
236
- subject { super().playlist_id }
237
- it { is_expected.to eq 'PL9hW1uS6HUftLdHI6RIsaf-iXTm09qnEr' }
238
- end
239
- end
240
- end
@@ -1,14 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VideoInfo::Providers::Youtube do
4
- before { VideoInfo.provider_api_keys = {} }
5
-
6
- context 'with a video without description', :vcr do
7
- subject { VideoInfo.new('http://www.youtube.com/watch?v=WVsj2pS-zFY') }
8
-
9
- describe '#description' do
10
- subject { super().description }
11
- it { is_expected.to eq " " }
12
- end
13
- end
14
- end
@@ -1,599 +0,0 @@
1
- require 'spec_helper'
2
-
3
- [nil, ENV["YOUTUBE_API_KEY"] || "youtube_api_key_123"].each do |api_key|
4
- describe VideoInfo::Providers::Youtube, :vcr do
5
- before(:all) do
6
- VideoInfo.provider_api_keys = { youtube: api_key }
7
- end
8
-
9
- describe '.usable?' do
10
- subject { VideoInfo::Providers::Youtube.usable?(url) }
11
-
12
- context 'with youtube.com url' do
13
- let(:url) { 'http://www.youtube.com/watch?v=Xp6CXF' }
14
- it { is_expected.to be_truthy }
15
- end
16
-
17
- context 'with youtu.be url' do
18
- let(:url) { 'http://youtu.be/JM9NgvjjVng' }
19
- it { is_expected.to be_truthy }
20
- end
21
-
22
- context 'with other url' do
23
- let(:url) { 'http://google.com/video1' }
24
- it { is_expected.to be_falsey }
25
- end
26
-
27
- context 'with playlist url' do
28
- let(:url) { 'http://www.youtube.com/playlist?p=PLA575C81A1FBC04CF' }
29
- it { is_expected.to be_falsey }
30
- end
31
- end
32
-
33
- describe '#available?' do
34
- context 'with valid video' do
35
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4'.freeze) }
36
-
37
- describe '#available?' do
38
- subject { super().available? }
39
- it { is_expected.to be_truthy }
40
- end
41
- end
42
-
43
- context 'with unavailable video' do
44
- subject { VideoInfo.new('http://www.youtube.com/watch?v=SUkXvWn1m7Q') }
45
-
46
- describe '#available?' do
47
- subject { super().available? }
48
- it { is_expected.to be_falsey }
49
- end
50
-
51
- describe '#provider' do
52
- subject { super().provider }
53
- it { is_expected.to eq 'YouTube' }
54
- end
55
-
56
- describe '#video_id' do
57
- subject { super().video_id }
58
- it { is_expected.to eq 'SUkXvWn1m7Q' }
59
- end
60
-
61
- describe '#url' do
62
- subject { super().url }
63
- it { is_expected.to eq 'http://www.youtube.com/watch?v=SUkXvWn1m7Q' }
64
- end
65
-
66
- describe '#embed_url' do
67
- subject { super().embed_url }
68
- it { is_expected.to eq '//www.youtube.com/embed/SUkXvWn1m7Q' }
69
- end
70
-
71
- describe '#embed_code' do
72
- subject { super().embed_code }
73
- embed_code = '<iframe src="//www.youtube.com/embed/SUkXvWn1m7Q" ' \
74
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
75
- '</iframe>'
76
- it { is_expected.to eq embed_code }
77
- end
78
-
79
- describe '#title' do
80
- subject { super().title }
81
- it { is_expected.to eq nil }
82
- end
83
-
84
- describe '#description' do
85
- subject { super().description }
86
- it { is_expected.to eq nil }
87
- end
88
-
89
- describe '#keywords' do
90
- subject { super().keywords }
91
- it { is_expected.to be_nil }
92
- end
93
-
94
- describe '#duration' do
95
- subject { super().duration }
96
- it { is_expected.to eq 0 }
97
- end
98
-
99
- describe '#date' do
100
- subject { super().date }
101
- it { is_expected.to eq nil }
102
- end
103
-
104
- describe '#thumbnail_small' do
105
- subject { super().thumbnail_small }
106
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/default.jpg'
107
- it { is_expected.to eq thumbnail_url }
108
- end
109
-
110
- describe '#thumbnail_medium' do
111
- subject { super().thumbnail_medium }
112
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/mqdefault.jpg'
113
- it { is_expected.to eq thumbnail_url }
114
- end
115
-
116
- describe '#thumbnail_large' do
117
- subject { super().thumbnail_large }
118
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/hqdefault.jpg'
119
- it { is_expected.to eq thumbnail_url }
120
- end
121
-
122
- describe '#thumbnail_large_2x' do
123
- subject { super().thumbnail_large_2x }
124
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/sddefault.jpg'
125
- it { is_expected.to eq thumbnail_url }
126
- end
127
-
128
- describe '#thumbnail_maxres' do
129
- subject { super().thumbnail_maxres }
130
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/maxresdefault.jpg'
131
- it { is_expected.to eq thumbnail_url }
132
- end
133
-
134
- describe '#thumbnail' do
135
- subject { super().thumbnail }
136
- thumbnail_url = 'https://i.ytimg.com/vi/SUkXvWn1m7Q/hqdefault.jpg'
137
- it { is_expected.to eq thumbnail_url }
138
- end
139
-
140
- describe '#view_count' do
141
- subject { super().view_count }
142
- it { is_expected.to be == 0 }
143
- end
144
- end
145
-
146
- context 'with video removed because of copyright claim' do
147
- subject { VideoInfo.new('http://www.youtube.com/watch?v=ffClNhwx0KU') }
148
-
149
- describe '#available?' do
150
- subject { super().available? }
151
- it { is_expected.to be_falsey }
152
- end
153
- end
154
- end
155
-
156
- context 'with video mZqGqE0D0n4' do
157
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
158
-
159
- describe '#provider' do
160
- subject { super().provider }
161
- it { is_expected.to eq 'YouTube' }
162
- end
163
-
164
- describe '#video_id' do
165
- subject { super().video_id }
166
- it { is_expected.to eq 'mZqGqE0D0n4' }
167
- end
168
-
169
- describe '#url' do
170
- subject { super().url }
171
- it { is_expected.to eq 'http://www.youtube.com/watch?v=mZqGqE0D0n4' }
172
- end
173
-
174
- describe '#embed_url' do
175
- subject { super().embed_url }
176
- it { is_expected.to eq '//www.youtube.com/embed/mZqGqE0D0n4' }
177
- end
178
-
179
- describe '#embed_code' do
180
- subject { super().embed_code }
181
- embed_code = '<iframe src="//www.youtube.com/embed/mZqGqE0D0n4" ' \
182
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
183
- '</iframe>'
184
- it { is_expected.to eq embed_code }
185
- end
186
-
187
- describe '#author' do
188
- subject { super().author }
189
- it { is_expected.to eql 'Cherry Bloom' }
190
- end
191
-
192
- describe '#author_thumbnail' do
193
- subject { super().author_thumbnail }
194
- author_thumbnail = 'https://yt3.ggpht.com/a/' \
195
- 'AATXAJyf5l8p3WQvOx-Q0o8ssGmIL-K5taxKHv5ZEEYc' \
196
- '=s88-c-k-c0x00ffffff-no-rj'
197
-
198
- it { is_expected.to eql author_thumbnail }
199
- end
200
-
201
- describe '#author_url' do
202
- author_url = 'https://www.youtube.com/channel/UCzxQk-rZGowoqMBKxGD5jSA'
203
-
204
- it { expect(subject.author_url).to eql(author_url) }
205
-
206
- it 'can be called twice and receive the same value' do
207
- expect(subject.author_url).to eq(subject.author_url)
208
- end
209
- end
210
-
211
- describe '#title' do
212
- subject { super().title }
213
- it { is_expected.to eq 'Cherry Bloom - King Of The Knife' }
214
- end
215
-
216
- describe '#description' do
217
- subject { super().description }
218
- description = 'The first video from the upcoming album Secret Sounds,' \
219
- ' to download in-stores April 14. ' \
220
- 'Checkout http://www.cherrybloom.net'
221
- it { is_expected.to eq description }
222
- end
223
-
224
- describe '#keywords' do
225
- subject { super().keywords }
226
- keywords_list = %w(cherry bloom king of the knife guitar
227
- drum clip rock alternative tremplin Paris-Forum)
228
- it { is_expected.to eq keywords_list }
229
- end
230
-
231
- describe '#duration' do
232
- subject { super().duration }
233
- it { is_expected.to eq 176 }
234
- end
235
-
236
- describe '#width' do
237
- subject { super().width }
238
- it { is_expected.to be_nil }
239
- end
240
-
241
- describe '#height' do
242
- subject { super().height }
243
- it { is_expected.to be_nil }
244
- end
245
-
246
- describe '#date' do
247
- subject { super().date }
248
-
249
- it 'should return date video was posted' do
250
- if api_key.nil?
251
- is_expected.to eq Time.parse('Sat Apr 12 2008', Time.now.utc)
252
- else
253
- is_expected.to eq Time.parse('Sat Apr 12 22:34:48 UTC 2008',
254
- Time.now.utc)
255
- end
256
- end
257
- end
258
-
259
- describe '#thumbnail_small' do
260
- subject { super().thumbnail_small }
261
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg'
262
- it { is_expected.to eq thumbnail_url }
263
- end
264
-
265
- describe '#thumbnail_medium' do
266
- subject { super().thumbnail_medium }
267
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg'
268
- it { is_expected.to eq thumbnail_url }
269
- end
270
-
271
- describe '#thumbnail_large' do
272
- subject { super().thumbnail_large }
273
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg'
274
- it { is_expected.to eq thumbnail_url }
275
- end
276
-
277
- describe '#thumbnail_large_2x' do
278
- subject { super().thumbnail_large_2x }
279
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/sddefault.jpg'
280
- it { is_expected.to eq thumbnail_url }
281
- end
282
-
283
- describe '#thumbnail_maxres' do
284
- subject { super().thumbnail_maxres }
285
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/maxresdefault.jpg'
286
- it { is_expected.to eq thumbnail_url }
287
- end
288
-
289
- describe '#view_count' do
290
- subject { super().view_count }
291
- it { is_expected.to be > 4000 }
292
- end
293
- end
294
-
295
- context 'with video oQ49W_xKzKA' do
296
- subject { VideoInfo.new('http://www.youtube.com/watch?v=oQ49W_xKzKA') }
297
-
298
- it 'should properly apply arbitrary url attributes' do
299
- embed_code = subject.embed_code(url_attributes: { autoplay: 1 })
300
- expect(embed_code).to match(/autoplay=1/)
301
- end
302
- end
303
-
304
- context 'with video oQ49W_xKzKA' do
305
- subject { VideoInfo.new('http://www.youtube.com/watch?v=oQ49W_xKzKA') }
306
-
307
- describe '#provider' do
308
- subject { super().provider }
309
- it { is_expected.to eq 'YouTube' }
310
- end
311
-
312
- describe '#video_id' do
313
- subject { super().video_id }
314
- it { is_expected.to eq 'oQ49W_xKzKA' }
315
- end
316
- end
317
-
318
- context 'with video Xp6CXF-Cesg' do
319
- subject { VideoInfo.new('http://www.youtube.com/watch?v=Xp6CXF-Cesg') }
320
-
321
- describe '#provider' do
322
- subject { super().provider }
323
- it { is_expected.to eq 'YouTube' }
324
- end
325
-
326
- describe '#video_id' do
327
- subject { super().video_id }
328
- it { is_expected.to eq 'Xp6CXF-Cesg' }
329
- end
330
- end
331
-
332
- context 'with video VeasFckfMHY in user url' do
333
- video_url = 'http://www.youtube.com/user/EducatorVids3?v=VeasFckfMHY'
334
- subject { VideoInfo.new(video_url) }
335
-
336
- describe '#provider' do
337
- subject { super().provider }
338
- it { is_expected.to eq 'YouTube' }
339
- end
340
-
341
- describe '#video_id' do
342
- subject { super().video_id }
343
- it { is_expected.to eq 'VeasFckfMHY' }
344
- end
345
-
346
- describe '#url' do
347
- subject { super().url }
348
- it { is_expected.to eq video_url }
349
- end
350
- end
351
-
352
- context 'with video VeasFckfMHY after params' do
353
- video_url = 'http://www.youtube.com/watch?feature=player_profilepage&v=VeasFckfMHY'
354
- subject { VideoInfo.new(video_url) }
355
-
356
- describe '#provider' do
357
- subject { super().provider }
358
- it { is_expected.to eq 'YouTube' }
359
- end
360
-
361
- describe '#video_id' do
362
- subject { super().video_id }
363
- it { is_expected.to eq 'VeasFckfMHY' }
364
- end
365
-
366
- describe '#url' do
367
- subject { super().url }
368
- it { is_expected.to eq video_url }
369
- end
370
- end
371
-
372
- context 'with video VeasFckfMHY in path' do
373
- subject { VideoInfo.new('http://www.youtube.com/v/VeasFckfMHY') }
374
-
375
- describe '#provider' do
376
- subject { super().provider }
377
- it { is_expected.to eq 'YouTube' }
378
- end
379
-
380
- describe '#video_id' do
381
- subject { super().video_id }
382
- it { is_expected.to eq 'VeasFckfMHY' }
383
- end
384
- end
385
-
386
- context 'with video VeasFckfMHY in e path' do
387
- subject { VideoInfo.new('http://www.youtube.com/e/VeasFckfMHY') }
388
-
389
- describe '#provider' do
390
- subject { super().provider }
391
- it { is_expected.to eq 'YouTube' }
392
- end
393
-
394
- describe '#video_id' do
395
- subject { super().video_id }
396
- it { is_expected.to eq 'VeasFckfMHY' }
397
- end
398
- end
399
-
400
- context 'with video VeasFckfMHY in embed path' do
401
- subject { VideoInfo.new('http://www.youtube.com/embed/VeasFckfMHY') }
402
-
403
- describe '#provider' do
404
- subject { super().provider }
405
- it { is_expected.to eq 'YouTube' }
406
- end
407
-
408
- describe '#video_id' do
409
- subject { super().video_id }
410
- it { is_expected.to eq 'VeasFckfMHY' }
411
- end
412
- end
413
-
414
- context 'with video JM9NgvjjVng in youtu.be url' do
415
- subject { VideoInfo.new('http://youtu.be/JM9NgvjjVng') }
416
-
417
- describe '#provider' do
418
- subject { super().provider }
419
- it { is_expected.to eq 'YouTube' }
420
- end
421
-
422
- describe '#video_id' do
423
- subject { super().video_id }
424
- it { is_expected.to eq 'JM9NgvjjVng' }
425
- end
426
- end
427
-
428
- context 'without http or www' do
429
- subject { VideoInfo.new('youtu.be/JM9NgvjjVng') }
430
-
431
- describe '#provider' do
432
- subject { super().provider }
433
- it { is_expected.to eq('YouTube') }
434
- end
435
-
436
- describe '#video_id' do
437
- subject { super().video_id }
438
- it { is_expected.to eq 'JM9NgvjjVng' }
439
- end
440
- end
441
-
442
- context 'with video url in text' do
443
- url_in_text = '<a href="http://www.youtube.com/watch?v=mZqGqE0D0n4">' \
444
- 'http://www.youtube.com/watch?v=mZqGqE0D0n4</a>'
445
- subject { VideoInfo.new(url_in_text) }
446
-
447
- describe '#provider' do
448
- subject { super().provider }
449
- it { is_expected.to eq('YouTube') }
450
- end
451
-
452
- describe '#video_id' do
453
- subject { super().video_id }
454
- it { is_expected.to eq('mZqGqE0D0n4') }
455
- end
456
- end
457
-
458
- context 'with iframe attributes' do
459
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
460
-
461
- describe '#provider' do
462
- subject { super().provider }
463
- it { is_expected.to eq('YouTube') }
464
- end
465
-
466
- it 'should properly apply dimensions attributes' do
467
- dimensions = { width: 800, height: 600 }
468
- embed_code = subject.embed_code(iframe_attributes: dimensions)
469
- expect(embed_code).to match(/width="800"/)
470
- expect(embed_code).to match(/height="600"/)
471
- end
472
- end
473
-
474
- context 'with arbitrary iframe_attributes' do
475
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
476
-
477
- describe '#provider' do
478
- subject { super().provider }
479
- it { is_expected.to eq('YouTube') }
480
- end
481
-
482
- it 'should properly apply arbitrary attributes' do
483
- attributes = { :'data-colorbox' => true }
484
- embed_code = subject.embed_code(iframe_attributes: attributes)
485
- expect(embed_code).to match(/data-colorbox="true"/)
486
- end
487
- end
488
-
489
- context 'with full screen video URLs' do
490
- subject { VideoInfo.new('http://www.youtube.com/v/mZqGqE0D0n4') }
491
-
492
- describe '#provider' do
493
- subject { super().provider }
494
- it { is_expected.to eq 'YouTube' }
495
- end
496
-
497
- describe '#video_id' do
498
- subject { super().video_id }
499
- it { is_expected.to eq 'mZqGqE0D0n4' }
500
- end
501
-
502
- describe '#url' do
503
- subject { super().url }
504
- it { is_expected.to eq 'http://www.youtube.com/v/mZqGqE0D0n4' }
505
- end
506
-
507
- describe '#embed_url' do
508
- subject { super().embed_url }
509
- it { is_expected.to eq '//www.youtube.com/embed/mZqGqE0D0n4' }
510
- end
511
-
512
- describe '#embed_code' do
513
- subject { super().embed_code }
514
- embed_code = '<iframe src="//www.youtube.com/embed/mZqGqE0D0n4" ' \
515
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
516
- '</iframe>'
517
- it { is_expected.to eq embed_code }
518
- end
519
-
520
- describe '#title' do
521
- subject { super().title }
522
- it { is_expected.to eq 'Cherry Bloom - King Of The Knife' }
523
- end
524
-
525
- describe '#description' do
526
- subject { super().description }
527
- description = 'The first video from the upcoming album Secret Sounds,' \
528
- ' to download in-stores April 14. ' \
529
- 'Checkout http://www.cherrybloom.net'
530
- it { is_expected.to eq description }
531
- end
532
-
533
- describe '#keywords' do
534
- subject { super().keywords }
535
- keywords_list = %w(cherry bloom king of the knife guitar
536
- drum clip rock alternative tremplin Paris-Forum)
537
- it { is_expected.to eq keywords_list }
538
- end
539
-
540
- describe '#duration' do
541
- subject { super().duration }
542
- it { is_expected.to eq 176 }
543
- end
544
-
545
- describe '#width' do
546
- subject { super().width }
547
- it { is_expected.to be_nil }
548
- end
549
-
550
- describe '#height' do
551
- subject { super().height }
552
- it { is_expected.to be_nil }
553
- end
554
-
555
- describe '#date' do
556
- subject { super().date }
557
-
558
- it 'should return date video was posted' do
559
- if api_key.nil?
560
- is_expected.to eq Time.parse('Sat Apr 12 2008', Time.now.utc)
561
- else
562
- is_expected.to eq Time.parse('Sat Apr 12 22:34:48 UTC 2008',
563
- Time.now.utc)
564
- end
565
- end
566
- end
567
-
568
- describe '#thumbnail_small' do
569
- subject { super().thumbnail_small }
570
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg'
571
- it { is_expected.to eq thumbnail_url }
572
- end
573
-
574
- describe '#thumbnail_medium' do
575
- subject { super().thumbnail_medium }
576
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg'
577
- it { is_expected.to eq thumbnail_url }
578
- end
579
-
580
- describe '#thumbnail_large' do
581
- subject { super().thumbnail_large }
582
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg'
583
- it { is_expected.to eq thumbnail_url }
584
- end
585
-
586
- describe '#thumbnail_large_2x' do
587
- subject { super().thumbnail_large_2x }
588
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/sddefault.jpg'
589
- it { is_expected.to eq thumbnail_url }
590
- end
591
-
592
- describe '#view_count' do
593
- subject { super().view_count }
594
-
595
- it { is_expected.to eq 7962 }
596
- end
597
- end
598
- end
599
- end