Giter VIP home page Giter VIP logo

analytix's Introduction

analytix

PyPi version PyPI - Status Downloads GitHub last commit License

CI Read the Docs Maintainability Test Coverage

A simple yet powerful wrapper for the YouTube Analytics API.

CPython versions 3.7 through 3.11-dev and PyPy versions 3.7 through 3.9 are officially supported.

Windows, MacOS, and Linux are all supported.

Features

  • Pythonic syntax lets you feel right at home
  • Dynamic error handling saves hours of troubleshooting, and makes sure only valid requests count toward your API quota
  • A clever interface allows you to make multiple requests across multiple sessions without reauthorising
  • Extra support allows the native saving of CSV files and conversion to DataFrame objects
  • Easy enough for beginners, but powerful enough for advanced users

What does analytix do?

The YouTube Studio provides a fantastic interface where creators can view some incredibly detailed analytics for their channel. However, there's no way to perform programmatical operations on the data to do some proper analysis on it. This is where analytix comes in.

The process of analysing data on the YouTube Studio is comprised of two steps:

  1. Retrieving the data to be analysed and visualised
  2. Presenting that data to the user

analytix aims to handle step one as comprehensively as possible, allowing analysts to use tools such as pandas and Matplotlib to work on the data without having to faff around with Google's offerings.

Installation

To install the latest stable version of analytix, use the following command:

pip install analytix

You can also install the latest development version using the following command:

pip install git+https://github.com/parafoxia/analytix

You may need to prefix these commands with a call to the Python interpreter depending on your OS and Python configuration.

Additional support

You can also install analytix with additional libraries to provide extra functionality:

  • analytix[arrow]Apache Arrow support (including Feather and Parquet files)
  • analytix[dev] — development dependencies
  • analytix[excel] — support for exporting reports to Excel spreadsheets
  • analytix[modin]Modin support (note: this installs all engines; if you want to use a specific engine, you will need to do so manually)
  • analytix[pandas]pandas support (analytix[df] does the same, but is deprecated)
  • analytix[polars]Polars support (reliant on Apache Arrow)
  • analytix[types] — type stubs for type-hinted projects

To install multiple at once, use commas:

pip install "analytix[excel,modin,types]"

OAuth authentication

All requests to the YouTube Analytics API need to be authorised through OAuth 2. In order to do this, you will need a Google Developers project with the YouTube Analytics API enabled. You can find instructions on how to do that in the API setup guide, or on this video.

When analytix boots up for the first time, it will display a link. You'll need to follow that link and run through the OAuth workflow. Once that's done, analytix saves the tokens to the disk (if you plan to run analytix on a server, make sure these are in a safe place). This includes your refresh token, which analytix will automatically use to refresh your access token when needed.

This means you should only have to authorise analytix, at most, every week. More details regarding how and when refresh tokens expire can be found on the Google Identity documentation.

Logging

If you want to see what analytix is doing, you can enable the packaged logger:

import analytix

analytix.setup_logging()

If anything is going wrong, or analytix appears to be taking a long time to fetch data, try enabling the logger in DEBUG mode.

Usage

Retrieving reports from the YouTube Analytics API is easy. The below example loads credentials from a secrets file, and gets as much information as possible from the last 28 days:

from analytix import Analytics

client = Analytics.with_secrets("./secrets.json")
report = client.retrieve(dimensions=("day",))
report.to_csv("./analytics.csv")

This can also be done asynchronously:

import datetime as dt

from analytix import AsyncAnalytics

client = await AsyncAnalytics.with_secrets("./secrets.json")
report = await client.retrieve(
    dimensions=("country",),
    start_date=dt.date.today() - dt.timedelta(days=7),
)
await report.to_csv("./async-analytics.csv")

If you want to analyse this data using additional tools such as pandas, you can directly export the report as a DataFrame (note that pandas is an optional dependency — see above):

df = report.to_dataframe()

To read up further, have a look at the documentation, or have a look at some examples.

Contributing

Contributions are very much welcome! To get started:

License

The analytix module for Python is licensed under the BSD 3-Clause License.

analytix's People

Contributors

jonxslays avatar mrdogebro avatar parafoxia avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.