def test_extract_media_igtv(self): media_pk = self.api.media_pk_from_url( "https://www.instagram.com/tv/ByYn5ZNlHWf/" ) media = self.api.media_info(media_pk) self.assertIsInstance(media, Media) self.assertTrue(len(media.resources) == 0) self.assertTrue(media.view_count > 200) self.assertTrue(media.comment_count > 10) self.assertTrue(media.like_count > 50) for key, val in { "title": "zr trip, crimea, feb 2017. Edit by @milashensky", "caption_text": "Нашёл на диске неопубликованное в инсте произведение @milashensky", "pk": 2060572297417487775, "video_url": "https://", "thumbnail_url": "https://", "code": "ByYn5ZNlHWf", "media_type": 2, "taken_at": datetime(2019, 6, 6, 22, 22, 6, tzinfo=UTC()), "product_type": "igtv", }.items(): if isinstance(val, str): self.assertTrue(getattr(media, key).startswith(val)) else: self.assertEqual(getattr(media, key), val) for key, val in {"pk": 1903424587, "username": "******"}.items(): self.assertEqual(getattr(media.user, key), val)
def test_extract_media_video(self): media_pk = self.api.media_pk_from_url( "https://www.instagram.com/p/BgRIGUQFltp/" ) media = self.api.media_info(media_pk) self.assertIsInstance(media, Media) self.assertTrue(len(media.resources) == 0) self.assertTrue(media.view_count > 150) self.assertTrue(media.comment_count > 1) self.assertTrue(media.like_count > 40) for key, val in { "caption_text": "Веселья ради\n\n@milashensky #dowhill #skateboarding #foros #crimea", "pk": 1734202949948037993, "code": "BgRIGUQFltp", "video_url": "https://", "thumbnail_url": "https://", "media_type": 2, "taken_at": datetime(2018, 3, 13, 14, 59, 23, tzinfo=UTC()) }.items(): if isinstance(val, str): self.assertTrue(getattr(media, key).startswith(val)) else: self.assertEqual(getattr(media, key), val) for key, val in {"pk": 1903424587, "username": "******"}.items(): self.assertEqual(getattr(media.user, key), val)
def test_media_info_gql(self): media_pk = self.api.media_pk_from_url("https://www.instagram.com/p/BVDOOolFFxg/") m = self.api.media_info_gql(media_pk) self.assertIsInstance(m, Media) media = { 'pk': 1532130876531694688, 'id': '1532130876531694688_1903424587', 'code': 'BVDOOolFFxg', 'taken_at': datetime(2017, 6, 7, 19, 37, 35, tzinfo=UTC()), 'media_type': 1, 'product_type': '', 'thumbnail_url': 'https://...', 'location': None, 'comment_count': 6, 'like_count': 79, 'has_liked': None, 'caption_text': '#creepy #creepyclothing', 'usertags': [], 'video_url': None, 'view_count': 0, 'video_duration': 0.0, 'title': '', 'resources': [] } self.assertDict(m.dict(), media) user = { 'pk': 1903424587, 'username': '******', 'full_name': 'Mikhail Andreev', 'profile_pic_url': 'https://...', } self.assertDict(m.user.dict(), user)
def test_extract_media_album(self): media_pk = self.api.media_pk_from_url( 'https://www.instagram.com/p/BjNLpA1AhXM/') media = self.api.media_info(media_pk) self.assertIsInstance(media, Media) self.assertTrue(len(media.resources) == 3) video_resource = media.resources[0] photo_resource = media.resources.pop() self.assertTrue(media.view_count == 0) self.assertTrue(media.comment_count == 0) self.assertTrue(media.like_count > 40) for key, val in { "caption_text": "@mind__flowers в Форосе под дождём, 24 мая 2018 #downhill " "#skateboarding #downhillskateboarding #crimea #foros #rememberwheels", "pk": 1787135824035452364, "code": "BjNLpA1AhXM", "media_type": 8, "taken_at": datetime(2018, 5, 25, 15, 46, 53, tzinfo=UTC()), "product_type": "", }.items(): self.assertEqual(getattr(media, key), val) for key, val in {"pk": 1903424587, "username": "******"}.items(): self.assertEqual(getattr(media.user, key), val) for key, val in { "video_url": "https://", "thumbnail_url": "https://", "media_type": 2, "pk": 1787135361353462176, }.items(): if isinstance(val, str): self.assertTrue(getattr(video_resource, key).startswith(val)) else: self.assertEqual(getattr(video_resource, key), val) for key, val in { "video_url": None, "thumbnail_url": "https://", "media_type": 1, "pk": 1787133803186894424, }.items(): if isinstance(val, str): self.assertTrue(getattr(photo_resource, key).startswith(val)) else: self.assertEqual(getattr(photo_resource, key), val)
def test_media_comment(self): text = "Test text [%s]" % datetime.now().strftime("%s") now = datetime.now(tz=UTC()) comment = self.api.media_comment(2276404890775267248, text) self.assertIsInstance(comment, Comment) comment = comment.dict() for key, val in { "text": text, "content_type": "comment", "status": "Active" }.items(): self.assertEqual(comment[key], val) self.assertIn("pk", comment) self.assertTrue(comment["created_at_utc"] >= now) user_fields = comment['user'].keys() for field in ["pk", "username", "full_name", "profile_pic_url"]: self.assertIn(field, user_fields)
def test_extract_media_photo(self): media_pk = self.api.media_pk_from_url( "https://www.instagram.com/p/B3mr1-OlWMG/") media = self.api.media_info(media_pk) self.assertIsInstance(media, Media) self.assertTrue(len(media.resources) == 0) self.assertTrue(media.comment_count > 5) self.assertTrue(media.like_count > 80) for key, val in { "caption_text": "В гостях у ДК @delai_krasivo_kaifui", "thumbnail_url": "https://", "pk": 2154602296692269830, "code": "B3mr1-OlWMG", "media_type": 1, "taken_at": datetime(2019, 10, 14, 15, 57, 10, tzinfo=UTC()) }.items(): if isinstance(val, str): self.assertTrue(getattr(media, key).startswith(val)) else: self.assertEqual(getattr(media, key), val) for key, val in {"pk": 1903424587, "username": "******"}.items(): self.assertEqual(getattr(media.user, key), val)