Skip to content

Derfirm/coub_api

Repository files navigation

Api-wrapper for coub.com

Build Status Coverage Status pypi version Codestyle: Black code quality badge

Key Features

  • response are fully-annotated with pydantic
  • test work on snapshots from real http-answers (can easy inspect responses)
  • own OAuth2-server

Getting started

Initiate Api client

import os
from coub_api import CoubApi

api = CoubApi()
os.environ.get("coub_access_token")
api.authenticate(access_token)  # required for some authenticated requests

Get coub details

coub = api.coubs.get_coub("1jf5v1")
print(coub.id, coub.channel_id)

Create Coub

api.coubs.init_upload()) # {"permalink":"1jik0b","id":93927327}
api.coubs.upload_video(93927327, "video.mp4")
api.coubs.upload_audio(93927327, "audio.mp3"))
api.coubs.finalize_upload(93927327, title="Awesome CAT", tags=["cat", "animal"]))
api.coubs.get_upload_status(93927327))  # {"done": False, "percent_done": 0}
# wait a minute
api.coubs.get_upload_status(93927327))  # {"done": True, "percent_done": 100}

Get weekly hot coubs

from coub_api.schemas.constants import Period

api.timeline.hot(period=Period.WEEKLY, order_by="likes_count")

Get 5 page of random section with cars

from coub_api.schemas.constants import Section, Category

current_page = 1
max_page = 5
while current_page <= max_page:
    response = api.timeline.section(section=Section.RANDOM, category=Category.CARS, page=current_page)
    print(f"processing {current_page} of {max_page}")
    for coub in response.coubs:
        print(coub.permalink)
    current_page += 1
    max_page = min(max_page, response.total_pages)

OAuth2-Server

How to use:

  • Create Your Own application
  • Run server
coub-oauth2-server
  • Enter Your Application Id and Secret and grant access the Coub server.
  • Copy access token and start use it!