video_info 2.6.1 → 3.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) hide show
  1. checksums.yaml +5 -5
  2. data/.github/workflows/unit_test.yml +42 -0
  3. data/Guardfile +1 -1
  4. data/README.md +10 -21
  5. data/lib/video_info.rb +5 -4
  6. data/lib/video_info/provider.rb +17 -2
  7. data/lib/video_info/providers/dailymotion.rb +13 -0
  8. data/lib/video_info/providers/vimeo_api.rb +12 -12
  9. data/lib/video_info/providers/vimeo_scraper.rb +66 -16
  10. data/lib/video_info/providers/youtube.rb +12 -0
  11. data/lib/video_info/providers/youtube_api.rb +12 -13
  12. data/lib/video_info/providers/youtube_scraper.rb +45 -25
  13. data/lib/video_info/providers/youtubeplaylist_api.rb +15 -1
  14. data/lib/video_info/version.rb +1 -1
  15. data/tmp/rspec_guard_result +25 -0
  16. data/video_info.gemspec +9 -10
  17. metadata +24 -429
  18. data/.travis.yml +0 -14
  19. data/lib/video_info/providers/vkontakte.rb +0 -194
  20. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_invalid_video_url/_available_/1_2_2_1_1.yml +0 -89
  21. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -92
  22. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_date/should_show_correct_date.yml +0 -95
  23. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_description/1_3_7_1.yml +0 -95
  24. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_duration/1_3_9_1.yml +0 -95
  25. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_keywords/1_3_8_1.yml +0 -95
  26. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_large/1_3_15_1.yml +0 -95
  27. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_medium/1_3_14_1.yml +0 -95
  28. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_thumbnail_small/1_3_13_1.yml +0 -95
  29. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_title/1_3_6_1.yml +0 -95
  30. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Dailymotion/with_video_x7lni3/_view_count/1_3_16_1.yml +0 -95
  31. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/1_2_3_1_1.yml +0 -964
  32. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_password_required_video/_available_/2_2_3_1_1.yml +0 -59
  33. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/1_2_2_1_1.yml +0 -936
  34. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_this_video_does_not_exist_video/_available_/2_2_2_1_1.yml +0 -61
  35. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -2692
  36. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -119
  37. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/1_3_17_1.yml +0 -1530
  38. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author/2_3_17_1.yml +0 -68
  39. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/1_3_16_1.yml +0 -1530
  40. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_thumbnail/2_3_16_1.yml +0 -68
  41. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/1_3_18_1.yml +0 -1529
  42. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_author_url/2_3_18_1.yml +0 -68
  43. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_date/should_have_correct_upload_date.yml +0 -1595
  44. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/1_3_7_1.yml +0 -1602
  45. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_description/2_3_7_1.yml +0 -68
  46. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/1_3_9_1.yml +0 -1530
  47. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_duration/2_3_9_1.yml +0 -68
  48. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/1_3_11_1.yml +0 -1529
  49. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_height/2_3_11_1.yml +0 -68
  50. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_keywords/should_return_a_string_list_of_keywords.yml +0 -1595
  51. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/1_3_15_1.yml +0 -1530
  52. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_large/2_3_15_1.yml +0 -68
  53. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/1_3_14_1.yml +0 -1530
  54. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_medium/2_3_14_1.yml +0 -68
  55. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/1_3_13_1.yml +0 -1530
  56. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_thumbnail_small/2_3_13_1.yml +0 -68
  57. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/1_3_6_1.yml +0 -1602
  58. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_title/2_3_6_1.yml +0 -68
  59. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/1_3_19_1.yml +0 -1530
  60. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_view_count/2_3_19_1.yml +0 -68
  61. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/1_3_10_1.yml +0 -1530
  62. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_136971428/_width/2_3_10_1.yml +0 -68
  63. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author/1_3_17_1.yml +0 -2559
  64. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author/2_3_17_1.yml +0 -159
  65. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author_thumbnail/1_3_16_1.yml +0 -2559
  66. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author_thumbnail/2_3_16_1.yml +0 -159
  67. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author_url/1_3_18_1.yml +0 -2559
  68. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_author_url/2_3_18_1.yml +0 -159
  69. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_date/should_have_correct_upload_date.yml +0 -2714
  70. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_description/1_3_7_1.yml +0 -2692
  71. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_description/2_3_7_1.yml +0 -159
  72. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_duration/1_3_9_1.yml +0 -2829
  73. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_duration/2_3_9_1.yml +0 -159
  74. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_height/1_3_11_1.yml +0 -2828
  75. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_height/2_3_11_1.yml +0 -159
  76. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_keywords/should_return_a_string_list_of_keywords.yml +0 -2716
  77. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_large/1_3_15_1.yml +0 -2560
  78. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_large/2_3_15_1.yml +0 -159
  79. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_medium/1_3_14_1.yml +0 -2558
  80. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_medium/2_3_14_1.yml +0 -159
  81. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_small/1_3_13_1.yml +0 -2558
  82. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_thumbnail_small/2_3_13_1.yml +0 -159
  83. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_title/1_3_6_1.yml +0 -2961
  84. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_title/2_3_6_1.yml +0 -159
  85. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_view_count/1_3_19_1.yml +0 -2560
  86. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_view_count/2_3_19_1.yml +0 -159
  87. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_width/1_3_10_1.yml +0 -2560
  88. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vimeo/with_video_898029/_width/2_3_10_1.yml +0 -159
  89. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_hashes/available_/1_2_6_1_1.yml +0 -2996
  90. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_invalid_video/available_/1_2_2_1_1.yml +0 -46
  91. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_private_video/available_/1_2_3_1_1.yml +0 -865
  92. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect/available_/1_2_4_1_1.yml +0 -666
  93. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_redirect_to_main_page_for_auth/available_/1_2_5_1_1.yml +0 -46
  94. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/_available_/with_valid_video/available_/1_2_1_1_1.yml +0 -2118
  95. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author/1_5_14_1.yml +0 -518
  96. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_thumbnail/1_5_15_1.yml +0 -519
  97. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/author_url/1_5_16_1.yml +0 -520
  98. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/description/1_5_8_1.yml +0 -518
  99. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/duration/1_5_10_1.yml +0 -517
  100. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_code/1_5_6_1.yml +0 -517
  101. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/embed_url/1_5_5_1.yml +0 -519
  102. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/height/1_5_12_1.yml +0 -517
  103. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/title/1_5_7_1.yml +0 -517
  104. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/view_count/1_5_13_1.yml +0 -521
  105. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_from_kirill_lyanoi_z_video2152699_168591741_2F56fd229a9dfe2dcdbe/width/1_5_11_1.yml +0 -517
  106. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/author/1_3_7_1.yml +0 -399
  107. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_code/1_3_6_1.yml +0 -399
  108. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/embed_url/1_3_5_1.yml +0 -399
  109. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_https_/vk_com/id44052340_z_video61291456_159590018_2F2521d92730a272a9ea/title/1_3_4_1.yml +0 -399
  110. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video-54799401_165822734/title/1_7_4_1.yml +0 -682
  111. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video3552522_171340713/embed_url/1_10_1_1.yml +0 -501
  112. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/description/1_6_8_1.yml +0 -449
  113. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/duration/1_6_10_1.yml +0 -449
  114. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/embed_code/1_6_6_1.yml +0 -449
  115. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/embed_url/1_6_5_1.yml +0 -449
  116. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/height/1_6_12_1.yml +0 -449
  117. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/title/1_6_7_1.yml +0 -449
  118. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/view_count/1_6_13_1.yml +0 -449
  119. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_video39576223_108370515/width/1_6_11_1.yml +0 -449
  120. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author/1_4_5_1.yml +0 -527
  121. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_thumbnail/1_4_6_1.yml +0 -527
  122. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/author_url/1_4_7_1.yml +0 -527
  123. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Vkontakte/with_video_videos43640822_/video43640822_168790809/title/1_4_4_1.yml +0 -527
  124. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_invalid_video/_available_/1_2_2_1_1.yml +0 -71
  125. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -73
  126. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_duration/1_4_7_1.yml +0 -80
  127. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_height/1_4_9_1.yml +0 -80
  128. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_large/1_4_12_1.yml +0 -80
  129. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_medium/1_4_11_1.yml +0 -80
  130. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_thumbnail_small/1_4_10_1.yml +0 -80
  131. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_title/1_4_6_1.yml +0 -80
  132. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_pxonqr42is/_width/1_4_8_1.yml +0 -80
  133. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_duration/1_3_7_1.yml +0 -80
  134. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_height/1_3_9_1.yml +0 -80
  135. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_large/1_3_12_1.yml +0 -80
  136. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_medium/1_3_11_1.yml +0 -80
  137. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_thumbnail_small/1_3_10_1.yml +0 -80
  138. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_title/1_3_6_1.yml +0 -80
  139. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Wistia/with_video_rs1me54mpw/_width/1_3_8_1.yml +0 -80
  140. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/1_2_2_1_1.yml +0 -516
  141. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_available_/2_2_2_1_1.yml +0 -56
  142. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/1_2_2_11_1.yml +0 -519
  143. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_date/2_2_2_11_1.yml +0 -56
  144. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/1_2_2_8_1.yml +0 -521
  145. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_description/2_2_2_8_1.yml +0 -56
  146. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/1_2_2_10_1.yml +0 -519
  147. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_duration/2_2_2_10_1.yml +0 -56
  148. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/1_2_2_9_1.yml +0 -519
  149. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_keywords/2_2_2_9_1.yml +0 -56
  150. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/1_2_2_7_1.yml +0 -519
  151. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_title/2_2_2_7_1.yml +0 -56
  152. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/1_2_2_15_1.yml +0 -516
  153. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_unavailable_video/_view_count/2_2_2_15_1.yml +0 -56
  154. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/1_2_1_1_1.yml +0 -3930
  155. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_valid_video/_available_/2_2_1_1_1.yml +0 -127
  156. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/1_2_3_1_1.yml +0 -578
  157. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/_available_/with_video_removed_because_of_copyright_claim/_available_/2_2_3_1_1.yml +0 -117
  158. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_date/should_return_date_video_was_posted.yml +0 -3912
  159. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/1_17_7_1.yml +0 -4007
  160. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_description/2_17_7_1.yml +0 -127
  161. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/1_17_9_1.yml +0 -3982
  162. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_duration/2_17_9_1.yml +0 -127
  163. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/1_17_8_1.yml +0 -3984
  164. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_keywords/2_17_8_1.yml +0 -127
  165. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/1_17_6_1.yml +0 -3946
  166. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_title/2_17_6_1.yml +0 -127
  167. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/1_17_16_1.yml +0 -3948
  168. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_full_screen_video_URLs/_view_count/2_17_16_1.yml +0 -127
  169. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/1_3_6_1.yml +0 -4006
  170. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author/2_3_6_1.yml +0 -127
  171. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/1_3_7_1.yml +0 -4027
  172. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_thumbnail/2_3_7_1.yml +0 -212
  173. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/1_3_8_1.yml +0 -4080
  174. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_author_url/2_3_8_1.yml +0 -212
  175. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_date/should_return_date_video_was_posted.yml +0 -3982
  176. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/1_3_10_1.yml +0 -3992
  177. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_description/2_3_10_1.yml +0 -127
  178. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/1_3_12_1.yml +0 -3961
  179. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_duration/2_3_12_1.yml +0 -127
  180. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/1_3_11_1.yml +0 -3928
  181. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_keywords/2_3_11_1.yml +0 -127
  182. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/1_3_9_1.yml +0 -3974
  183. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_title/2_3_9_1.yml +0 -127
  184. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/1_3_19_1.yml +0 -3950
  185. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_Youtube/with_video_mZqGqE0D0n4/_view_count/2_3_19_1.yml +0 -127
  186. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/1_2_2_1_1.yml +0 -62
  187. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_invalid_playlist/_available_/2_2_2_1_1.yml +0 -62
  188. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/1_2_3_1_1.yml +0 -96
  189. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_list_url/_available_/2_2_3_1_1.yml +0 -96
  190. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/1_2_1_1_1.yml +0 -96
  191. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/_available_/with_valid_playlist/_available_/2_2_1_1_1.yml +0 -96
  192. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/1_3_18_1.yml +0 -107
  193. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author/2_3_18_1.yml +0 -107
  194. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/1_3_19_1.yml +0 -193
  195. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_thumbnail/2_3_19_1.yml +0 -193
  196. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/1_3_20_1.yml +0 -193
  197. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_author_url/2_3_20_1.yml +0 -193
  198. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/1_3_7_1.yml +0 -107
  199. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_description/2_3_7_1.yml +0 -107
  200. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/1_3_8_1.yml +0 -107
  201. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_keywords/2_3_8_1.yml +0 -107
  202. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/1_3_15_1.yml +0 -107
  203. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_large/2_3_15_1.yml +0 -107
  204. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/1_3_14_1.yml +0 -107
  205. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_medium/2_3_14_1.yml +0 -107
  206. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/1_3_13_1.yml +0 -107
  207. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_thumbnail_small/2_3_13_1.yml +0 -107
  208. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/1_3_6_1.yml +0 -107
  209. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_title/2_3_6_1.yml +0 -107
  210. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_PL9hW1uS6HUftLdHI6RIsaf/_videos/returns_list_of_videos_in_playlist.yml +0 -267
  211. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/1_4_2_1.yml +0 -56
  212. data/spec/fixtures/vcr_cassettes/VideoInfo_Providers_YoutubePlaylist/with_playlist_that_does_not_exist_in_embed_path/_videos/2_4_2_1.yml +0 -56
  213. data/spec/lib/video_info/provider_spec.rb +0 -80
  214. data/spec/lib/video_info/providers/dailymotion_spec.rb +0 -174
  215. data/spec/lib/video_info/providers/vimeo_spec.rb +0 -277
  216. data/spec/lib/video_info/providers/vkontakte_spec.rb +0 -242
  217. data/spec/lib/video_info/providers/wistia_spec.rb +0 -189
  218. data/spec/lib/video_info/providers/youtube_playlist_spec.rb +0 -230
  219. data/spec/lib/video_info/providers/youtube_spec.rb +0 -557
  220. data/spec/lib/video_info_spec.rb +0 -106
  221. data/spec/spec_helper.rb +0 -26
@@ -1,557 +0,0 @@
1
- require 'spec_helper'
2
-
3
- [nil, 'AIzaSyA6PYwSr1EnLFUFy1cZDk3Ifb0rxeJaeZ0'].each do |api_key|
4
- describe VideoInfo::Providers::Youtube 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', :vcr do
35
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
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', :vcr 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 '#view_count' do
123
- subject { super().view_count }
124
- it { is_expected.to be == 0 }
125
- end
126
- end
127
-
128
- context 'with video removed because of copyright claim', :vcr do
129
- subject { VideoInfo.new('http://www.youtube.com/watch?v=ffClNhwx0KU') }
130
-
131
- describe '#available?' do
132
- subject { super().available? }
133
- it { is_expected.to be_falsey }
134
- end
135
- end
136
- end
137
-
138
- context 'with video mZqGqE0D0n4', :vcr do
139
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
140
-
141
- describe '#provider' do
142
- subject { super().provider }
143
- it { is_expected.to eq 'YouTube' }
144
- end
145
-
146
- describe '#video_id' do
147
- subject { super().video_id }
148
- it { is_expected.to eq 'mZqGqE0D0n4' }
149
- end
150
-
151
- describe '#url' do
152
- subject { super().url }
153
- it { is_expected.to eq 'http://www.youtube.com/watch?v=mZqGqE0D0n4' }
154
- end
155
-
156
- describe '#embed_url' do
157
- subject { super().embed_url }
158
- it { is_expected.to eq '//www.youtube.com/embed/mZqGqE0D0n4' }
159
- end
160
-
161
- describe '#embed_code' do
162
- subject { super().embed_code }
163
- embed_code = '<iframe src="//www.youtube.com/embed/mZqGqE0D0n4" ' \
164
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
165
- '</iframe>'
166
- it { is_expected.to eq embed_code }
167
- end
168
-
169
- describe '#author' do
170
- subject { super().author }
171
- it { is_expected.to eql 'Cherry Bloom' }
172
- end
173
-
174
- describe '#author_thumbnail' do
175
- subject { super().author_thumbnail }
176
- author_thumbnail = 'https://yt3.ggpht.com/-7rhnfdQaI3k/AAAAAAAAAAI/' \
177
- 'AAAAAAAAAAA/eMJZ5HBukCQ/s88-c-k-no-rj-c0xffffff' \
178
- '/photo.jpg'
179
- it { is_expected.to eql author_thumbnail }
180
- end
181
-
182
- describe '#author_url' do
183
- subject { super().author_url }
184
- author_url = 'https://www.youtube.com/channel/UCzxQk-rZGowoqMBKxGD5jSA'
185
- it { is_expected.to eql author_url }
186
- end
187
-
188
- describe '#title' do
189
- subject { super().title }
190
- it { is_expected.to eq 'Cherry Bloom - King Of The Knife' }
191
- end
192
-
193
- describe '#description' do
194
- subject { super().description }
195
- description = 'The first video from the upcoming album Secret Sounds,' \
196
- ' to download in-stores April 14. ' \
197
- 'Checkout http://www.cherrybloom.net'
198
- it { is_expected.to eq description }
199
- end
200
-
201
- describe '#keywords' do
202
- subject { super().keywords }
203
- keywords_list = %w(cherry bloom king of the knife guitar
204
- drum clip rock alternative tremplin Paris-Forum)
205
- it { is_expected.to eq keywords_list }
206
- end
207
-
208
- describe '#duration' do
209
- subject { super().duration }
210
- it { is_expected.to eq 176 }
211
- end
212
-
213
- describe '#width' do
214
- subject { super().width }
215
- it { is_expected.to be_nil }
216
- end
217
-
218
- describe '#height' do
219
- subject { super().height }
220
- it { is_expected.to be_nil }
221
- end
222
-
223
- describe '#date' do
224
- subject { super().date }
225
-
226
- it 'should return date video was posted' do
227
- if api_key.nil?
228
- is_expected.to eq Time.parse('Sat Apr 12 2008', Time.now.utc)
229
- else
230
- is_expected.to eq Time.parse('Sat Apr 12 22:25:35 UTC 2008',
231
- Time.now.utc)
232
- end
233
- end
234
- end
235
-
236
- describe '#thumbnail_small' do
237
- subject { super().thumbnail_small }
238
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg'
239
- it { is_expected.to eq thumbnail_url }
240
- end
241
-
242
- describe '#thumbnail_medium' do
243
- subject { super().thumbnail_medium }
244
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg'
245
- it { is_expected.to eq thumbnail_url }
246
- end
247
-
248
- describe '#thumbnail_large' do
249
- subject { super().thumbnail_large }
250
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg'
251
- it { is_expected.to eq thumbnail_url }
252
- end
253
-
254
- describe '#view_count' do
255
- subject { super().view_count }
256
- it { is_expected.to be > 4000 }
257
- end
258
- end
259
-
260
- context 'with video oQ49W_xKzKA', :vcr do
261
- subject { VideoInfo.new('http://www.youtube.com/watch?v=oQ49W_xKzKA') }
262
-
263
- it 'should properly apply arbitrary url attributes' do
264
- embed_code = subject.embed_code(url_attributes: { autoplay: 1 })
265
- expect(embed_code).to match(/autoplay=1/)
266
- end
267
- end
268
-
269
- context 'with video oQ49W_xKzKA', :vcr do
270
- subject { VideoInfo.new('http://www.youtube.com/watch?v=oQ49W_xKzKA') }
271
-
272
- describe '#provider' do
273
- subject { super().provider }
274
- it { is_expected.to eq 'YouTube' }
275
- end
276
-
277
- describe '#video_id' do
278
- subject { super().video_id }
279
- it { is_expected.to eq 'oQ49W_xKzKA' }
280
- end
281
- end
282
-
283
- context 'with video Xp6CXF-Cesg', :vcr do
284
- subject { VideoInfo.new('http://www.youtube.com/watch?v=Xp6CXF-Cesg') }
285
-
286
- describe '#provider' do
287
- subject { super().provider }
288
- it { is_expected.to eq 'YouTube' }
289
- end
290
-
291
- describe '#video_id' do
292
- subject { super().video_id }
293
- it { is_expected.to eq 'Xp6CXF-Cesg' }
294
- end
295
- end
296
-
297
- context 'with video VeasFckfMHY in user url', :vcr do
298
- video_url = 'http://www.youtube.com/user/EducatorVids3?v=VeasFckfMHY'
299
- subject { VideoInfo.new(video_url) }
300
-
301
- describe '#provider' do
302
- subject { super().provider }
303
- it { is_expected.to eq 'YouTube' }
304
- end
305
-
306
- describe '#video_id' do
307
- subject { super().video_id }
308
- it { is_expected.to eq 'VeasFckfMHY' }
309
- end
310
-
311
- describe '#url' do
312
- subject { super().url }
313
- it { is_expected.to eq video_url }
314
- end
315
- end
316
-
317
- context 'with video VeasFckfMHY after params', :vcr do
318
- video_url = 'http://www.youtube.com/watch?feature=player_profilepage&v=VeasFckfMHY'
319
- subject { VideoInfo.new(video_url) }
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 'VeasFckfMHY' }
329
- end
330
-
331
- describe '#url' do
332
- subject { super().url }
333
- it { is_expected.to eq video_url }
334
- end
335
- end
336
-
337
- context 'with video VeasFckfMHY in path', :vcr do
338
- subject { VideoInfo.new('http://www.youtube.com/v/VeasFckfMHY') }
339
-
340
- describe '#provider' do
341
- subject { super().provider }
342
- it { is_expected.to eq 'YouTube' }
343
- end
344
-
345
- describe '#video_id' do
346
- subject { super().video_id }
347
- it { is_expected.to eq 'VeasFckfMHY' }
348
- end
349
- end
350
-
351
- context 'with video VeasFckfMHY in e path', :vcr do
352
- subject { VideoInfo.new('http://www.youtube.com/e/VeasFckfMHY') }
353
-
354
- describe '#provider' do
355
- subject { super().provider }
356
- it { is_expected.to eq 'YouTube' }
357
- end
358
-
359
- describe '#video_id' do
360
- subject { super().video_id }
361
- it { is_expected.to eq 'VeasFckfMHY' }
362
- end
363
- end
364
-
365
- context 'with video VeasFckfMHY in embed path', :vcr do
366
- subject { VideoInfo.new('http://www.youtube.com/embed/VeasFckfMHY') }
367
-
368
- describe '#provider' do
369
- subject { super().provider }
370
- it { is_expected.to eq 'YouTube' }
371
- end
372
-
373
- describe '#video_id' do
374
- subject { super().video_id }
375
- it { is_expected.to eq 'VeasFckfMHY' }
376
- end
377
- end
378
-
379
- context 'with video JM9NgvjjVng in youtu.be url', :vcr do
380
- subject { VideoInfo.new('http://youtu.be/JM9NgvjjVng') }
381
-
382
- describe '#provider' do
383
- subject { super().provider }
384
- it { is_expected.to eq 'YouTube' }
385
- end
386
-
387
- describe '#video_id' do
388
- subject { super().video_id }
389
- it { is_expected.to eq 'JM9NgvjjVng' }
390
- end
391
- end
392
-
393
- context 'without http or www', :vcr do
394
- subject { VideoInfo.new('youtu.be/JM9NgvjjVng') }
395
-
396
- describe '#provider' do
397
- subject { super().provider }
398
- it { is_expected.to eq('YouTube') }
399
- end
400
-
401
- describe '#video_id' do
402
- subject { super().video_id }
403
- it { is_expected.to eq 'JM9NgvjjVng' }
404
- end
405
- end
406
-
407
- context 'with video url in text', :vcr do
408
- url_in_text = '<a href="http://www.youtube.com/watch?v=mZqGqE0D0n4">' \
409
- 'http://www.youtube.com/watch?v=mZqGqE0D0n4</a>'
410
- subject { VideoInfo.new(url_in_text) }
411
-
412
- describe '#provider' do
413
- subject { super().provider }
414
- it { is_expected.to eq('YouTube') }
415
- end
416
-
417
- describe '#video_id' do
418
- subject { super().video_id }
419
- it { is_expected.to eq('mZqGqE0D0n4') }
420
- end
421
- end
422
-
423
- context 'with iframe attributes', :vcr do
424
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
425
-
426
- describe '#provider' do
427
- subject { super().provider }
428
- it { is_expected.to eq('YouTube') }
429
- end
430
-
431
- it 'should properly apply dimensions attributes' do
432
- dimensions = { width: 800, height: 600 }
433
- embed_code = subject.embed_code(iframe_attributes: dimensions)
434
- expect(embed_code).to match(/width="800"/)
435
- expect(embed_code).to match(/height="600"/)
436
- end
437
- end
438
-
439
- context 'with arbitrary iframe_attributes', :vcr do
440
- subject { VideoInfo.new('http://www.youtube.com/watch?v=mZqGqE0D0n4') }
441
-
442
- describe '#provider' do
443
- subject { super().provider }
444
- it { is_expected.to eq('YouTube') }
445
- end
446
-
447
- it 'should properly apply arbitrary attributes' do
448
- attributes = { :'data-colorbox' => true }
449
- embed_code = subject.embed_code(iframe_attributes: attributes)
450
- expect(embed_code).to match(/data-colorbox="true"/)
451
- end
452
- end
453
-
454
- context 'with full screen video URLs', :vcr do
455
- subject { VideoInfo.new('http://www.youtube.com/v/mZqGqE0D0n4') }
456
-
457
- describe '#provider' do
458
- subject { super().provider }
459
- it { is_expected.to eq 'YouTube' }
460
- end
461
-
462
- describe '#video_id' do
463
- subject { super().video_id }
464
- it { is_expected.to eq 'mZqGqE0D0n4' }
465
- end
466
-
467
- describe '#url' do
468
- subject { super().url }
469
- it { is_expected.to eq 'http://www.youtube.com/v/mZqGqE0D0n4' }
470
- end
471
-
472
- describe '#embed_url' do
473
- subject { super().embed_url }
474
- it { is_expected.to eq '//www.youtube.com/embed/mZqGqE0D0n4' }
475
- end
476
-
477
- describe '#embed_code' do
478
- subject { super().embed_code }
479
- embed_code = '<iframe src="//www.youtube.com/embed/mZqGqE0D0n4" ' \
480
- 'frameborder="0" allowfullscreen="allowfullscreen">' \
481
- '</iframe>'
482
- it { is_expected.to eq embed_code }
483
- end
484
-
485
- describe '#title' do
486
- subject { super().title }
487
- it { is_expected.to eq 'Cherry Bloom - King Of The Knife' }
488
- end
489
-
490
- describe '#description' do
491
- subject { super().description }
492
- description = 'The first video from the upcoming album Secret Sounds,' \
493
- ' to download in-stores April 14. ' \
494
- 'Checkout http://www.cherrybloom.net'
495
- it { is_expected.to eq description }
496
- end
497
-
498
- describe '#keywords' do
499
- subject { super().keywords }
500
- keywords_list = %w(cherry bloom king of the knife guitar
501
- drum clip rock alternative tremplin Paris-Forum)
502
- it { is_expected.to eq keywords_list }
503
- end
504
-
505
- describe '#duration' do
506
- subject { super().duration }
507
- it { is_expected.to eq 176 }
508
- end
509
-
510
- describe '#width' do
511
- subject { super().width }
512
- it { is_expected.to be_nil }
513
- end
514
-
515
- describe '#height' do
516
- subject { super().height }
517
- it { is_expected.to be_nil }
518
- end
519
-
520
- describe '#date' do
521
- subject { super().date }
522
-
523
- it 'should return date video was posted' do
524
- if api_key.nil?
525
- is_expected.to eq Time.parse('Sat Apr 12 2008', Time.now.utc)
526
- else
527
- is_expected.to eq Time.parse('Sat Apr 12 22:25:35 UTC 2008',
528
- Time.now.utc)
529
- end
530
- end
531
- end
532
-
533
- describe '#thumbnail_small' do
534
- subject { super().thumbnail_small }
535
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/default.jpg'
536
- it { is_expected.to eq thumbnail_url }
537
- end
538
-
539
- describe '#thumbnail_medium' do
540
- subject { super().thumbnail_medium }
541
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/mqdefault.jpg'
542
- it { is_expected.to eq thumbnail_url }
543
- end
544
-
545
- describe '#thumbnail_large' do
546
- subject { super().thumbnail_large }
547
- thumbnail_url = 'https://i.ytimg.com/vi/mZqGqE0D0n4/hqdefault.jpg'
548
- it { is_expected.to eq thumbnail_url }
549
- end
550
-
551
- describe '#view_count' do
552
- subject { super().view_count }
553
- it { is_expected.to be > 4000 }
554
- end
555
- end
556
- end
557
- end