Skip to main content

Unofficial python API for brain.fm

Project description

(very few commands implemented)

Quickstart

pip install brainfm
>>> import brainfm
>>> client = brainfm.Connection("your@email.here", "hunter2")
>>> client.get_stations()
[{'name': 'Cinematic Music Focus', 'station_id': 300,
  'canonical_name': 'explore.focus.cinematic'},
 {'name': 'Beach Focus', 'station_id': 53,
  'canonical_name': 'explore.focus.beach'},
 ...]
>>> client.get_station(station_id=53)
{'name': 'Beach Focus', 'station_id': 53, 'canonical_name': 'explore.focus.beach'}
>>> client.get_token(station_id=53)
{'session_token': '63f4b59b-93f4-45e6-b0c2-eb6b1582fb96',
 'group': 'FOCUS', 'name': 'Beach Focus', 'session_id': 121,
 'station_id': 53}

Now, open the stream using that token:

https://stream.brain.fm/?tkn=63f4b59b-93f4-45e6-b0c2-eb6b1582fb96

CLI

Needs a credentials file in ~/.brainfm/config with the format:

{
    "email": "your@email.here",
    "password": "hunter2"
}

Usage:

$ brain ls
+Available Stations------------+---------------------------+
| id  | name                   | canonical                 |
+-----+------------------------+---------------------------+
| 34  | Relaxed Focus          | explore.relaxed           |
| 53  | Beach Focus            | explore.focus.beach       |
| 54  | Chimes & Bowls Focus   | explore.focus.bells       |
| 55  | Electronic Music Focus | explore.focus.electronic  |
| ... | ...                    | ...                       |
| 262 | Wind Relax             | explore.relax.wind        |
| 300 | Cinematic Music Focus  | explore.focus.cinematic   |
+-----+------------------------+---------------------------+

$ brain gs -i 60
{
    "canonical_name": "explore.focus.wind",
    "name": "Wind Focus",
    "station_id": 60
}

$ brain gt -i 60
{
    "group": "FOCUS",
    "name": "Wind Focus",
    "session_id": 143,
    "session_token": "3ff0eab0-a5f6-11e6-a5c2-f11c700a6178",
    "station_id": 60
}

$ brain play 60
# opens a browser at:
#   https://stream.brain.fm/?tkn=3ff0eab0-a5f6-11e6-a5c2-f11c700a6178

User-Agent

By default the user agent is github.com/numberoverzero/brain.fm followed by the project __version__. There is also a packaged browser-like user-agent:

>>> client = brainfm.Connection(...)
>>> client.user_agent = brainfm.BROWSER

Instead of filtering, maybe this will be a good metric for customer interest in an official API :heart:

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

brainfm-0.1.2.tar.gz (5.8 kB view details)

Uploaded Source

Built Distribution

brainfm-0.1.2-py3-none-any.whl (8.3 kB view details)

Uploaded Python 3

File details

Details for the file brainfm-0.1.2.tar.gz.

File metadata

  • Download URL: brainfm-0.1.2.tar.gz
  • Upload date:
  • Size: 5.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for brainfm-0.1.2.tar.gz
Algorithm Hash digest
SHA256 737da8c81b8fd13467413241e7e1cd7d25d002cf511f7fae4679a75600e0463a
MD5 650e29cbc8d905b8f47ae91757645cf8
BLAKE2b-256 74a30f794e8cf699fc1002c7ac9f0f6371936d6422ad7992fca745d13270f563

See more details on using hashes here.

File details

Details for the file brainfm-0.1.2-py3-none-any.whl.

File metadata

File hashes

Hashes for brainfm-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 9c4311fef1851819060af4170464302e107dd9c7c0aadb7f4994180342efab4d
MD5 ef7aa32fa60b8b3122ed28124f40f602
BLAKE2b-256 7774ba98dd58da5f41ba62f8739608b7842ca36a0202d22d4f6928b216f127ea

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page