def get_starred_bookmarks():
    resp = get(STARRED_BOOKMARKS + "/50", session_needed=True)
    _json = json.loads(resp.content)

    bookmarks = []
    for data in _json:
        bm = Bookmark.from_json(data)
        bookmarks.append(bm)

    return bookmarks
示例#2
0
def get_bookmarks_by_date(date=None):
    _payload = {"with_context": True, "with_title": True}
    if date:
        _date_string = date.strftime('%Y-%m-%dT%H:%M:%S')
        _payload["after_date"] = _date_string

    resp = post(BOOKMARKS_BY_DATE, payload=_payload, session_needed=True)
    _json = json.loads(resp.content)

    sorted_dates = []
    urls_for_date = {}
    contexts_for_url = {}
    bookmarks_for_context = {}
    bookmark_counts_by_date = {}
    article_ids_for_urls = {}

    for data in _json:
        each_date = datetime.datetime.strptime(data["date"], "%A, %d %B %Y")
        sorted_dates.append(each_date)

        urls_for_date.setdefault(each_date, [])

        for bookmark_json in data["bookmarks"]:
            # try:

            each_bookmark = Bookmark.from_json(bookmark_json)
            each_bookmark.set_date(each_date)
            each_context = each_bookmark.context

            if each_bookmark.url not in urls_for_date[each_date]:
                urls_for_date[each_date].append(each_bookmark.url)

            contexts_for_url.setdefault(each_bookmark.url, [])
            if not each_context in contexts_for_url.get(each_bookmark.url):
                contexts_for_url[each_bookmark.url].append(each_context)

            bookmarks_for_context.setdefault(each_context, [])
            bookmarks_for_context[each_context].append(each_bookmark)

            article_ids_for_urls[each_bookmark.url] = each_bookmark.article_id

        # except Exception:
        #     print("Parsing bookmark failed")

        bookmark_counts_by_date.setdefault(each_date,
                                           set()).add(len(data["bookmarks"]))

    return {
        "sorted_dates": sorted_dates,
        "urls_for_date": urls_for_date,
        "contexts_for_url": contexts_for_url,
        "bookmarks_for_context": bookmarks_for_context,
        "bookmark_counts_by_date": bookmark_counts_by_date,
        "article_ids_for_urls": article_ids_for_urls
    }
示例#3
0
def get_bookmarks_for_article(article_id: int, user_id: int = None):
    _payload = {"with_context": True, "with_title": True}

    if user_id:
        resp = post(BOOKMARKS_FOR_ARTICLE + f'{article_id}/{user_id}',
                    payload=_payload,
                    session_needed=True)
    else:
        resp = post(BOOKMARKS_FOR_ARTICLE + f'{article_id}',
                    payload=_payload,
                    session_needed=True)

    _json = json.loads(resp.content)
    print(_json)

    bookmarks = [Bookmark.from_json(each) for each in _json['bookmarks']]

    dates = []

    contexts_for_date = OrderedDict()
    bookmarks_for_context = {}

    for each in bookmarks:

        if each.date not in dates:
            dates.append(each.date)

        if each.date not in contexts_for_date:
            contexts_for_date[each.date] = []

        if each.context not in contexts_for_date[each.date]:
            contexts_for_date[each.date].append(each.context)

        if each.context not in bookmarks_for_context:
            bookmarks_for_context[each.context] = []

        bookmarks_for_context[each.context].append(each)

    return {
        "sorted_dates": dates[::-1],
        "contexts_for_date": contexts_for_date,
        "bookmarks_for_context": bookmarks_for_context,
        "article_title": _json['article_title'],
        "article_id": article_id
    }