def setup_function(): Account.clear_cache() Comment.clear_cache() Location.clear_cache() Media.clear_cache() Story.clear_cache() Tag.clear_cache()
def test_update_photo_set(login, password, shortcode): agent = AgentAccount(login, password) photo_set = Media(shortcode) data = agent.update(photo_set) assert (not photo_set.is_video) Media.clear_cache()
def test_like_unlike_video(login, password, shortcode): agent = AgentAccount(login, password) video = Media(shortcode) assert (agent.like(video)) assert (agent.unlike(video)) Account.clear_cache() Media.clear_cache()
def test_update_video(shortcode): anon = Agent() video = Media(shortcode) data = anon.update(video) assert (video.is_video) Media.clear_cache()
def setup_function(): Account.clear_cache() Media.clear_cache() Location.clear_cache() Tag.clear_cache() if not anon["global_delay"] is None: min_delay = anon["global_delay"].get("min", 0) max_delay = anon["global_delay"].get("max", 120) sleep(random() * (max_delay - min_delay) + min_delay)
def test_update_video(login, password, shortcode): agent = AgentAccount(login, password) video = Media(shortcode) data = agent.update(video) assert (video.is_video) Media.clear_cache()
def test_update_photo_set(shortcode): anon = Agent() photo_set = Media(shortcode) data = anon.update(photo_set) assert (not photo_set.is_video) Media.clear_cache()
def test_like_unlike_photo_set(login, password, shortcode): agent = AgentAccount(login, password) photo_set = Media(shortcode) assert (agent.like(photo_set)) assert (agent.unlike(photo_set)) Account.clear_cache() Media.clear_cache()
def test_get_likes(shortcode): anon = Agent() media = Media(shortcode) data, pointer = anon.get_likes(media) assert (media.likes_count >= len(data)) Media.clear_cache()
def test_get_likes_long(login, password, count, shortcode): agent = AgentAccount(login, password) media = Media(shortcode) data, pointer = agent.get_likes(media, count=count) assert (min(media.likes_count, count) == len(data)) assert ((pointer is None) == (media.likes_count <= count)) Media.clear_cache()
def test_comment(login, password, shortcode): agent = AgentAccount(login, password) media = Media(shortcode) comment = agent.add_comment(media, "test") agent.delete_comment(comment) Account.clear_cache() Media.clear_cache() Comment.clear_cache()
def test_get_comments_long(count, shortcode): anon = Agent() media = Media(shortcode) data, pointer = anon.get_comments(media, count=count) assert (min(media.comments_count, count) == len(data)) assert ((pointer is None) == (media.likes_count <= count)) Media.clear_cache()
def get_posts_by_tag_name(tagname, num=None, path=None): agent = Agent() agent.update(Tag(tagname)) tag = Tag(tagname) media = set() pointer = None if num == None: media_count = tag.media_count else: media_count = num limit = 50 batch_num = math.ceil(media_count / limit) for i in range(batch_num): if i == batch_num - 1: count = media_count - limit * (batch_num - 1) batch_media, pointer = agent.get_media(tag, pointer=pointer, count=count) else: batch_media, pointer = agent.get_media(tag, pointer=pointer, count=limit) for j, item in enumerate(batch_media): print("Getting media: " + str(i * 50 + j + 1) + " / " + str(media_count)) agent.update(Media(item.code)) media.add(Media(item.code)) media_posts = {} for i, item in enumerate(media): post_info = copy.copy(item) post_info.likes = dict(post_info.likes) post_info.comments = dict(post_info.comments) post_info.location = str(post_info.location) media_posts[i] = post_info.__dict__ media_dict = {"posts": media_posts} media_json = json.dumps(media_dict, indent=2) print(media_json) if path == None: path = './data/tag__' + tagname pathlib.Path(path).mkdir(parents=True, exist_ok=True) filename = path + '/tag__' + tagname + '__last_posts.json' with open(filename, 'w', newline='', encoding='utf8') as f: f.write(media_json) return media
def test_get_media_location_long(login, password, count, id): agent = AgentAccount(login, password) location = Location(id) data, pointer = agent.get_media(location, count=count) assert (min(location.media_count, count) == len(data)) assert ((pointer is None) == (location.media_count <= count)) Location.clear_cache() Media.clear_cache()
def test_get_media_account_long(login, password, count, username): agent = AgentAccount(login, password) account = Account(username) data, pointer = agent.get_media(account, count=count) assert (min(account.media_count, count) == len(data)) assert ((pointer is None) == (account.media_count <= count)) Account.clear_cache() Media.clear_cache()
def test_get_media_tag_long(count, name): anon = Agent() tag = Tag(name) data, pointer = anon.get_media(tag, count=count) assert (min(tag.media_count, count) == len(data)) assert ((pointer is None) == (tag.media_count <= count)) Tag.clear_cache() Media.clear_cache()
def test_get_media_location_long(count, id): anon = Agent() location = Location(id) data, pointer = anon.get_media(location, count=count) assert (min(location.media_count, count) == len(data)) assert ((pointer is None) == (location.media_count <= count)) Location.clear_cache() Media.clear_cache()
def test_get_media_account(count, username): anon = Agent() account = Account(username) data, pointer = anon.get_media(account, count=count) assert (min(account.media_count, count) == len(data)) assert ((pointer is None) == (account.media_count <= count)) Account.clear_cache() Media.clear_cache()
def test_clear_cache_comment(): account = Account("test") media = Media("test") comment = Comment(1488, media=media, owner=account, text="test", created_at=0) Media.clear_cache() Comment.clear_cache() assert(Comment._cache == dict()) assert(Media._cache == dict())
def test_get_feed_pointer(login, password, count): agent = AgentAccount(login, password) pointer = None data = [] for i in range(count): tmp, pointer = agent.feed(pointer=pointer) data.extend(tmp) Account.clear_cache() Media.clear_cache()
def test_get_media_tag_long(login, password, count, name): agent = AgentAccount(login, password) tag = Tag(name) data, pointer = agent.get_media(tag, count=count) assert (min(tag.media_count, count) == len(data)) assert ((pointer is None) == (tag.media_count <= count)) Tag.clear_cache() Media.clear_cache()
def test_get_comments_pointer(count, shortcode): anon = Agent() media = Media(shortcode) pointer = None data = [] for i in range(count): tmp, pointer = anon.get_comments(media, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (media.likes_count <= count)) Media.clear_cache()
def feed(self, pointer=None, count=12, settings={}, limit=50): if not isinstance(settings, dict): raise TypeError("'settings' must be dict type") if not isinstance(count, int): raise TypeError("'count' must be int type") if not isinstance(limit, int): raise TypeError("'limit' must be int type") variables_string = '{{"fetch_media_item_count":{first},"fetch_media_item_cursor":"{after}",\ "fetch_comment_count":4,"fetch_like":10,"has_stories":false}}' feed = [] while True: response = self._graphql_request( query_hash="485c25657308f08317c1e4b967356828", variables=variables_string.format( after=pointer, first=min(limit, count), ) if pointer else "{}", settings=settings, ) try: data = response.json( )["data"]["user"]["edge_web_feed_timeline"] edges = data["edges"] page_info = data["page_info"] length = len(edges) for index in range(min(length, count)): node = edges[index]["node"] if not "shortcode" in node: length -= 1 continue m = Media(node["shortcode"]) m._set_data(node) feed.append(m) if page_info["has_next_page"]: pointer = page_info["end_cursor"] else: pointer = None if length < count and page_info["has_next_page"]: count = count - length else: return feed, pointer except (ValueError, KeyError) as exception: raise UnexpectedResponse(exception, response.url, response.text)
def test_get_media_location_pointer(count, id): anon = Agent() location = Location(id) pointer = None data = [] for i in range(count): tmp, pointer = anon.get_media(location, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (location.media_count <= count)) Location.clear_cache() Media.clear_cache()
def test_get_media_tag_pointer(count, name): anon = Agent() tag = Tag(name) pointer = None data = [] for i in range(count): tmp, pointer = anon.get_media(tag, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (tag.media_count <= count)) Tag.clear_cache() Media.clear_cache()
def test_get_media_account_pointer(login, password, count, username): agent = AgentAccount(login, password) account = Account(username) pointer = None data = [] for i in range(count): tmp, pointer = agent.get_media(account, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (account.media_count <= count)) Account.clear_cache() Media.clear_cache()
def test_get_likes_pointer(login, password, count, shortcode): agent = AgentAccount(login, password) media = Media(username) pointer = None data = [] for i in range(count): tmp, pointer = agent.get_likes(media, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (media.likes_count <= count)) Account.clear_cache() Media.clear_cache()
def test_get_media_location_pointer(login, password, count, id): agent = AgentAccount(login, password) location = Location(id) pointer = None data = [] for i in range(count): tmp, pointer = agent.get_media(location, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (location.media_count <= count)) Account.clear_cache() Media.clear_cache() Location.clear_cache()
def test_get_media_tag_pointer(login, password, count, name): agent = AgentAccount(login, password) tag = Tag(name) pointer = None data = [] for i in range(count): tmp, pointer = agent.get_media(tag, pointer=pointer) data.extend(tmp) assert ((pointer is None) == (tag.media_count <= count)) Account.clear_cache() Media.clear_cache() Tag.clear_cache()
def test_get_comments(agent, delay, settings, count, shortcode): media = Media(shortcode) data, pointer = agent.get_comments(media, count=count, delay=delay, settings=settings) assert min(media.comments_count, count) == len(data) assert (pointer is None) == (media.comments_count <= count)