ipbeeldbuis 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ipbeeldbuis-0.1.0/.github/workflows/ci.yml +23 -0
- ipbeeldbuis-0.1.0/.github/workflows/release.yml +100 -0
- ipbeeldbuis-0.1.0/.gitignore +1 -0
- ipbeeldbuis-0.1.0/.pre-commit-config.yaml +37 -0
- ipbeeldbuis-0.1.0/CLAUDE.md +30 -0
- ipbeeldbuis-0.1.0/Cargo.lock +3330 -0
- ipbeeldbuis-0.1.0/Cargo.toml +20 -0
- ipbeeldbuis-0.1.0/PKG-INFO +80 -0
- ipbeeldbuis-0.1.0/README.md +71 -0
- ipbeeldbuis-0.1.0/install.sh +52 -0
- ipbeeldbuis-0.1.0/pyproject.toml +20 -0
- ipbeeldbuis-0.1.0/python/ipbeeldbuis/__init__.py +89 -0
- ipbeeldbuis-0.1.0/python/ipbeeldbuis/__main__.py +3 -0
- ipbeeldbuis-0.1.0/src/cache.rs +120 -0
- ipbeeldbuis-0.1.0/src/epg.rs +272 -0
- ipbeeldbuis-0.1.0/src/m3u.rs +177 -0
- ipbeeldbuis-0.1.0/src/main.rs +196 -0
- ipbeeldbuis-0.1.0/src/player.rs +31 -0
- ipbeeldbuis-0.1.0/src/ui.rs +1069 -0
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [main]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
build:
|
|
11
|
+
name: Build & test
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
steps:
|
|
14
|
+
- uses: actions/checkout@v6
|
|
15
|
+
- run: cargo build
|
|
16
|
+
- run: cargo test
|
|
17
|
+
|
|
18
|
+
prek:
|
|
19
|
+
name: Prek checks
|
|
20
|
+
runs-on: ubuntu-latest
|
|
21
|
+
steps:
|
|
22
|
+
- uses: actions/checkout@v6
|
|
23
|
+
- uses: j178/prek-action@v2
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags:
|
|
6
|
+
- "v*"
|
|
7
|
+
|
|
8
|
+
permissions:
|
|
9
|
+
contents: write
|
|
10
|
+
id-token: write # for PyPI trusted publishing
|
|
11
|
+
|
|
12
|
+
jobs:
|
|
13
|
+
build:
|
|
14
|
+
name: Build — ${{ matrix.target }}
|
|
15
|
+
runs-on: ${{ matrix.runner }}
|
|
16
|
+
strategy:
|
|
17
|
+
matrix:
|
|
18
|
+
include:
|
|
19
|
+
- runner: macos-latest # Apple Silicon
|
|
20
|
+
target: aarch64-apple-darwin
|
|
21
|
+
artifact: ipb-macos-arm64
|
|
22
|
+
|
|
23
|
+
- runner: macos-latest # Intel (cross-compiled from Apple Silicon)
|
|
24
|
+
target: x86_64-apple-darwin
|
|
25
|
+
artifact: ipb-macos-x86_64
|
|
26
|
+
|
|
27
|
+
- runner: ubuntu-latest # Linux x86_64 (static musl)
|
|
28
|
+
target: x86_64-unknown-linux-musl
|
|
29
|
+
artifact: ipb-linux-x86_64
|
|
30
|
+
apt: musl-tools
|
|
31
|
+
|
|
32
|
+
- runner: ubuntu-24.04-arm # Linux arm64 (static musl)
|
|
33
|
+
target: aarch64-unknown-linux-musl
|
|
34
|
+
artifact: ipb-linux-arm64
|
|
35
|
+
apt: musl-tools
|
|
36
|
+
|
|
37
|
+
steps:
|
|
38
|
+
- uses: actions/checkout@v6
|
|
39
|
+
|
|
40
|
+
- name: Install system deps
|
|
41
|
+
if: matrix.apt
|
|
42
|
+
run: sudo apt-get install -y ${{ matrix.apt }}
|
|
43
|
+
|
|
44
|
+
- name: Add Rust target
|
|
45
|
+
run: rustup target add ${{ matrix.target }}
|
|
46
|
+
|
|
47
|
+
- name: Build
|
|
48
|
+
run: cargo build --release --target ${{ matrix.target }}
|
|
49
|
+
|
|
50
|
+
- name: Package
|
|
51
|
+
run: |
|
|
52
|
+
BIN=target/${{ matrix.target }}/release/ipb
|
|
53
|
+
mkdir -p dist
|
|
54
|
+
cp "$BIN" dist/ipb
|
|
55
|
+
tar -czf dist/${{ matrix.artifact }}.tar.gz -C dist ipb
|
|
56
|
+
rm dist/ipb
|
|
57
|
+
|
|
58
|
+
- name: Upload artifact
|
|
59
|
+
uses: actions/upload-artifact@v7
|
|
60
|
+
with:
|
|
61
|
+
name: ${{ matrix.artifact }}
|
|
62
|
+
path: dist/${{ matrix.artifact }}.tar.gz
|
|
63
|
+
|
|
64
|
+
release:
|
|
65
|
+
name: GitHub Release
|
|
66
|
+
needs: build
|
|
67
|
+
runs-on: ubuntu-latest
|
|
68
|
+
steps:
|
|
69
|
+
- uses: actions/download-artifact@v8
|
|
70
|
+
with:
|
|
71
|
+
path: dist
|
|
72
|
+
merge-multiple: true
|
|
73
|
+
|
|
74
|
+
- name: Create release
|
|
75
|
+
uses: softprops/action-gh-release@v2
|
|
76
|
+
with:
|
|
77
|
+
files: dist/*.tar.gz
|
|
78
|
+
generate_release_notes: true
|
|
79
|
+
|
|
80
|
+
publish-pypi:
|
|
81
|
+
name: Publish to PyPI
|
|
82
|
+
needs: release
|
|
83
|
+
runs-on: ubuntu-latest
|
|
84
|
+
environment:
|
|
85
|
+
name: pypi
|
|
86
|
+
url: https://pypi.org/p/ipbeeldbuis
|
|
87
|
+
steps:
|
|
88
|
+
- uses: actions/checkout@v6
|
|
89
|
+
|
|
90
|
+
- uses: actions/setup-python@v6
|
|
91
|
+
with:
|
|
92
|
+
python-version: "3.12"
|
|
93
|
+
|
|
94
|
+
- name: Build package
|
|
95
|
+
run: |
|
|
96
|
+
pip install hatchling build
|
|
97
|
+
python -m build
|
|
98
|
+
|
|
99
|
+
- name: Publish to PyPI
|
|
100
|
+
uses: pypa/gh-action-pypi-publish@release/v1
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
target/
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
repos:
|
|
2
|
+
- repo: https://github.com/gitleaks/gitleaks
|
|
3
|
+
rev: v8.29.1
|
|
4
|
+
hooks:
|
|
5
|
+
- id: gitleaks
|
|
6
|
+
|
|
7
|
+
- repo: https://github.com/pre-commit/pre-commit-hooks
|
|
8
|
+
rev: v6.0.0
|
|
9
|
+
hooks:
|
|
10
|
+
- id: trailing-whitespace
|
|
11
|
+
- id: end-of-file-fixer
|
|
12
|
+
- id: check-yaml
|
|
13
|
+
- id: check-toml
|
|
14
|
+
- id: check-merge-conflict
|
|
15
|
+
- id: check-added-large-files
|
|
16
|
+
args: [--maxkb=500]
|
|
17
|
+
|
|
18
|
+
- repo: https://github.com/shellcheck-py/shellcheck-py
|
|
19
|
+
rev: v0.11.0.1
|
|
20
|
+
hooks:
|
|
21
|
+
- id: shellcheck
|
|
22
|
+
|
|
23
|
+
- repo: local
|
|
24
|
+
hooks:
|
|
25
|
+
- id: cargo-fmt
|
|
26
|
+
name: cargo fmt
|
|
27
|
+
entry: cargo fmt --check
|
|
28
|
+
language: system
|
|
29
|
+
types: [rust]
|
|
30
|
+
pass_filenames: false
|
|
31
|
+
|
|
32
|
+
- id: cargo-clippy
|
|
33
|
+
name: cargo clippy
|
|
34
|
+
entry: cargo clippy -- -D warnings
|
|
35
|
+
language: system
|
|
36
|
+
types: [rust]
|
|
37
|
+
pass_filenames: false
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# ipbeeldbuis
|
|
2
|
+
|
|
3
|
+
A Rust CLI tool for watching IPTV streams from M3U playlists, with a smooth TUI interface.
|
|
4
|
+
|
|
5
|
+
## Project
|
|
6
|
+
|
|
7
|
+
- Language: Rust
|
|
8
|
+
- Working directory: `/Users/stan/Documents/CODING/ipbeeldbuis`
|
|
9
|
+
|
|
10
|
+
## Stack
|
|
11
|
+
|
|
12
|
+
- `ratatui` + `crossterm` — TUI
|
|
13
|
+
- `reqwest` — HTTP (fetch M3U URLs)
|
|
14
|
+
- `clap` — CLI argument parsing
|
|
15
|
+
- `mpv` — video playback (external binary, must be installed)
|
|
16
|
+
|
|
17
|
+
## Run
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
cargo run -- --url "http://your-m3u-url"
|
|
21
|
+
cargo run -- --file /path/to/playlist.m3u
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Roadmap
|
|
25
|
+
|
|
26
|
+
- [x] M3U parser
|
|
27
|
+
- [x] Ratatui TUI with search + category tabs
|
|
28
|
+
- [x] mpv launcher
|
|
29
|
+
- [x] Local cache with ETag refresh
|
|
30
|
+
- [ ] Chromecast casting (planned)
|