66 lines
2.1 KiB
Markdown
66 lines
2.1 KiB
Markdown
# Setup and Run
|
|
|
|
🌐 **English** · [Dansk](Setup-and-Run-da) · [Bahasa Melayu](Setup-and-Run-ms)
|
|
|
|
## What you need
|
|
|
|
- Python 3.13 or later.
|
|
- For steps 2 to 4: a Google account and Firefox.
|
|
|
|
## Create the virtual environment
|
|
|
|
```bash
|
|
python -m venv .venv
|
|
```
|
|
|
|
Activate it. On Windows PowerShell:
|
|
|
|
```powershell
|
|
.venv\Scripts\Activate.ps1
|
|
```
|
|
|
|
On Linux and macOS:
|
|
|
|
```bash
|
|
source .venv/bin/activate
|
|
```
|
|
|
|
Upgrade `pip` and install the project:
|
|
|
|
```bash
|
|
python -m pip install --upgrade pip
|
|
python -m pip install -e ".[dev]"
|
|
```
|
|
|
|
## Create `browser.json`
|
|
|
|
`ytmusicapi` has no API key. It reuses the login of your browser, so you copy the request headers of a logged-in session once.
|
|
|
|
1. Open Firefox and go to <https://music.youtube.com>, logged in.
|
|
2. Open the developer tools (`Ctrl+Shift+I`, on macOS `Cmd+Option+I`) and choose **Network**.
|
|
3. Type `browse` in the filter, pick a successful `browse?...` request, right-click it and choose *Copy Value*, then *Copy Request Headers*.
|
|
4. Run `ytmusicapi browser` in the project folder and paste the headers. Finish with `Ctrl+D` (`Ctrl+Z` and Enter on Windows). On macOS run `pbpaste | ytmusicapi browser`.
|
|
|
|
The file contains your cookies: it is ignored by git and must never be shared. The cookies expire after a while; repeat the steps for a fresh file.
|
|
|
|
**If `--check-login` says `Expecting value`**, the file holds entries that are not request headers (a Chrome copy can add `Request URL`, `Decoded`, `music.youtube.com`, a path entry or `content-encoding`). Copy only the **Request Headers** block, or use Firefox's *Copy Request Headers*, and create the file again.
|
|
|
|
## Run
|
|
|
|
```bash
|
|
python -m musical_time_machine --list-only # step 1: print the chart
|
|
python -m musical_time_machine --check-login # step 2: count your playlists
|
|
python -m musical_time_machine --create-playlist # step 3: create the playlist
|
|
python -m musical_time_machine # step 4: the full program
|
|
```
|
|
|
|
The date format is `YYYY-MM-DD`; use a date that Bakeboard has, for example `2026-04-18`.
|
|
|
|
## Test
|
|
|
|
```bash
|
|
python -m pytest
|
|
```
|
|
|
|
The tests need no network and no account.
|