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,56 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=AIzaSyA6PYwSr1EnLFUFy1cZDk3Ifb0rxeJaeZ0&part=snippet&playlistId=PL0E8117603D70E10A
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.6.0
12
- Accept-Encoding:
13
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
- Accept:
15
- - "*/*"
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Expires:
22
- - Thu, 05 May 2016 01:01:55 GMT
23
- Date:
24
- - Thu, 05 May 2016 01:01:55 GMT
25
- Cache-Control:
26
- - private, max-age=0, must-revalidate, no-transform
27
- Etag:
28
- - '"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/ewwRz0VbTYpp2EGbOkvZ5M_1mbo"'
29
- Vary:
30
- - Origin
31
- - X-Origin
32
- Content-Type:
33
- - application/json; charset=UTF-8
34
- X-Content-Type-Options:
35
- - nosniff
36
- X-Frame-Options:
37
- - SAMEORIGIN
38
- X-Xss-Protection:
39
- - 1; mode=block
40
- Content-Length:
41
- - '17'
42
- Server:
43
- - GSE
44
- Alternate-Protocol:
45
- - 443:quic
46
- Alt-Svc:
47
- - quic=":443"; ma=2592000; v="33,32,31,30,29,28,27,26,25"
48
- body:
49
- encoding: UTF-8
50
- string: |
51
- {
52
- "items": []
53
- }
54
- http_version:
55
- recorded_at: Thu, 05 May 2016 01:01:55 GMT
56
- recorded_with: VCR 3.0.1
@@ -1,56 +0,0 @@
1
- ---
2
- http_interactions:
3
- - request:
4
- method: get
5
- uri: https://www.googleapis.com/youtube/v3/playlistItems?fields=items&key=AIzaSyA6PYwSr1EnLFUFy1cZDk3Ifb0rxeJaeZ0&part=snippet&playlistId=PL0E8117603D70E10A
6
- body:
7
- encoding: US-ASCII
8
- string: ''
9
- headers:
10
- User-Agent:
11
- - VideoInfo/2.6.0
12
- Accept-Encoding:
13
- - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
14
- Accept:
15
- - "*/*"
16
- response:
17
- status:
18
- code: 200
19
- message: OK
20
- headers:
21
- Expires:
22
- - Thu, 05 May 2016 01:01:57 GMT
23
- Date:
24
- - Thu, 05 May 2016 01:01:57 GMT
25
- Cache-Control:
26
- - private, max-age=0, must-revalidate, no-transform
27
- Etag:
28
- - '"kiOs9cZLH2FUp6r6KJ8eyq_LIOk/ewwRz0VbTYpp2EGbOkvZ5M_1mbo"'
29
- Vary:
30
- - Origin
31
- - X-Origin
32
- Content-Type:
33
- - application/json; charset=UTF-8
34
- X-Content-Type-Options:
35
- - nosniff
36
- X-Frame-Options:
37
- - SAMEORIGIN
38
- X-Xss-Protection:
39
- - 1; mode=block
40
- Content-Length:
41
- - '17'
42
- Server:
43
- - GSE
44
- Alternate-Protocol:
45
- - 443:quic
46
- Alt-Svc:
47
- - quic=":443"; ma=2592000; v="33,32,31,30,29,28,27,26,25"
48
- body:
49
- encoding: UTF-8
50
- string: |
51
- {
52
- "items": []
53
- }
54
- http_version:
55
- recorded_at: Thu, 05 May 2016 01:01:57 GMT
56
- recorded_with: VCR 3.0.1
@@ -1,80 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe VideoInfo::Provider do
4
- class ProviderFu < VideoInfo::Provider
5
- def _url_regex
6
- %r{foo\/(\d)}
7
- end
8
-
9
- def embed_url
10
- '//foo.com'
11
- end
12
-
13
- def _default_url_attributes; {} end
14
-
15
- def _default_iframe_attributes; {} end
16
- end
17
- let(:url) { 'url' }
18
- let(:options) { {} }
19
- let(:provider) { ProviderFu.new('foo/1', options) }
20
-
21
- describe 'initialize' do
22
- it 'should raise error if #_url_regex is not implemented' do
23
- error_msg = 'Provider class must implement #_url_regex private method'
24
- expected = expect { VideoInfo::Provider.new(url) }
25
- expected.to raise_error(NotImplementedError, error_msg)
26
- end
27
-
28
- it 'should raise error if #_api_url is not implemented' do
29
- api_url_error_msg = 'Provider class must implement ' \
30
- '#_api_url private method'
31
- expected = expect { provider.data }
32
- expected.to raise_error(NotImplementedError, api_url_error_msg)
33
- end
34
-
35
- it 'sets default user_agent options' do
36
- user_agent_hash = { 'User-Agent' => "VideoInfo/#{VideoInfo::VERSION}" }
37
- expect(provider.options).to eq(user_agent_hash)
38
- end
39
-
40
- context 'with custom User-Agent options' do
41
- let(:options) { { 'User-Agent' => 'Test User Agent / 1.0' } }
42
-
43
- it 'sets the option' do
44
- expect(provider.options).to eq('User-Agent' => 'Test User Agent / 1.0')
45
- end
46
- end
47
-
48
- context 'with Referer options' do
49
- let(:options) { { referer: 'http://google.com' } }
50
-
51
- it 'sets the option' do
52
- expect(provider.options).to include('Referer' => 'http://google.com')
53
- end
54
- end
55
- end
56
-
57
- describe 'embed_code' do
58
- it 'supports url_attributes option' do
59
- embed_str = '<iframe src="//foo.com?foo=bar" frameborder="0"></iframe>'
60
- expected = expect(provider.embed_code(url_attributes: { foo: 'bar' }))
61
- expected.to eq embed_str
62
- end
63
-
64
- it 'supports url_attributes option' do
65
- embed_str = '<iframe src="//foo.com" frameborder="0" foo="bar"></iframe>'
66
- expected = expect(provider.embed_code(iframe_attributes: { foo: 'bar' }))
67
- expected.to eq embed_str
68
- end
69
- end
70
-
71
- describe '.usable?' do
72
- it 'should raise eror if not usable' do
73
- error_msg = 'Provider class must implement .usable? public method'
74
- expected = expect do
75
- VideoInfo::Provider.usable?('url')
76
- end
77
- expected.to raise_error(NotImplementedError, error_msg)
78
- end
79
- end
80
- end
@@ -1,174 +0,0 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
-
4
- describe VideoInfo::Providers::Dailymotion do
5
- describe '.usable?' do
6
- subject { VideoInfo::Providers::Dailymotion.usable?(url) }
7
-
8
- context 'with dailymotion url' do
9
- let(:url) { 'http://www.dailymotion.com/video/x7lni3' }
10
- it { is_expected.to be_truthy }
11
- end
12
-
13
- context 'with dai.ly url' do
14
- let(:url) { 'http://dai.ly/video/x7lni3' }
15
- it { is_expected.to be_truthy }
16
- end
17
-
18
- context 'with other url' do
19
- let(:url) { 'http://www.youtube.com/x7lni3' }
20
- it { is_expected.to be_falsey }
21
- end
22
- end
23
-
24
- describe '#available?' do
25
- context 'with valid video', :vcr do
26
- subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
27
-
28
- describe '#available?' do
29
- subject { super().available? }
30
- it { is_expected.to be_truthy }
31
- end
32
- end
33
-
34
- context 'with invalid video url', :vcr do
35
- subject { VideoInfo.new('http://www.dailymotion.com/video/inValIdiD') }
36
-
37
- describe '#available?' do
38
- subject { super().available? }
39
- it { is_expected.to be_falsey }
40
- end
41
- end
42
- end
43
-
44
- context 'with video x7lni3', :vcr do
45
- subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
46
-
47
- describe '#provider' do
48
- subject { super().provider }
49
- it { is_expected.to eq 'Dailymotion' }
50
- end
51
-
52
- describe '#video_id' do
53
- subject { super().video_id }
54
- it { is_expected.to eq 'x7lni3' }
55
- end
56
-
57
- describe '#url' do
58
- subject { super().url }
59
- it { is_expected.to eq 'http://www.dailymotion.com/video/x7lni3' }
60
- end
61
-
62
- describe '#embed_url' do
63
- subject { super().embed_url }
64
- it { is_expected.to eq '//www.dailymotion.com/embed/video/x7lni3' }
65
- end
66
-
67
- describe '#embed_code' do
68
- subject { super().embed_code }
69
- embed_code = '<iframe src="//www.dailymotion.com/embed/video/x7lni3?' \
70
- 'autoplay=0" frameborder="0"></iframe>'
71
- it { is_expected.to eq embed_code }
72
- end
73
-
74
- describe '#title' do
75
- subject { super().title }
76
- it { is_expected.to eq 'Mario Kart (Rémi Gaillard)' }
77
- end
78
-
79
- describe '#description' do
80
- subject { super().description }
81
- description_text = 'Super Rémi Kart est un jeu vidéo de course ' \
82
- 'développé et édité par N\'Importe Quoi TV. ' \
83
- 'Sa principale originalité vient de sa réalité' \
84
- '...<br />L\'aventure continue sur www.nimportequi.com'
85
- it { is_expected.to eq description_text }
86
- end
87
-
88
- describe '#keywords' do
89
- subject { super().keywords }
90
- keywords_list = %w(rémi remi gaillard imposteur imposture
91
- mario bros kart nintendo jeux)
92
- it { is_expected.to eq keywords_list }
93
- end
94
-
95
- describe '#duration' do
96
- subject { super().duration }
97
- it { is_expected.to eq 136 }
98
- end
99
-
100
- describe '#width' do
101
- subject { super().width }
102
- it { is_expected.to be_nil }
103
- end
104
-
105
- describe '#height' do
106
- subject { super().height }
107
- it { is_expected.to be_nil }
108
- end
109
-
110
- describe '#date' do
111
- subject { super().date }
112
- it 'should show correct date' do
113
- is_expected.to eq Time.parse('2008-12-03 16:29:31 UTC', Time.now.utc)
114
- end
115
- end
116
-
117
- describe '#thumbnail_small' do
118
- subject { super().thumbnail_small }
119
- it { is_expected.to eq 'http://s2.dmcdn.net/BgWxI/x60-kbf.jpg' }
120
- end
121
-
122
- describe '#thumbnail_medium' do
123
- subject { super().thumbnail_medium }
124
- it { is_expected.to eq 'http://s2.dmcdn.net/BgWxI/x240-b83.jpg' }
125
- end
126
-
127
- describe '#thumbnail_large' do
128
- subject { super().thumbnail_large }
129
- it { is_expected.to eq 'http://s2.dmcdn.net/BgWxI/x720-YcV.jpg' }
130
- end
131
-
132
- describe '#view_count' do
133
- subject { super().view_count }
134
- it { is_expected.to be > 10_000_000 }
135
- end
136
- end
137
-
138
- context 'with video x7lni3 and url_attributes', :vcr do
139
- subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
140
-
141
- it do
142
- embed_code = subject.embed_code(url_attributes: { autoplay: 1 })
143
- expect(embed_code).to match(/autoplay=1/)
144
- end
145
- end
146
-
147
- context 'with video x7lni3 and iframe_attributes', :vcr do
148
- subject { VideoInfo.new('http://www.dailymotion.com/video/x7lni3') }
149
-
150
- it 'should properly apply dimensions attributes' do
151
- dimensions = { width: 800, height: 600 }
152
- embed_code = subject.embed_code(iframe_attributes: dimensions)
153
- expect(embed_code).to match(/width="800"/)
154
- expect(embed_code).to match(/height="600"/)
155
- end
156
- end
157
-
158
- context 'with video x7lni3 in text', :vcr do
159
- url_in_text = '<a href="http://www.dailymotion.com/video/x7lni3">' \
160
- 'http://www.dailymotion.com/video/x7lni3</a>'
161
-
162
- subject { VideoInfo.new(url_in_text) }
163
-
164
- describe '#provider' do
165
- subject { super().provider }
166
- it { is_expected.to eq 'Dailymotion' }
167
- end
168
-
169
- describe '#video_id' do
170
- subject { super().video_id }
171
- it { is_expected.to eq 'x7lni3' }
172
- end
173
- end
174
- end
@@ -1,277 +0,0 @@
1
- require 'spec_helper'
2
-
3
- [nil, '6b66b015a3504793b4f541d878f46ff6'].each do |api_key|
4
- describe VideoInfo::Providers::Vimeo do
5
- before(:all) do
6
- VideoInfo.provider_api_keys = { vimeo: api_key }
7
- end
8
-
9
- describe '.usable?' do
10
- subject { VideoInfo::Providers::Vimeo.usable?(url) }
11
-
12
- context 'with vimeo url' do
13
- let(:url) { 'http://www.vimeo.com/898029' }
14
- it { is_expected.to be_truthy }
15
- end
16
-
17
- context 'with Vimeo OnDemand url' do
18
- let(:url) { 'https://vimeo.com/ondemand/less/101677664' }
19
- it { is_expected.to be_truthy }
20
- end
21
-
22
- context 'with Vimeo Channels url' do
23
- let(:url) { 'https://vimeo.com/channels/any_channel/111431415' }
24
- it { is_expected.to be_truthy }
25
- end
26
-
27
- context 'with Vimeo Review url' do
28
- video_url = 'https://vimeo.com/user39798190/review/126641548/8a56234e32'
29
- let(:url) { video_url }
30
- it { is_expected.to be_truthy }
31
- end
32
-
33
- context 'with vimeo album url' do
34
- let(:url) { 'http://vimeo.com/album/2755718' }
35
- it { is_expected.to be_falsey }
36
- end
37
-
38
- context 'with vimeo hubnub embed url' do
39
- let(:url) { 'http://player.vimeo.com/hubnut/album/2755718' }
40
- it { is_expected.to be_falsey }
41
- end
42
-
43
- context 'with other url' do
44
- let(:url) { 'http://www.youtube.com/898029' }
45
- it { is_expected.to be_falsey }
46
- end
47
- end
48
-
49
- describe '#available?' do
50
- context 'with valid video', :vcr do
51
- subject { VideoInfo.new('http://vimeo.com/98605382') }
52
-
53
- describe '#available?' do
54
- it { is_expected.to be_available }
55
- end
56
- end
57
-
58
- context "with 'this video does not exist' video", :vcr do
59
- subject { VideoInfo.new('http://vimeo.com/59312311') }
60
-
61
- describe '#available?' do
62
- it { is_expected.to_not be_available }
63
- end
64
- end
65
-
66
- context "with 'password required' video", :vcr do
67
- subject { VideoInfo.new('http://vimeo.com/74636562') }
68
-
69
- describe '#available?' do
70
- it { is_expected.to_not be_available }
71
- end
72
- end
73
- end
74
-
75
- context 'with video 136971428', :vcr do
76
- subject { VideoInfo.new('https://vimeo.com/136971428') }
77
-
78
- describe '#provider' do
79
- subject { super().provider }
80
- it { is_expected.to eq 'Vimeo' }
81
- end
82
-
83
- describe '#video_id' do
84
- subject { super().video_id }
85
- it { is_expected.to eq '136971428' }
86
- end
87
-
88
- describe '#url' do
89
- subject { super().url }
90
- it { is_expected.to eq 'https://vimeo.com/136971428' }
91
- end
92
-
93
- describe '#embed_url' do
94
- subject { super().embed_url }
95
- it { is_expected.to eq '//player.vimeo.com/video/136971428' }
96
- end
97
-
98
- describe '#embed_code' do
99
- subject { super().embed_code }
100
- embed_code = '<iframe src="//player.vimeo.com/video/136971428?' \
101
- 'title=0&byline=0&portrait=0&autoplay=0" ' \
102
- 'frameborder="0"></iframe>'
103
- it { is_expected.to eq embed_code }
104
- end
105
-
106
- describe '#title' do
107
- subject { super().title }
108
- it { is_expected.to eq "Deafheaven - 'New Bermuda' Trailer" }
109
- end
110
-
111
- describe '#description' do
112
- subject { super().description }
113
- description = "'New Bermuda,' the upcoming album from Deafheaven, " \
114
- 'is available October 2nd'
115
- it { is_expected.to eq description }
116
- end
117
-
118
- describe '#keywords' do
119
- subject { super().keywords }
120
- it 'should return a string list of keywords' do
121
- keywords_list = []
122
- is_expected.to eq keywords_list
123
- end
124
- end
125
-
126
- describe '#duration' do
127
- subject { super().duration }
128
- it { is_expected.to eq 59 }
129
- end
130
-
131
- describe '#width' do
132
- subject { super().width }
133
- it { is_expected.to eq 1280 }
134
- end
135
-
136
- describe '#height' do
137
- subject { super().height }
138
- it { is_expected.to eq 720 }
139
- end
140
-
141
- describe '#date' do
142
- subject { super().date }
143
- it 'should have correct upload date' do
144
- is_expected.to eq Time.parse('2015-08-21T21:37:43+00:00',
145
- Time.now.utc).utc
146
- end
147
- end
148
-
149
- describe '#thumbnail_small' do
150
- subject { super().thumbnail_small }
151
- thumbnail_url = 'https://i.vimeocdn.com/video/531688239_100x75.jpg'
152
- it { is_expected.to eq thumbnail_url }
153
- end
154
-
155
- describe '#thumbnail_medium' do
156
- subject { super().thumbnail_medium }
157
- thumbnail_url = 'https://i.vimeocdn.com/video/531688239_200x150.jpg'
158
- it { is_expected.to eq thumbnail_url }
159
- end
160
-
161
- describe '#thumbnail_large' do
162
- subject { super().thumbnail_large }
163
- thumbnail_url = 'https://i.vimeocdn.com/video/531688239_640.jpg'
164
- it { is_expected.to eq thumbnail_url }
165
- end
166
-
167
- describe '#author_thumbnail' do
168
- subject { super().author_thumbnail }
169
- thumbnail_url = 'https://i.vimeocdn.com/portrait/327118_75x75.jpg'
170
- it { is_expected.to eq thumbnail_url }
171
- end
172
-
173
- describe '#author' do
174
- subject { super().author }
175
- it { is_expected.to eq 'Anti Records' }
176
- end
177
-
178
- describe '#author_url' do
179
- subject { super().author_url }
180
- it { is_expected.to eq 'https://vimeo.com/antirecords' }
181
- end
182
-
183
- describe '#view_count' do
184
- subject { super().view_count }
185
- it { is_expected.to be > 80 }
186
- end
187
- end
188
-
189
- context 'with video 898029 and url_attributes', :vcr do
190
- subject { VideoInfo.new('http://www.vimeo.com/898029') }
191
-
192
- it 'should add URL attribute' do
193
- attributes = { autoplay: 1 }
194
- embed_code = subject.embed_code(url_attributes: attributes)
195
- expect(embed_code).to match(/autoplay=1/)
196
- end
197
- end
198
-
199
- context 'with video 898029 and iframe_attributes', :vcr do
200
- subject { VideoInfo.new('http://www.vimeo.com/898029') }
201
-
202
- it 'should have proper dimensions' do
203
- dimensions = { width: 800, height: 600 }
204
- embed_code = subject.embed_code(iframe_attributes: dimensions)
205
- expect(embed_code).to match(/width="800"/)
206
- expect(embed_code).to match(/height="600"/)
207
- end
208
- end
209
-
210
- context 'with video 898029 in /group/ url', :vcr do
211
- subject { VideoInfo.new('http://vimeo.com/groups/1234/videos/898029') }
212
-
213
- describe '#provider' do
214
- subject { super().provider }
215
- it { is_expected.to eq 'Vimeo' }
216
- end
217
-
218
- describe '#video_id' do
219
- subject { super().video_id }
220
- it { is_expected.to eq '898029' }
221
- end
222
- end
223
-
224
- context 'with video 898029 in /group/ url', :vcr do
225
- subject { VideoInfo.new('http://player.vimeo.com/video/898029') }
226
-
227
- describe '#provider' do
228
- subject { super().provider }
229
- it { is_expected.to eq 'Vimeo' }
230
- end
231
-
232
- describe '#video_id' do
233
- subject { super().video_id }
234
- it { is_expected.to eq '898029' }
235
- end
236
- end
237
-
238
- context 'with video 898029 in text', :vcr do
239
- video_url_in_text = '<a href="http://www.vimeo.com/898029">' \
240
- 'http://www.vimeo.com/898029</a>'
241
- subject { VideoInfo.new(video_url_in_text) }
242
-
243
- describe '#provider' do
244
- subject { super().provider }
245
- it { is_expected.to eq 'Vimeo' }
246
- end
247
-
248
- describe '#video_id' do
249
- subject { super().video_id }
250
- it { is_expected.to eq '898029' }
251
- end
252
- end
253
-
254
- context 'with video 101677664 in /ondemand/ url', :vcr do
255
- subject { VideoInfo.new('https://vimeo.com/ondemand/less/101677664') }
256
-
257
- its(:provider) { should eq 'Vimeo' }
258
- its(:video_id) { should eq '101677664' }
259
- end
260
-
261
- context 'with video 111431415 in /channels/*/ url', :vcr do
262
- video_url = 'https://vimeo.com/channels/some_channel1/111431415'
263
- subject { VideoInfo.new(video_url) }
264
-
265
- its(:provider) { should eq 'Vimeo' }
266
- its(:video_id) { should eq '111431415' }
267
- end
268
-
269
- context 'with video 126641548 in /user*/review/126641548/* url', :vcr do
270
- video_url = 'http://www.vimeo.com/user39798190/review/126641548/8a56234e32'
271
- subject { VideoInfo.new(video_url) }
272
-
273
- its(:provider) { should eq 'Vimeo' }
274
- its(:video_id) { should eq '126641548' }
275
- end
276
- end
277
- end