class Test(unittest.TestCase): def setUp(self): self.cookie_jar = CookieJar() self.opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(self.cookie_jar)) self.u = VplayUrls() self.r = VplayRegex() # login self.opener.open(self.u.get_login_url(), self.u.get_login_params(USERNAME, PASSWORD)) def test_base_url(self): response = self.opener.open(self.u.get_base_url()) username = self.r.get_username(response.read()) self.assertEqual(username, USERNAME) def test_tv_show_pagination(self): page = random.randint(2, 100) # I assume there are more than 100 pages response = self.opener.open(self.u.get_tv_shows_url(page)) print "TEST SHOW PAGE %s" % page data = response.read() username = self.r.get_username(data) self.assertEqual(username, USERNAME) tv_shows = list(self.r.get_tv_shows(data)) self.assertTrue(tv_shows) for tv_show in tv_shows: print "%s" % tv_show self.assertEqual(len(tv_shows), TV_SHOWS_PER_PAGE) # Pagination currently is set to 15 def test_tv_show_search(self): print "TEST TV SHOW SEARCH" page = random.randint(2, 10) query = "Seinfeld" response = self.opener.open(self.u.get_tv_shows_url(page, query)) data = response.read() username = self.r.get_username(data) self.assertEqual(username, USERNAME) tv_shows = list(self.r.get_tv_shows(data)) self.assertTrue(tv_shows) for tv_show in tv_shows: print "%s" % tv_show def test_tv_shows(self): # choose a random tv show page response = self.opener.open(self.u.get_tv_shows_url(random.randint(1, 100))) data = response.read() tv_shows = list(self.r.get_tv_shows(data)) self.assertTrue(tv_shows) # choose a random tv show tv_show = tv_shows[random.randint(0, len(tv_shows) - 1)] print "TV Show: %s" % tv_show self.assertIn("path", tv_show) self.assertIn("title", tv_show) self.assertIn("image", tv_show) response = self.opener.open(self.u.get_tv_seasons_url(tv_show["path"])) data = response.read() tv_seasons = list(self.r.get_tv_seasons(data)) self.assertTrue(tv_seasons) # Select a random season tv_season = tv_seasons[random.randint(0, len(tv_seasons) - 1)] print "Random TV Season: %s" % tv_season self.assertIn("path", tv_season) self.assertIn("title", tv_season) response = self.opener.open(self.u.get_tv_seasons_url(tv_season["path"])) data = response.read() tv_episodes = list(self.r.get_tv_episodes(data)) self.assertTrue(tv_episodes) # Select a random episode tv_episode = tv_episodes[random.randint(0, len(tv_episodes) - 1)] print "Random TV Episode: %s" % tv_episode self.assertIn("path", tv_episode) self.assertIn("full_title", tv_episode) self.assertIn("image", tv_episode) self.assertIn("title", tv_episode) self.assertIn("watched", tv_episode) episode_url = self.u.get_tv_episode_url(tv_episode["path"]) episode_key = self.r.get_tv_episode_key(episode_url) self.assertTrue(episode_key) response = self.opener.open(self.u.get_dino_url(), self.u.get_dino_params(episode_key)) data = response.read() self.assertTrue(data, "Empty response from dino") dino = self.r.get_dino(data) self.assertIn("url", dino) self.assertIn("thumb", dino) self.assertIn("subs", dino) # Test subtitles if present if dino["subs"]: languages = json.loads(dino["subs"]) selected_lang = languages[0] print "Subtitle in %s" % selected_lang response = self.opener.open(self.u.get_subs_url(), self.u.get_subs_params(episode_key, selected_lang)) data = response.read() sub_data = self.r.get_sub(data) self.assertTrue(sub_data) # Check if data can be decoded sub_json = json.loads(sub_data) def test_hdvideos(self): page = random.randint(1, 50) response = self.opener.open(self.u.get_hdvideos_url(page)) data = response.read() videos = list(self.r.get_videos(data)) self.assertTrue(videos) # select random video video = videos[random.randint(0, len(videos) - 1)] print "Video: %s" % video self.assertIn("path", video) self.assertIn("duration", video) self.assertIn("image", video) self.assertIn("title", video) def test_video_search(self): page = random.randint(1, 10) query = "funny" response = self.opener.open(self.u.get_search_url(query, page)) data = response.read() videos = list(self.r.get_videos(data)) print "Videos: %s" % ("\n".join(["%s" % v for v in videos])) self.assertTrue(videos) print "Searching for .. found %d videos on page %d" % (len(videos), page) self.assertEqual(len(videos), SEARCH_RESULTS_PER_PAGE) # Select random video video = videos[random.randint(0, len(videos) - 1)] print "Video: %s" % video self.assertIn("path", video) self.assertIn("duration", video) self.assertIn("image", video) self.assertIn("title", video) def test_top50_videos(self): response = self.opener.open(self.u.get_top50_url()) data = response.read() videos = list(self.r.get_top50_videos(data)) print "Videos: %s" % ("\n".join(["%s" % v for v in videos])) self.assertTrue(videos) self.assertEqual(len(videos), 50) # Choose random video video = videos[random.randint(0, len(videos) - 1)] self.assertIn("path", video) self.assertIn("image", video) self.assertIn("title", video)