Esempio n. 1
0
def setup_function():
    Account.clear_cache()
    Comment.clear_cache()
    Location.clear_cache()
    Media.clear_cache()
    Story.clear_cache()
    Tag.clear_cache()
Esempio n. 2
0
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()
Esempio n. 3
0
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()
Esempio n. 4
0
def test_update_video(shortcode):
    anon = Agent()
    video = Media(shortcode)

    data = anon.update(video)

    assert (video.is_video)

    Media.clear_cache()
Esempio n. 5
0
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)
Esempio n. 6
0
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()
Esempio n. 7
0
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()
Esempio n. 8
0
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()
Esempio n. 9
0
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()
Esempio n. 10
0
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()
Esempio n. 11
0
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()
Esempio n. 12
0
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()
Esempio n. 13
0
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
Esempio n. 14
0
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()
Esempio n. 15
0
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()
Esempio n. 16
0
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()
Esempio n. 17
0
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()
Esempio n. 18
0
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()
Esempio n. 19
0
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())
Esempio n. 20
0
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()
Esempio n. 21
0
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()
Esempio n. 22
0
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()
Esempio n. 23
0
    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)
Esempio n. 24
0
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()
Esempio n. 25
0
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()
Esempio n. 26
0
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()
Esempio n. 27
0
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()
Esempio n. 28
0
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()
Esempio n. 29
0
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()
Esempio n. 30
0
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)