Compare commits
180 commits
Author | SHA1 | Date | |
---|---|---|---|
|
c17862f0c8 | ||
|
b42a438cf2 | ||
|
2672bf3253 | ||
|
51e2606bf1 | ||
|
31be5c5e5b | ||
|
6efc85e5be | ||
|
2e72736c54 | ||
|
6dec1c9403 | ||
|
1551755b87 | ||
|
ebc082c5b6 | ||
|
72795af62d | ||
|
f004e40a5a | ||
|
57a5cf8ec1 | ||
|
96c9f48a29 | ||
|
5ba553f0d3 | ||
|
8406280d31 | ||
|
8ec4304daa | ||
|
cc45f328de | ||
|
988197631a | ||
|
a03c6a944a | ||
|
6a5b25285e | ||
|
2b836b107f | ||
|
e6f40cc4d0 | ||
|
d54f4e6e01 | ||
|
92a6b55282 | ||
|
4101cf3b10 | ||
|
521909b883 | ||
|
e733ed3b16 | ||
|
8edf54a357 | ||
|
82c6937c5c | ||
|
705efe2f2b | ||
|
cc22187128 | ||
|
3bed5759c8 | ||
|
b0e391d0b0 | ||
|
20a992afe7 | ||
|
a31bad8095 | ||
|
51ee17f136 | ||
|
2959fca344 | ||
|
7a9d1e4c97 | ||
|
c3f7609e6c | ||
|
9d58ec2a3f | ||
|
82585b28a7 | ||
|
8239f621f8 | ||
|
d4a7cc6346 | ||
|
2491909524 | ||
|
cecf7b2ec5 | ||
|
edb9442cb2 | ||
|
657d40d0f6 | ||
|
0c155708f6 | ||
|
54e6756783 | ||
|
0d41f06e90 | ||
|
5eb78e721c | ||
|
5692508986 | ||
|
f7b4ebd3ea | ||
|
98066a6b5a | ||
|
f89c981701 | ||
|
a0a1bcb42b | ||
|
ef0d08f5f6 | ||
|
4585731b45 | ||
|
415c0daf0e | ||
|
09ce1e58c3 | ||
|
c4129a3877 | ||
|
4e42120750 | ||
|
fd5ffa9754 | ||
|
2910a04637 | ||
|
34ab362ee0 | ||
|
284370db48 | ||
|
959c28f67e | ||
|
a5391b714e | ||
|
efc84cb2c7 | ||
|
cd94c901bd | ||
|
cfb8819317 | ||
|
67d6627e60 | ||
|
f9e97f637d | ||
|
90b01096ab | ||
|
5222dde495 | ||
|
c700812238 | ||
|
90e01c4491 | ||
|
a2022dca00 | ||
|
51e4c82e01 | ||
|
fa07d469ec | ||
|
f0e02b22c9 | ||
|
335dcffd8b | ||
|
1819522ffc | ||
|
3cc03cd546 | ||
|
dd3c18a094 | ||
|
35b6b66c76 | ||
|
5674e3da7b | ||
|
ed93ba2613 | ||
|
48028e5b30 | ||
|
669a50a2da | ||
|
f1d32f625a | ||
|
fb7ab754da | ||
|
1146058ae7 | ||
|
82ef3431ce | ||
|
47a7163285 | ||
|
37c7eaf600 | ||
|
ccf3cc7027 | ||
|
0e21189b46 | ||
|
916c5d458f | ||
|
982978284d | ||
|
b61ad078e1 | ||
|
8f81f72c3e | ||
|
2e6ab28181 | ||
|
6aeadb6f48 | ||
|
399a8d980e | ||
|
04b6640148 | ||
|
f04835eab3 | ||
|
576ce493a5 | ||
|
499510a01e | ||
|
90cf520faa | ||
|
38df7c78a8 | ||
|
8ed48ca339 | ||
|
7b90979dc1 | ||
|
6d6f7f1e7d | ||
|
b71e885663 | ||
|
7f3e250abf | ||
|
92120a0fb1 | ||
|
476d06dd76 | ||
|
5b1829088a | ||
|
7f0e427998 | ||
|
5e362993ec | ||
|
dc0a03ada1 | ||
|
3dc5d8c6d5 | ||
|
b404af2972 | ||
|
cc4d395f92 | ||
|
55cfc0d176 | ||
|
5f715a892a | ||
|
f17ae75b56 | ||
|
37d65de374 | ||
|
bb09169f65 | ||
|
24bcbb0f32 | ||
|
1e80c6ca5f | ||
|
01792186a4 | ||
|
f710f8443d | ||
|
7338123de2 | ||
|
529f0f968e | ||
|
0d14e16bea | ||
|
bd13d27ba8 | ||
|
72d76e03d7 | ||
|
fd453e75e4 | ||
|
968669da07 | ||
|
d8e71b5d61 | ||
|
77ae8fad04 | ||
|
c2a94d50fe | ||
|
e21f3ff7e0 | ||
|
8ffbee4b5a | ||
|
36669d0fea | ||
|
0ceb499e57 | ||
|
61f53b7cd9 | ||
|
c38e8f4ab6 | ||
|
ceeaa0a52a | ||
|
343ef1b591 | ||
|
9cfd3eb205 | ||
|
d45febabb8 | ||
|
1d6640be63 | ||
|
747ca19aa6 | ||
|
bd0e6d7eac | ||
|
4c1ddb7124 | ||
|
70721cb8bc | ||
|
03ff77eccb | ||
|
0237f61740 | ||
|
b2c0a3788f | ||
|
b07742a674 | ||
|
53778fec57 | ||
|
1cfefc999d | ||
|
3b15be4b38 | ||
|
19477c9bda | ||
|
da69278875 | ||
|
5c21a4caf7 | ||
|
74e83a507f | ||
|
8f571b667d | ||
|
d7457302ce | ||
|
4ad3d9db12 | ||
|
b1a54a37f9 | ||
|
27858157a0 | ||
|
176d7542e8 | ||
|
6c12b87aa6 | ||
|
3f29ea880a | ||
|
64d69b9101 |
1
.envrc
Normal file
|
@ -0,0 +1 @@
|
|||
use flake
|
83
.github/workflows/CI-PR.yml
vendored
|
@ -1,83 +0,0 @@
|
|||
name: CI Pull Request
|
||||
|
||||
on:
|
||||
pull_request:
|
||||
|
||||
permissions:
|
||||
contents: read
|
||||
pull-requests: read
|
||||
|
||||
jobs:
|
||||
lint-vala:
|
||||
name: Lint vala files
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: valalang/lint
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Lint Vala
|
||||
run: io.elementary.vala-lint -d . -c vala-lint.conf
|
||||
|
||||
lint-blp:
|
||||
name: Lint blueprint ui files
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-vala
|
||||
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Update apt cache
|
||||
run: apt-get update
|
||||
|
||||
- name: Install blueprint-compiler Blueptint
|
||||
run: apt-get install -y blueprint-compiler
|
||||
|
||||
- name: Lint Blueprint
|
||||
run: blueprint-compiler format -s 2 data/ui/*.blp
|
||||
|
||||
checkers:
|
||||
name: Run checkers
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-blp
|
||||
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# - name: Run indentation checker
|
||||
# run: python3 .checkers/indentation_checker.py
|
||||
|
||||
# - name: Run empty lines checker
|
||||
# run: python3 .checkers/empty_lines_checker.py
|
||||
|
||||
test-build:
|
||||
name: Test Build
|
||||
runs-on: ubuntu-latest
|
||||
needs: checkers
|
||||
|
||||
container:
|
||||
image: bilelmoussaoui/flatpak-github-actions:gnome-nightly
|
||||
options: --privileged
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Run tests and lint
|
||||
uses: flatpak/flatpak-github-actions/flatpak-builder@v6
|
||||
with:
|
||||
bundle: cassette.flatpak
|
||||
manifest-path: build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
|
||||
run-tests: true
|
||||
cache-key: flatpak-builder-${{ github.sha }}
|
135
.github/workflows/CI-master.yml
vendored
|
@ -1,135 +0,0 @@
|
|||
name: CI master
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- 'master'
|
||||
|
||||
jobs:
|
||||
lint-vala:
|
||||
name: Lint vala files
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
container:
|
||||
image: valalang/lint
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Lint Vala
|
||||
run: io.elementary.vala-lint -d . -c vala-lint.conf
|
||||
|
||||
lint-blp:
|
||||
name: Lint blueprint ui files
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-vala
|
||||
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Update apt cache
|
||||
run: apt-get update
|
||||
|
||||
- name: Install blueprint-compiler Blueptint
|
||||
run: apt-get install -y blueprint-compiler
|
||||
|
||||
- name: Lint Blueprint
|
||||
run: blueprint-compiler format -s 2 data/ui/*.blp
|
||||
|
||||
checkers:
|
||||
name: Run checkers
|
||||
runs-on: ubuntu-latest
|
||||
needs: lint-blp
|
||||
|
||||
container:
|
||||
image: ubuntu:latest
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# - name: Run indentation checker
|
||||
# run: python3 .checkers/indentation_checker.py
|
||||
|
||||
# - name: Run empty lines checker
|
||||
# run: python3 .checkers/empty_lines_checker.py
|
||||
|
||||
flatter:
|
||||
name: Build Repo
|
||||
runs-on: ubuntu-latest
|
||||
needs: checkers
|
||||
|
||||
container:
|
||||
image: ghcr.io/andyholmes/flatter/gnome:master
|
||||
options: --privileged
|
||||
|
||||
strategy:
|
||||
matrix:
|
||||
arch: [aarch64, x86_64]
|
||||
fail-fast: false
|
||||
max-parallel: 1
|
||||
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
# - name: Set up Flatpak
|
||||
# run: |
|
||||
# dnf update -y
|
||||
# dnf install -y flatpak
|
||||
# flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
# flatpak update -y
|
||||
|
||||
# - name: Install org.freedesktop.Sdk.Extension.vala-nightly
|
||||
# run: |
|
||||
# flatpak install -y org.freedesktop.Sdk.Extension.vala-nightly//23.08
|
||||
|
||||
|
||||
- name: Setup QEMU
|
||||
if: ${{ matrix.arch == 'aarch64' }}
|
||||
id: qemu
|
||||
uses: docker/setup-qemu-action@v3
|
||||
with:
|
||||
platforms: arm64
|
||||
|
||||
- name: Setup GPG
|
||||
id: gpg
|
||||
uses: crazy-max/ghaction-import-gpg@v6
|
||||
with:
|
||||
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
|
||||
passphrase: ${{ secrets.GPG_PASSPHRASE }}
|
||||
|
||||
- name: Build
|
||||
uses: andyholmes/flatter@main
|
||||
with:
|
||||
files: |
|
||||
build-aux/flatpak/nightly/io.github.Rirusha.Cassette-Devel.json
|
||||
arch: ${{ matrix.arch }}
|
||||
gpg-sign: ${{ steps.gpg.outputs.fingerprint }}
|
||||
upload-bundles: true
|
||||
run-tests: true
|
||||
upload-pages-artifact: ${{ matrix.arch == 'x86_64' }}
|
||||
|
||||
deploy:
|
||||
name: Deploy
|
||||
runs-on: ubuntu-latest
|
||||
needs: flatter
|
||||
|
||||
permissions:
|
||||
pages: write
|
||||
id-token: write
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
|
||||
steps:
|
||||
- name: GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v4
|
16
.gitignore
vendored
|
@ -1,11 +1,13 @@
|
|||
# build dir
|
||||
builddir*
|
||||
_build
|
||||
|
||||
# Workspaces
|
||||
# nix
|
||||
result
|
||||
.direnv
|
||||
|
||||
# Codium
|
||||
*.code-workspace
|
||||
|
||||
# Personal scripts
|
||||
my.*
|
||||
.vscode/settings.json
|
||||
|
||||
# Po
|
||||
*.mo
|
||||
|
@ -16,7 +18,3 @@ po/cassette.pot
|
|||
build-dir
|
||||
repo
|
||||
.flatpak
|
||||
_build
|
||||
|
||||
# gh
|
||||
settings.json
|
201
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,201 @@
|
|||
include:
|
||||
- project: 'gnome/citemplates'
|
||||
file: 'flatpak/flatpak_ci_initiative.yml'
|
||||
- project: 'Rirusha/citemplates'
|
||||
file: 'lints.yml'
|
||||
- project: 'Rirusha/citemplates'
|
||||
file: 'vala-checkers.yml'
|
||||
|
||||
variables:
|
||||
APP_ID: 'space.rirusha.Cassette.Devel'
|
||||
MANIFEST_PATH: $CI_PROJECT_DIR/build-aux/flatpak/${APP_ID}.yml
|
||||
BUNDLE: "${APP_ID}.flatpak"
|
||||
RUNTIME_REPO: "https://nightly.gnome.org/gnome-nightly.flatpakrepo"
|
||||
FLATPAK_MODULE: "cassette"
|
||||
|
||||
stages:
|
||||
- lint-vala
|
||||
- lint-blp
|
||||
- lint-checkers
|
||||
- test-mr
|
||||
- build-aarch64
|
||||
- build-x86_64
|
||||
- deploy
|
||||
- deploy-sithyfus
|
||||
- update-repo
|
||||
|
||||
# lint-vala:
|
||||
# stage: 'lint-vala'
|
||||
# extends: '.lint-vala'
|
||||
|
||||
# lint-blp:
|
||||
# stage: 'lint-blp'
|
||||
# extends: '.lint-blp'
|
||||
|
||||
# lint-checkers:
|
||||
# stage: 'lint-checkers'
|
||||
# extends: '.lint-checkers'
|
||||
|
||||
test-mr:
|
||||
variables:
|
||||
RUN_TESTS: "0"
|
||||
stage: 'test-mr'
|
||||
extends: '.flatpak'
|
||||
rules:
|
||||
- if: $CI_PIPELINE_SOURCE == 'merge_request_event'
|
||||
|
||||
.setup-gpg:
|
||||
image: 'quay.io/gnome_infrastructure/gnome-runtime-images:gnome-master'
|
||||
stage: 'setup-gpg'
|
||||
tags:
|
||||
- flatpak
|
||||
before_script:
|
||||
- mkdir -p ${GNUPGHOME}
|
||||
|
||||
- gpg --list-keys --with-keygrip
|
||||
- touch ${GNUPGHOME}/gpg.conf
|
||||
- touch ${GNUPGHOME}/gpg-agent.conf
|
||||
|
||||
- echo "allow-preset-passphrase" >> ${GNUPGHOME}/gpg-agent.conf
|
||||
- echo "pinentry-mode loopback" >> ${GNUPGHOME}/gpg.conf
|
||||
- echo "batch" >> ${GNUPGHOME}/gpg.conf
|
||||
- echo "yes" >> ${GNUPGHOME}/gpg.conf
|
||||
- echo "passphrase-file ${GPG_PASSPHRASE}" >> ${GNUPGHOME}/gpg.conf
|
||||
|
||||
- gpg-connect-agent reloadagent /bye
|
||||
- cat ${GPG_PASSPHRASE} | /usr/libexec/gpg-preset-passphrase --preset ${GPG_KEY_GREP}
|
||||
- base64 -d ${GPG_PRIVATE_KEY} | gpg --import
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
||||
|
||||
.build:
|
||||
extends: '.setup-gpg'
|
||||
stage: 'build'
|
||||
interruptible: true
|
||||
variables:
|
||||
GNUPGHOME: /build/.gnupg
|
||||
LANG: "C.UTF-8"
|
||||
RUN_TESTS: "0"
|
||||
ARCH: x86_64
|
||||
script:
|
||||
- cat /etc/os-release
|
||||
|
||||
- flatpak --version
|
||||
# Report the installed versions of the runtime
|
||||
- flatpak info org.gnome.Platform
|
||||
- flatpak info org.gnome.Sdk
|
||||
|
||||
# Print the date, since appstream depends on local timezone
|
||||
- date && date -u
|
||||
|
||||
- |
|
||||
export REWRITE_RUN_TESTS="--run-tests"
|
||||
if [[ $RUN_TESTS != "1" ]]; then
|
||||
export REWRITE_RUN_TESTS="--no-run-tests"
|
||||
fi
|
||||
rewrite-flatpak-manifest ${REWRITE_RUN_TESTS} ${MANIFEST_PATH} ${FLATPAK_MODULE} -- ${CONFIG_OPTS}
|
||||
|
||||
- |
|
||||
if [ ${ARCH} = "x86_64" ]; then
|
||||
tar xf repo.tar
|
||||
rm -rf repo.tar
|
||||
fi
|
||||
|
||||
- >-
|
||||
xvfb-run -a -s "-screen 0 1024x768x24" --
|
||||
dbus-run-session
|
||||
flatpak-builder ${CI_FB_ARGS} --keep-build-dirs --arch=${ARCH} --user --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} --disable-rofiles-fuse flatpak_app --repo=repo ${BRANCH:+--default-branch=$BRANCH} ${MANIFEST_PATH}
|
||||
|
||||
# Generate a Flatpak bundle
|
||||
- flatpak build-bundle --runtime-repo=${RUNTIME_REPO} --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} repo ${BUNDLE} ${APP_ID} ${BRANCH}
|
||||
|
||||
- echo "[Flatpak Repo]" > repo/index.flatpakrepo
|
||||
- echo "Title=Cassette Nightly Repo" >> repo/index.flatpakrepo
|
||||
- echo "Url=https://cassette-rirusha-7b5d032b879376545602ad6add1827529edccbba8e6c57.pages.gitlab.gnome.org/" >> repo/index.flatpakrepo
|
||||
- echo "Homepage=https://https://gitlab.gnome.org/Rirusha/Cassette/" >> repo/index.flatpakrepo
|
||||
- echo "Comment=Repository with development version of Cassette" >> repo/index.flatpakrepo
|
||||
- echo "Description=Repository with development version of Cassette" >> repo/index.flatpakrepo
|
||||
- echo "Icon=https://dl.flathub.org/repo/logo.svg" >> repo/index.flatpakrepo
|
||||
- echo "GPGKey=$(gpg --export ${GPG_KEY_ID} | base64 --wrap=0)" >> repo/index.flatpakrepo
|
||||
|
||||
- flatpak build-update-repo --gpg-sign=${GPG_KEY_ID} --gpg-homedir=${GNUPGHOME} --generate-static-deltas --prune repo
|
||||
- tar cf repo.tar repo/
|
||||
- rm -rf .flatpak-builder
|
||||
|
||||
artifacts:
|
||||
name: 'Flatpak artifacts'
|
||||
when: 'always'
|
||||
paths:
|
||||
- $BUNDLE
|
||||
- 'repo.tar'
|
||||
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/meson-log.txt'
|
||||
- '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.txt'
|
||||
reports:
|
||||
junit: '.flatpak-builder/build/${FLATPAK_MODULE}/_flatpak_build/meson-logs/testlog.junit.xml'
|
||||
expire_in: 14 days
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
||||
|
||||
build-x86_64:
|
||||
extends: '.build'
|
||||
variables:
|
||||
ARCH: x86_64
|
||||
dependencies:
|
||||
- "build-aarch64"
|
||||
tags:
|
||||
- flatpak
|
||||
stage: "build-x86_64"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
||||
|
||||
# Need to fix `Error: module cassette: Error removing file /builds/Rirusha/cassette-test-ci/.flatpak-builder/build/cassette: Directory not empty`
|
||||
build-aarch64:
|
||||
extends: '.build'
|
||||
variables:
|
||||
ARCH: aarch64
|
||||
tags:
|
||||
- flatpak-aarch64
|
||||
stage: "build-aarch64"
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
||||
|
||||
pages:
|
||||
variables:
|
||||
BUILD_OUTPUT_PATH: $CI_PROJECT_DIR/repo
|
||||
stage: deploy
|
||||
image: alpine:latest
|
||||
dependencies:
|
||||
- "build-x86_64"
|
||||
script:
|
||||
- apk add rsync
|
||||
- tar xf repo.tar
|
||||
- find $BUILD_OUTPUT_PATH \( -type d -name .git -prune \) -o -type f -print0 | xargs -0 sed -i -e "s#href=\"\/#href=\"$CI_PAGES_URL/#g" -e "s#src=\"\/#src=\"$CI_PAGES_URL/#g"
|
||||
- mkdir public || true
|
||||
- rsync -av --exclude='public' --exclude='.git' $BUILD_OUTPUT_PATH/ public
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
||||
artifacts:
|
||||
paths:
|
||||
- public
|
||||
expire_in: 14 days
|
||||
|
||||
update-repo:
|
||||
stage: update-repo
|
||||
image: alpine:latest
|
||||
dependencies:
|
||||
- "build-x86_64"
|
||||
script:
|
||||
- tar xf repo.tar
|
||||
- apk add git
|
||||
- git clone https://Rirusha:${GITHUB_TOKEN}@github.com/Rirusha/rirusha.space.git
|
||||
- rm -f rirusha.space/repos/cassette-nightly.flatpakrepo && cp repo/index.flatpakrepo rirusha.space/repos/cassette-nightly.flatpakrepo
|
||||
- cd rirusha.space
|
||||
- git add .
|
||||
- echo $(git status --porcelain)
|
||||
- git config --global user.email "not-a@mail.com"
|
||||
- git config --global user.name "Updater Bot"
|
||||
- git commit -m "Update cassette-nightly repo" || true
|
||||
- git push
|
||||
- cd ..
|
||||
rules:
|
||||
- if: $CI_COMMIT_BRANCH == "main" && $CI_PIPELINE_SOURCE == 'push'
|
6
.gitmodules
vendored
|
@ -1,3 +1,3 @@
|
|||
[submodule "build-aux/flatpak/stable"]
|
||||
path = build-aux/flatpak/stable
|
||||
url = git@github.com:flathub/io.github.Rirusha.Cassette.git
|
||||
[submodule "vala-checkers"]
|
||||
path = vala-checkers
|
||||
url = https://gitlab.gnome.org/Rirusha/vala-checkers.git
|
||||
|
|
3
.vscode/gdb.sh
vendored
|
@ -1,3 +0,0 @@
|
|||
#!/bin/sh
|
||||
|
||||
flatpak build --with-appdir --allow=devel --bind-mount=/run/user/1000/doc=/run/user/1000/doc/by-app/io.github.Rirusha.Cassette-Devel --share=network --share=ipc --socket=fallback-x11 --socket=wayland --device=dri --socket=pulseaudio --filesystem=xdg-music:ro --filesystem=xdg-download:ro --talk-name=org.mpris.MediaPlayer2.Player --own-name=org.mpris.MediaPlayer2.cassette .flatpak/repo gdb "$@"
|
19
.vscode/launch.json
vendored
|
@ -1,19 +0,0 @@
|
|||
{
|
||||
// Use IntelliSense to learn about possible attributes.
|
||||
// Hover to view descriptions of existing attributes.
|
||||
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug",
|
||||
"type": "gdb",
|
||||
"request": "launch",
|
||||
"preLaunchTask": "Flatpak launch build",
|
||||
"gdbpath": "${workspaceRoot}/.vscode/gdb.sh",
|
||||
"target": "${workspaceRoot}/_build/src/cassette",
|
||||
"arguments": "",
|
||||
"cwd": "${workspaceRoot}",
|
||||
"valuesFormatting": "parseText"
|
||||
},
|
||||
]
|
||||
}
|
12
.vscode/tasks.json
vendored
|
@ -12,19 +12,19 @@
|
|||
{
|
||||
"label": "Empty lines check",
|
||||
"type": "shell",
|
||||
"command": "python3 ${workspaceFolder}/checkers/empty_lines_checker.py .",
|
||||
"command": "python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py .",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Indentation check",
|
||||
"type": "shell",
|
||||
"command": "python3 ${workspaceFolder}/checkers/indentation_checker.py .",
|
||||
"command": "python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Full check",
|
||||
"type": "shell",
|
||||
"command": "io.elementary.vala-lint -d . -c vala-lint.conf && python3 ${workspaceFolder}/checkers/empty_lines_checker.py . && python3 ${workspaceFolder}/checkers/indentation_checker.py .",
|
||||
"command": "echo 'Linter:' && io.elementary.vala-lint -d . -c vala-lint.conf && echo 'Empty lines:' && python3 ${workspaceFolder}/vala-checkers/empty_lines_checker.py . && echo 'Indentation:' && python3 ${workspaceFolder}/vala-checkers/indentation_checker.py .",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
|
@ -39,12 +39,6 @@
|
|||
"command": "blueprint-compiler format -f -s 2 data/ui/*.blp",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Generate .pot",
|
||||
"type": "shell",
|
||||
"command": "sh po/update_potfiles.sh && flatpak run --command=meson --filesystem=host org.gnome.Sdk compile -C _build cassette-pot",
|
||||
"problemMatcher": []
|
||||
},
|
||||
{
|
||||
"label": "Run tests",
|
||||
"type": "shell",
|
||||
|
|
61
CONTRIBUTING.md
Normal file
|
@ -0,0 +1,61 @@
|
|||
## How to contribute
|
||||
|
||||
If you don't know what to do, then:
|
||||
* All scheduled tasks are in the issue section and have the "enhancement" label.
|
||||
* All known problems are in the same place and have a "bug" label.
|
||||
|
||||
Choose tasks from the nearest versions. You can find a list of them [here](https://github.com/Rirusha/Cassette/milestones). This will both speed up the release of the next version and facilitate the review, so you will not need to switch from one global problem to another.
|
||||
|
||||
Also, if you decide to fix some bug described in the issue, first make sure that it can still be reproduced in the `main` branch.
|
||||
|
||||
Also, if you think that the application is missing something or you have found a bug, then do not hesitate to create an issue.
|
||||
|
||||
## Naming commits
|
||||
The message header should look like:
|
||||
```
|
||||
feat: add a play button to the `Widget name`
|
||||
|
||||
The button was missing, so it had to be added
|
||||
```
|
||||
This is an example. The rules are described in more detail [here](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional). Also, the message body is optional if the information in the header is exhaustive. Also here is a list of all types of commits with descriptions:
|
||||
|
||||
* `build`: Used for changes related to the system build or external dependencies.
|
||||
|
||||
* `chore`: Usually includes changes that are not directly related to the code or tests, for example, updating documentation, configuring the development environment, upgrading the version, etc.
|
||||
|
||||
* `ci`: Refers to changes related to configuring or improving CI.
|
||||
|
||||
* `docs`: Used for changes related only to documentation, such as correcting typos, updating the README, or adding comments to the code.
|
||||
|
||||
* `feat`: Indicates the addition of new functionality or features to the project.
|
||||
|
||||
* `fix`: Refers to fixing errors in the code or fixing problems in the project.
|
||||
|
||||
* `perf`: Used when changes are made to improve performance.
|
||||
|
||||
* `refactor`: Refers to changes that do not add new functionality, but only change the structure or organization of existing code.
|
||||
|
||||
* `revert`: Used to undo previous commits in the project history.
|
||||
|
||||
* `style`: Refers to changes in the formatting of the code, for example, edits of spaces, indents, line breaks, etc.
|
||||
|
||||
* `test`: Used to add or modify test code, for example, testing new functionality or correcting existing tests.
|
||||
|
||||
* `po`: Used to add or change a translation.
|
||||
|
||||
## Creating Pull Requests
|
||||
All Pull Requests must be made in the `master` branch. If you close an issue, then link to it with the keyword "close" in the commit body, for example:
|
||||
```
|
||||
fix: fix incorrect behavior
|
||||
|
||||
close #123
|
||||
```
|
||||
|
||||
## Formatting the code
|
||||
If you are using Visual Studio Code, then there is a task to run the linter. Otherwise, use the configuration in the root of the repository in the linter: vala-lint.conf, CI uses it exactly.
|
||||
|
||||
## Development
|
||||
Check the build using flatpak, as this is the only officially supported version.
|
||||
|
||||
## Testing
|
||||
Writing or supplementing existing tests for the client is highly welcome.
|
221
README.md
|
@ -1,56 +1,52 @@
|
|||
<h1 align="center">
|
||||
<img src="data/icons/hicolor/scalable/apps/io.github.Rirusha.Cassette.svg" alt="Cassette"/>
|
||||
<br/>
|
||||
README language: \
|
||||
[](README.md)
|
||||
[](docs/README-ru.md)
|
||||
|
||||
<div align="center">
|
||||
<h1>
|
||||
<img
|
||||
src="data/icons/hicolor/scalable/apps/space.rirusha.Cassette.svg"
|
||||
height="64"
|
||||
/>
|
||||
Cassette
|
||||
</h1>
|
||||
|
||||
<p align="center">
|
||||
GTK4/Adwaita приложение, которое позволит вам использовать Я.Музыку на Linux.
|
||||
</p>
|
||||
|
||||
<br/>
|
||||
|
||||
<p align="center">
|
||||
<a href="https://flathub.org/apps/details/io.github.Rirusha.Cassette">
|
||||
<img width="200" src="https://flathub.org/assets/badges/flathub-badge-en.png" alt="Download on Flathub">
|
||||
</a>
|
||||
<br>
|
||||
<br>
|
||||
<a href="https://stopthemingmy.app">
|
||||
<img src="https://stopthemingmy.app/badge.svg"/>
|
||||
</a>
|
||||
<br>
|
||||
|
||||
<a href="https://t.me/CassetteGNOME_Devlog">
|
||||
<img alt="tg" src="https://img.shields.io/badge/Telegram-Channel-blue?style=flat&logo=telegram&label=%20&labelColor=blue">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/Channel-blue?style=flat&logo=telegram">
|
||||
</a>
|
||||
<br>
|
||||
<a href="https://t.me/CassetteGNOME_Discussion">
|
||||
<img alt="tg" src="https://img.shields.io/badge/Telegram-Chat-blue?style=flat&logo=telegram&label=%20&labelColor=blue">
|
||||
|
||||
<a href="https://t.me/CassetteGNOME_Devlog">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/Chat-blue?style=flat&logo=telegram">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
<p align="center">
|
||||
<img src="data/images/1-liked.png" alt="Screenshot"/>
|
||||
</p>
|
||||
<div align="center"><h4>GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems.</h4></div>
|
||||
|
||||
<div align="center">
|
||||
<img src="data/images/1-liked-view.png" alt="Preview"/>
|
||||
</div>
|
||||
|
||||
## План основных версий
|
||||
[](https://github.com/Rirusha/Cassette/milestone/2) \
|
||||
[](https://github.com/Rirusha/Cassette/milestone/5) \
|
||||
[](https://github.com/Rirusha/Cassette/milestone/4) \
|
||||
[](https://github.com/Rirusha/Cassette/milestone/6) \
|
||||
[](https://github.com/Rirusha/Cassette/milestone/7)
|
||||
## Install
|
||||
|
||||
Все запланированные фичи можете [посмотреть в бэклоге](https://github.com/users/Rirusha/projects/2)
|
||||
**Flathub:**
|
||||
|
||||
<a href="https://flathub.org/apps/details/space.rirusha.Cassette">
|
||||
<img width='240' alt='Download on Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.svg'/>
|
||||
</a>
|
||||
|
||||
## Установка из репозитория
|
||||
```shell
|
||||
flatpak install space.rirusha.Cassette
|
||||
```
|
||||
|
||||
Приложение Cassette доступно здесь:
|
||||
**Distribution repositories:**
|
||||
|
||||
[](https://repology.org/project/cassette/versions)
|
||||
|
||||
### ALT Sisyphus
|
||||
### ALT Linux
|
||||
```shell
|
||||
su -
|
||||
apt-get install cassette
|
||||
|
@ -58,8 +54,7 @@ apt-get install cassette
|
|||
|
||||
### Arch Linux
|
||||
|
||||
> [!NOTE]
|
||||
> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
|
||||
> Most AUR Helpers support Pacman-style flags, for example, yay.
|
||||
|
||||
#### yay
|
||||
```shell
|
||||
|
@ -71,66 +66,15 @@ yay -S cassette
|
|||
pamac install cassette
|
||||
```
|
||||
|
||||
|
||||
## Установка c помощью Flatpak
|
||||
|
||||
Вы можете скачать по [ссылке](https://flathub.org/apps/details/io.github.Rirusha.Cassette) или используя терминал
|
||||
|
||||
### NixOS Unstable
|
||||
```shell
|
||||
flatpak install io.github.Rirusha.Cassette
|
||||
nix-shell -p cassette
|
||||
```
|
||||
|
||||
## Building
|
||||
|
||||
## Nightly версия
|
||||
#### Dependencies:
|
||||
|
||||
> [!WARNING]
|
||||
> Данная версия собирается и обновляется при каждом изменение в коде, поэтому может оказаться нестабильной.
|
||||
|
||||
### Flatpak
|
||||
|
||||
#### Подключаем репозиторий `gnome-nightly` и устанавливаем GNOME Platform:
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
flatpak install gnome-nightly org.gnome.Platform//master
|
||||
```
|
||||
|
||||
#### Подключаем Nightly репозиторий и устанавливаем приложение:
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists cassette-nightly https://rirusha.github.io/Cassette/index.flatpakrepo
|
||||
flatpak install cassette-nightly io.github.Rirusha.Cassette-Devel
|
||||
```
|
||||
|
||||
#### Для удаления репозитория нужно выполнить:
|
||||
```shell
|
||||
flatpak remote-delete cassette-nightly
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
> [!NOTE]
|
||||
> При необходимости, в arch-подобных системах можно установить Nightly версию из репозитория AUR.
|
||||
> По возможности рекомендуется использовать Flatpak версию.
|
||||
>
|
||||
> Большинство AUR Helper'ов поддерживает Pacman-style флаги, например, yay.
|
||||
|
||||
#### yay
|
||||
```shell
|
||||
yay -S cassette-git
|
||||
```
|
||||
|
||||
#### pamac
|
||||
```shell
|
||||
pamac install cassette-git
|
||||
```
|
||||
|
||||
## Установка в Windows
|
||||
|
||||
Способы установки приложения в Windows описаны [здесь](docs/INSTALLATION_ON_WINDOWS.md).
|
||||
|
||||
|
||||
## Сборка из исходного кода
|
||||
|
||||
#### Зависимости:
|
||||
* `gtk4`, version: `>= 4.14`
|
||||
* `libadwaita-1`, version: `>= 1.5`
|
||||
* `libsoup-3.0`
|
||||
|
@ -142,9 +86,10 @@ pamac install cassette-git
|
|||
* `gstreamer-1.0`
|
||||
* `webkitgtk-6.0`
|
||||
* `gio-2.0`, version: `>= 2.72`
|
||||
* `git`, только для `devel`
|
||||
* `git`, only for `devel`
|
||||
|
||||
#### Building utilities:
|
||||
|
||||
#### Утилиты для сборки:
|
||||
* `meson`
|
||||
* `ninja`
|
||||
* `cmake`
|
||||
|
@ -154,92 +99,96 @@ pamac install cassette-git
|
|||
* `pkg`
|
||||
* `appstream-utils`
|
||||
|
||||
### Сборка:
|
||||
### PreRelease
|
||||
|
||||
#### latest
|
||||
> [!NOTE]
|
||||
> В данной версии будут недоступны нестабильные функции, находящиеся в разработке.
|
||||
> Unstable features under development will not be available in this version.
|
||||
```shell
|
||||
meson setup builddir
|
||||
meson setup _build
|
||||
```
|
||||
|
||||
#### devel
|
||||
> [!WARNING]
|
||||
> В данной версии будут доступны все devel функции, приложение может работать нестабильно.
|
||||
### `is_devel` flag
|
||||
|
||||
> In this version, all devel functions will be available.
|
||||
```shell
|
||||
meson setup builddir
|
||||
meson configure -Dprofile=development builddir
|
||||
meson setup _build -Dis_devel=true
|
||||
```
|
||||
|
||||
### Тестирование
|
||||
#### Install
|
||||
```shell
|
||||
ninja -C builddir test
|
||||
sudo ninja install -C _build
|
||||
```
|
||||
|
||||
### Установка:
|
||||
#### Testing
|
||||
```shell
|
||||
sudo ninja -C builddir install
|
||||
ninja -C _build test
|
||||
```
|
||||
|
||||
### Удаление:
|
||||
#### Uninstal
|
||||
```shell
|
||||
sudo ninja -C builddir uninstall
|
||||
sudo ninja uninstall -C _build
|
||||
```
|
||||
|
||||
## Devel version
|
||||
|
||||
## Решение проблем
|
||||
> This version is built and updated with every commit, so it may be unstable.
|
||||
|
||||
Решение известных проблем описано на странице Cassette на [ALT Gnome Wiki](https://alt-gnome.wiki/cassette.html#решение-проблем).
|
||||
You need to add `cassette-nightly` and `gnome-nightly` repositories:
|
||||
|
||||
Также загляните во вкладку [issues](https://github.com/Rirusha/Cassette/issues), если вашей проблемы нет и там, расскажите о ней, заведя новый [issue](https://github.com/Rirusha/Cassette/issues/new).
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
flatpak remote-add --if-not-exists cassette-nightly https://rirusha.space/repos/cassette-nightly.flatpakrepo
|
||||
```
|
||||
|
||||
Install application:
|
||||
|
||||
## Для разработчиков
|
||||
```shell
|
||||
flatpak install cassette-nightly space.rirusha.Cassette.Devel
|
||||
```
|
||||
|
||||
### Использование Visual Studio Code
|
||||
Репозиторий имеет рекомендуемые расширения для проверки и запуска приложения с gdb.
|
||||
## For developers
|
||||
|
||||
### Зависимости
|
||||
> The repository has recommended extensions for developing with Visual Studio Code.
|
||||
|
||||
#### репозиторий [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
|
||||
### Dependencies
|
||||
|
||||
#### repository [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
```
|
||||
|
||||
#### Для запуска
|
||||
#### To run
|
||||
`org.gnome.Platform//master`
|
||||
```shell
|
||||
flatpak install org.gnome.Platform//master
|
||||
```
|
||||
|
||||
#### Для сборки
|
||||
#### To build
|
||||
`org.gnome.Sdk//master` \
|
||||
`org.freedesktop.Sdk.Extension.vala//23.08beta`
|
||||
```shell
|
||||
flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta
|
||||
```
|
||||
|
||||
## Support
|
||||
|
||||
## Поддержка
|
||||
Вы можете поддержать несколькими способами:
|
||||
- Создать ишью с проблемой или предложением по улучшению
|
||||
- Отправить pull request с фиксом или добавлением функционала
|
||||
- Поддержать рублём (Просьба указывать в "Сообщении получателю" свой никнейм при отправлении через Тинькофф):
|
||||
You can support in several ways:
|
||||
- Create an issue with a problem or a suggestion for improvement
|
||||
- Submit a merge request with a fix or new functionality
|
||||
- Support financially (Please include your nickname in the "Message to the recipient" when sending via T-Bank)
|
||||
|
||||
<p>
|
||||
<a href="https://www.tinkoff.ru/cf/21GCxLuFuE9">
|
||||
<img height="36" src="https://github.com/Rirusha/Cassette/assets/95986183/87496207-aa1c-40fc-a511-57bac188bc72" alt="Tinkoff">
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
<a href="https://www.tbank.ru/cf/21GCxLuFuE9" style="margin-right: 100px;">
|
||||
<img height="200" src="assets/tbank.png" alt="Tinkoff">
|
||||
</a>
|
||||
</p>
|
||||
<p>
|
||||
<a href="https://boosty.to/rirusha/donate">
|
||||
<img height="36" src="https://github.com/Rirusha/Cassette/assets/95986183/313ee5af-d374-4f95-af62-9445d1c27347" alt="boosty.to">
|
||||
<img height="200" src="assets/boosty.png" alt="boosty.to">
|
||||
</a>
|
||||
</p>
|
||||
</div>
|
||||
|
||||
## Gratitude
|
||||
Thank you [MarshalX](https://github.com/MarshalX ). The [yandex-music-api](https://github.com/MarshalX/yandex-music-api) library was used as api documentation.
|
||||
|
||||
## Благодарность
|
||||
Спасибо [MarshalX](https://github.com/MarshalX). Библиотека [yandex-music-api](https://github.com/MarshalX/yandex-music-api) была использована в качестве документации к api.
|
||||
|
||||
> [!NOTE]
|
||||
Cassette - неофициальный клиент, не связан с компанией Яндекс и не одобрен ей.
|
||||
> Attention!
|
||||
> Cassette is an unofficial client, not affiliated with Yandex and not approved by it.
|
||||
|
|
BIN
assets/boosty.png
Normal file
After Width: | Height: | Size: 151 KiB |
BIN
assets/tbank.png
Normal file
After Width: | Height: | Size: 258 KiB |
|
@ -1,61 +0,0 @@
|
|||
{
|
||||
"id" : "io.github.Rirusha.Cassette-Devel",
|
||||
"runtime" : "org.gnome.Platform",
|
||||
"runtime-version" : "master",
|
||||
"sdk" : "org.gnome.Sdk",
|
||||
"command" : "cassette",
|
||||
"finish-args" : [
|
||||
"--share=network",
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--socket=wayland",
|
||||
"--filesystem=xdg-music:ro",
|
||||
"--filesystem=xdg-download:ro",
|
||||
"--talk-name=org.mpris.MediaPlayer2.Player",
|
||||
"--own-name=org.mpris.MediaPlayer2.cassette"
|
||||
],
|
||||
"build-options" : {
|
||||
"append-path" : "/usr/lib/sdk/vala/bin",
|
||||
"prepend-ld-library-path" : "/usr/lib/sdk/vala/lib"
|
||||
},
|
||||
"cleanup" : [
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/gtk-doc",
|
||||
"/share/man",
|
||||
"/share/pkgconfig",
|
||||
"/share/vala",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules" : [
|
||||
{
|
||||
"name": "blueprint-compiler",
|
||||
"buildsystem": "meson",
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
|
||||
"tag": "v0.12.0",
|
||||
"commit": "66b43c36cf1017c878762007373964a096b3d2a5"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "cassette",
|
||||
"builddir" : true,
|
||||
"buildsystem" : "meson",
|
||||
"config-opts": [ "-Dprofile=development" ],
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "dir",
|
||||
"path" : "../../../"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -1,60 +0,0 @@
|
|||
{
|
||||
"id" : "io.github.Rirusha.Cassette",
|
||||
"runtime" : "org.gnome.Platform",
|
||||
"runtime-version" : "46",
|
||||
"sdk" : "org.gnome.Sdk",
|
||||
"command" : "cassette",
|
||||
"finish-args" : [
|
||||
"--share=network",
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--socket=wayland",
|
||||
"--filesystem=xdg-music:ro",
|
||||
"--filesystem=xdg-download:ro",
|
||||
"--talk-name=org.mpris.MediaPlayer2.Player",
|
||||
"--own-name=org.mpris.MediaPlayer2.cassette"
|
||||
],
|
||||
"build-options" : {
|
||||
"append-path" : "/usr/lib/sdk/vala/bin",
|
||||
"prepend-ld-library-path" : "/usr/lib/sdk/vala/lib"
|
||||
},
|
||||
"cleanup" : [
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/gtk-doc",
|
||||
"/share/man",
|
||||
"/share/pkgconfig",
|
||||
"/share/vala",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules" : [
|
||||
{
|
||||
"name": "blueprint-compiler",
|
||||
"buildsystem": "meson",
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
|
||||
"tag": "v0.12.0",
|
||||
"commit": "66b43c36cf1017c878762007373964a096b3d2a5"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name" : "cassette",
|
||||
"builddir" : true,
|
||||
"buildsystem" : "meson",
|
||||
"sources" : [
|
||||
{
|
||||
"type" : "dir",
|
||||
"path" : "../../../"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -0,0 +1,68 @@
|
|||
{
|
||||
"id": "space.rirusha.Cassette.Devel",
|
||||
"runtime": "org.gnome.Platform",
|
||||
"runtime-version": "master",
|
||||
"sdk": "org.gnome.Sdk",
|
||||
"sdk-extensions": [
|
||||
"org.freedesktop.Sdk.Extension.vala"
|
||||
],
|
||||
"command": "cassette",
|
||||
"finish-args": [
|
||||
"--share=network",
|
||||
"--share=ipc",
|
||||
"--socket=fallback-x11",
|
||||
"--device=dri",
|
||||
"--socket=pulseaudio",
|
||||
"--socket=wayland",
|
||||
"--filesystem=xdg-music:ro",
|
||||
"--filesystem=xdg-download:ro",
|
||||
"--own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette.Devel"
|
||||
],
|
||||
"build-options": {
|
||||
"append-path": "/usr/lib/sdk/vala/bin",
|
||||
"prepend-ld-library-path": "/usr/lib/sdk/vala/lib"
|
||||
},
|
||||
"cleanup": [
|
||||
"/include",
|
||||
"/lib/pkgconfig",
|
||||
"/man",
|
||||
"/share/doc",
|
||||
"/share/gtk-doc",
|
||||
"/share/man",
|
||||
"/share/pkgconfig",
|
||||
"/share/vala",
|
||||
"*.la",
|
||||
"*.a"
|
||||
],
|
||||
"modules": [
|
||||
{
|
||||
"name": "blueprint-compiler",
|
||||
"buildsystem": "meson",
|
||||
"cleanup": [
|
||||
"*"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "git",
|
||||
"url": "https://gitlab.gnome.org/jwestman/blueprint-compiler",
|
||||
"commit": "04ef0944db56ab01307a29aaa7303df6067cb3c0",
|
||||
"tag": "v0.16.0"
|
||||
}
|
||||
]
|
||||
},
|
||||
{
|
||||
"name": "cassette",
|
||||
"buildsystem": "meson",
|
||||
"builddir": true,
|
||||
"config-opts": [
|
||||
"-Dis_devel=true"
|
||||
],
|
||||
"sources": [
|
||||
{
|
||||
"type": "dir",
|
||||
"path": "../../"
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
49
build-aux/flatpak/space.rirusha.Cassette.Devel.yml
Normal file
|
@ -0,0 +1,49 @@
|
|||
id: space.rirusha.Cassette.Devel
|
||||
runtime: org.gnome.Platform
|
||||
runtime-version: 'master'
|
||||
sdk: org.gnome.Sdk
|
||||
sdk-extensions:
|
||||
- org.freedesktop.Sdk.Extension.vala
|
||||
command: cassette
|
||||
finish-args:
|
||||
- --share=network
|
||||
- --share=ipc
|
||||
- --socket=fallback-x11
|
||||
- --device=dri
|
||||
- --socket=pulseaudio
|
||||
- --socket=wayland
|
||||
- --filesystem=xdg-music:ro
|
||||
- --filesystem=xdg-download:ro
|
||||
- --own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette.Devel
|
||||
build-options:
|
||||
append-path: /usr/lib/sdk/vala/bin
|
||||
prepend-ld-library-path: /usr/lib/sdk/vala/lib
|
||||
cleanup:
|
||||
- /include
|
||||
- /lib/pkgconfig
|
||||
- /man
|
||||
- /share/doc
|
||||
- /share/gtk-doc
|
||||
- /share/man
|
||||
- /share/pkgconfig
|
||||
- /share/vala
|
||||
- '*.la'
|
||||
- '*.a'
|
||||
modules:
|
||||
- name: blueprint-compiler
|
||||
buildsystem: meson
|
||||
cleanup:
|
||||
- '*'
|
||||
sources:
|
||||
- type: git
|
||||
url: https://gitlab.gnome.org/jwestman/blueprint-compiler
|
||||
commit: 04ef0944db56ab01307a29aaa7303df6067cb3c0
|
||||
tag: v0.16.0
|
||||
- name: cassette
|
||||
buildsystem: meson
|
||||
builddir: true
|
||||
config-opts:
|
||||
- -Dis_devel=true
|
||||
sources:
|
||||
- type: dir
|
||||
path: ../../
|
47
build-aux/flatpak/space.rirusha.Cassette.PreRelease.yaml
Normal file
|
@ -0,0 +1,47 @@
|
|||
id: space.rirusha.Cassette
|
||||
runtime: org.gnome.Platform
|
||||
runtime-version: '47'
|
||||
sdk: org.gnome.Sdk
|
||||
sdk-extensions:
|
||||
- org.freedesktop.Sdk.Extension.vala
|
||||
command: cassette
|
||||
finish-args:
|
||||
- --share=network
|
||||
- --share=ipc
|
||||
- --socket=fallback-x11
|
||||
- --device=dri
|
||||
- --socket=pulseaudio
|
||||
- --socket=wayland
|
||||
- --filesystem=xdg-music:ro
|
||||
- --filesystem=xdg-download:ro
|
||||
- --own-name=org.mpris.MediaPlayer2.space.rirusha.Cassette
|
||||
build-options:
|
||||
append-path: /usr/lib/sdk/vala/bin
|
||||
prepend-ld-library-path: /usr/lib/sdk/vala/lib
|
||||
cleanup:
|
||||
- /include
|
||||
- /lib/pkgconfig
|
||||
- /man
|
||||
- /share/doc
|
||||
- /share/gtk-doc
|
||||
- /share/man
|
||||
- /share/pkgconfig
|
||||
- /share/vala
|
||||
- '*.la'
|
||||
- '*.a'
|
||||
modules:
|
||||
- name: blueprint-compiler
|
||||
buildsystem: meson
|
||||
cleanup:
|
||||
- '*'
|
||||
sources:
|
||||
- type: git
|
||||
url: https://gitlab.gnome.org/jwestman/blueprint-compiler
|
||||
commit: 8e10fcf8692108b9d4ab78f41086c5d7773ef864
|
||||
tag: v0.14.0
|
||||
- name: cassette
|
||||
buildsystem: meson
|
||||
builddir: true
|
||||
sources:
|
||||
- type: dir
|
||||
path: ../../
|
|
@ -1 +0,0 @@
|
|||
Subproject commit 4e75fdfec4b810aa091a1365da824c904a7554d5
|
|
@ -5,7 +5,6 @@
|
|||
xmlns:gnome="http://api.gnome.org/doap-extensions#"
|
||||
xmlns="http://usefulinc.com/ns/doap#">
|
||||
|
||||
<name xml:lang="en">Cassette</name>
|
||||
<name xml:lang="es">Casete</name>
|
||||
<name xml:lang="fr">Cassette</name>
|
||||
<name xml:lang="de">Kassette</name>
|
||||
|
@ -28,37 +27,38 @@
|
|||
<name xml:lang="fi">Kasetti</name>
|
||||
<name xml:lang="hu">Kazetta</name>
|
||||
<name xml:lang="th">เทปคาสเซ็ท</name>
|
||||
<name xml:lang="en">Cassette</name>
|
||||
|
||||
<shortdesc xml:lang="en">Unofficial Yandex.Music client</shortdesc>
|
||||
<shortdesc xml:lang="es">Cliente no oficial de Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="fr">Client non officiel de Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="de">Inoffizieller Yandex.Music-Client</shortdesc>
|
||||
<shortdesc xml:lang="it">Client non ufficiale di Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="pt">Cliente não oficial do Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="es">Cliente no oficial de Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="fr">Client non officiel de Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="de">Inoffizieller Yandex Music-Client</shortdesc>
|
||||
<shortdesc xml:lang="it">Client non ufficiale di Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="pt">Cliente não oficial do Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="ru">Неофициальный клиент Яндекс.Музыки</shortdesc>
|
||||
<shortdesc xml:lang="ja">非公式のYandex.Musicクライアント</shortdesc>
|
||||
<shortdesc xml:lang="zh">非官方的Yandex.Music客户端</shortdesc>
|
||||
<shortdesc xml:lang="ar">عميل غير رسمي لـ Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="hi">अनौपचारिक Yandex.Music क्लाइंट</shortdesc>
|
||||
<shortdesc xml:lang="ko">비공식 Yandex.Music 클라이언트</shortdesc>
|
||||
<shortdesc xml:lang="tr">Resmi olmayan Yandex.Music istemcisi</shortdesc>
|
||||
<shortdesc xml:lang="he">לקוח לא רשמי של Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="el">Ανεπίσημος πελάτης του Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="nl">Onofficiële Yandex.Music-client</shortdesc>
|
||||
<shortdesc xml:lang="sv">Inofficiell Yandex.Music-klient</shortdesc>
|
||||
<shortdesc xml:lang="pl">Nieoficjalny klient Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="cs">Neoficiální klient Yandex.Music</shortdesc>
|
||||
<shortdesc xml:lang="da">Uofficiel Yandex.Music-klient</shortdesc>
|
||||
<shortdesc xml:lang="fi">Epävirallinen Yandex.Music-asiakas</shortdesc>
|
||||
<shortdesc xml:lang="hu">Nem hivatalos Yandex.Music kliens</shortdesc>
|
||||
<shortdesc xml:lang="th">ไคลเอนต์ Yandex.Music อย่างไม่เป็นทางการ</shortdesc>
|
||||
<shortdesc xml:lang="ja">非公式のYandex Musicクライアント</shortdesc>
|
||||
<shortdesc xml:lang="zh">非官方的Yandex Music客户端</shortdesc>
|
||||
<shortdesc xml:lang="ar">عميل غير رسمي لـ Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="hi">अनौपचारिक Yandex Music क्लाइंट</shortdesc>
|
||||
<shortdesc xml:lang="ko">비공식 Yandex Music 클라이언트</shortdesc>
|
||||
<shortdesc xml:lang="tr">Resmi olmayan Yandex Music istemcisi</shortdesc>
|
||||
<shortdesc xml:lang="he">לקוח לא רשמי של Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="el">Ανεπίσημος πελάτης του Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="nl">Onofficiële Yandex Music-client</shortdesc>
|
||||
<shortdesc xml:lang="sv">Inofficiell Yandex Music-klient</shortdesc>
|
||||
<shortdesc xml:lang="pl">Nieoficjalny klient Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="cs">Neoficiální klient Yandex Music</shortdesc>
|
||||
<shortdesc xml:lang="da">Uofficiel Yandex Music-klient</shortdesc>
|
||||
<shortdesc xml:lang="fi">Epävirallinen Yandex Music-asiakas</shortdesc>
|
||||
<shortdesc xml:lang="hu">Nem hivatalos Yandex Music kliens</shortdesc>
|
||||
<shortdesc xml:lang="th">ไคลเอนต์ Yandex Music อย่างไม่เป็นทางการ</shortdesc>
|
||||
<shortdesc xml:lang="en">Unofficial Yandex Music client</shortdesc>
|
||||
|
||||
<description>
|
||||
GTK/Adwaita application that allows you to use Yandex Music service on Linux operating systems
|
||||
</description>
|
||||
<homepage rdf:resource="https://github.com/Rirusha/Cassette" />
|
||||
<download-page rdf:resource="https://github.com/Rirusha/Cassette/tags" />
|
||||
<bug-database rdf:resource="https://github.com/Rirusha/Cassette/issues" />
|
||||
<homepage rdf:resource="https://gitlab.gnome.org/Rirusha/Cassette" />
|
||||
<download-page rdf:resource="https://gitlab.gnome.org/Rirusha/Cassette/-/tags" />
|
||||
<bug-database rdf:resource="https://gitlab.gnome.org/Rirusha/Cassette/-/issues" />
|
||||
|
||||
<programming-language>Vala</programming-language>
|
||||
<platform>GTK 4</platform>
|
||||
|
@ -70,7 +70,7 @@
|
|||
<foaf:mbox rdf:resource="mailto:rirusha@altlinux.org" />
|
||||
<foaf:account>
|
||||
<foaf:OnlineAccount>
|
||||
<foaf:accountServiceHomepage rdf:resource="https://github.com"/>
|
||||
<foaf:accountServiceHomepage rdf:resource="https://gitlab.gnome.org"/>
|
||||
<foaf:accountName>Rirusha</foaf:accountName>
|
||||
</foaf:OnlineAccount>
|
||||
</foaf:account>
|
||||
|
|
|
@ -1,48 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
def check_indentation (file_path, root_dir) -> list[str]:
|
||||
file_err_list = []
|
||||
|
||||
with open (file_path, 'r') as file:
|
||||
lines = file.readlines ()
|
||||
|
||||
empty_lines_count = 0
|
||||
for i, line in enumerate (lines):
|
||||
if line.strip () == "":
|
||||
empty_line_count += 1
|
||||
else:
|
||||
empty_line_count = 0
|
||||
|
||||
if empty_line_count > 1:
|
||||
file_err_list.append (f"To mant empty lines in file '{file_path.replace (root_dir, "", 1)}' at line {i + 1}: \"{line.rstrip ()}\".")
|
||||
|
||||
return file_err_list
|
||||
|
||||
def scan_directory (directory) -> list[str]:
|
||||
err_list = []
|
||||
|
||||
for root, dirs, files in os.walk (directory):
|
||||
for file in files:
|
||||
if (file.endswith ('.vala') or file.endswith ('.blp')) and (("/data/ui" in root or "/src" in root or "/tests" in root) and "/.flatpak/" not in root):
|
||||
file_path = os.path.join (root, file)
|
||||
|
||||
file_err_list = check_indentation (file_path, directory)
|
||||
|
||||
if (file_err_list):
|
||||
err_list += file_err_list
|
||||
|
||||
return err_list
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
err_list = scan_directory (sys.argv[1])
|
||||
|
||||
print (*err_list, sep="\n", end="\n\n")
|
||||
print (f"Total errors: {len (err_list)}")
|
||||
|
||||
if (len (err_list) != 0):
|
||||
sys.exit (1)
|
|
@ -1,47 +0,0 @@
|
|||
#!/bin/bash
|
||||
|
||||
import sys
|
||||
import os
|
||||
import re
|
||||
|
||||
def check_indentation (file_path, root_dir) -> list[str]:
|
||||
file_err_list = []
|
||||
|
||||
with open (file_path, 'r') as file:
|
||||
lines = file.readlines ()
|
||||
|
||||
for i, line in enumerate (lines):
|
||||
if "ind-check=skip-file" in line:
|
||||
return
|
||||
|
||||
if re.match (r'^(?!.*(?:new|if|else| => |try|catch|switch|}|get |set |while|namespace|class|foreach|throws|ind-check=ignore| = {))(?=(?:.*?\s+\w+\s+\w+.*?){1}).*{', line):
|
||||
indentation = len (re.match(r'^(\s*)', line).group(1))
|
||||
if indentation != 4:
|
||||
file_err_list.append (f"Indentation error in file '{file_path.replace (root_dir, "", 1)}' at line {i + 1}: \"{line.rstrip ()}\". {indentation} spaces instead of 4.")
|
||||
|
||||
return file_err_list
|
||||
|
||||
def scan_directory (directory) -> list[str]:
|
||||
err_list = []
|
||||
|
||||
for root, dirs, files in os.walk (directory):
|
||||
for file in files:
|
||||
if file.endswith ('.vala'):
|
||||
file_path = os.path.join (root, file)
|
||||
|
||||
file_err_list = check_indentation (file_path, directory)
|
||||
|
||||
if (file_err_list):
|
||||
err_list += file_err_list
|
||||
|
||||
return err_list
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
err_list = scan_directory (sys.argv[1])
|
||||
|
||||
print (*err_list, sep="\n", end="\n\n")
|
||||
print (f"Total errors: {len (err_list)}")
|
||||
|
||||
if (len (err_list) != 0):
|
||||
sys.exit (1)
|
4
data/assets/icons/like-symbolic.svg
Normal file
|
@ -0,0 +1,4 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<svg height="16px" viewBox="0 0 16 16" width="16px" xmlns="http://www.w3.org/2000/svg">
|
||||
<path d="m 11.847656 1 c -1.109375 -0.027344 -2.1875 0.371094 -3.003906 1.121094 l -0.863281 0.769531 l -0.859375 -0.769531 c -1.136719 -1.019532 -2.734375 -1.355469 -4.1875 -0.875 c -1.453125 0.476562 -2.539063 1.695312 -2.8476565 3.195312 c -0.3085935 1.496094 0.2109375 3.046875 1.3554685 4.058594 l 6.539063 5.828125 l 6.542969 -5.828125 c 1.332031 -1.152344 1.820312 -3.003906 1.226562 -4.664062 c -0.589844 -1.660157 -2.140625 -2.785157 -3.902344 -2.835938 z m 0 0" fill="#2e3436" fill-rule="evenodd"/>
|
||||
</svg>
|
After Width: | Height: | Size: 647 B |
|
@ -4,7 +4,7 @@
|
|||
height="128"
|
||||
version="1.1"
|
||||
id="svg16"
|
||||
sodipodi:docname="io.github.Rirusha.Cassette-Devel.svg"
|
||||
sodipodi:docname="space.rirusha.Cassette.Devel.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
|
@ -38,9 +38,9 @@
|
|||
inkscape:window-height="1011"
|
||||
id="namedview18"
|
||||
showgrid="false"
|
||||
inkscape:zoom="4.3101714"
|
||||
inkscape:cx="36.54147"
|
||||
inkscape:cy="53.014133"
|
||||
inkscape:zoom="11.313709"
|
||||
inkscape:cx="89.095454"
|
||||
inkscape:cy="94.708114"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="1"
|
||||
|
@ -799,7 +799,7 @@
|
|||
<g
|
||||
id="g2"
|
||||
style="display:inline;opacity:0.8"
|
||||
transform="translate(-7.734375,-17.092503)">
|
||||
transform="matrix(1.0003571,0,0,1.0006746,-7.7599937,-17.158376)">
|
||||
<path
|
||||
id="path10"
|
||||
style="display:inline;fill:url(#linearGradient38)"
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 25 KiB |
|
@ -6,7 +6,7 @@
|
|||
fill="none"
|
||||
version="1.1"
|
||||
id="svg35"
|
||||
sodipodi:docname="io.github.Rirusha.Cassette.svg"
|
||||
sodipodi:docname="space.rirusha.Cassette.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -6,9 +6,9 @@
|
|||
fill="none"
|
||||
version="1.1"
|
||||
id="svg35"
|
||||
sodipodi:docname="io.github.Rirusha.Cassette-Devel-symbolic.svg"
|
||||
sodipodi:docname="space.rirusha.Cassette.Devel-symbolic.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
inkscape:export-filename="io.github.Rirusha.Cassette-symbolic.png"
|
||||
inkscape:export-filename="space.rirusha.Cassette-symbolic.png"
|
||||
inkscape:export-xdpi="75"
|
||||
inkscape:export-ydpi="75"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
|
@ -6,9 +6,9 @@
|
|||
fill="none"
|
||||
version="1.1"
|
||||
id="svg35"
|
||||
sodipodi:docname="io.github.Rirusha.Cassette-Devel-symbolic.svg"
|
||||
sodipodi:docname="space.rirusha.Cassette.Devel-symbolic.svg"
|
||||
inkscape:version="1.3.2 (091e20ef0f, 2023-11-25)"
|
||||
inkscape:export-filename="io.github.Rirusha.Cassette-symbolic.png"
|
||||
inkscape:export-filename="space.rirusha.Cassette-symbolic.png"
|
||||
inkscape:export-xdpi="75"
|
||||
inkscape:export-ydpi="75"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 16 KiB |
BIN
data/images/1-liked-view.png
Normal file
After Width: | Height: | Size: 150 KiB |
Before Width: | Height: | Size: 124 KiB |
BIN
data/images/2-playlists-view.png
Normal file
After Width: | Height: | Size: 523 KiB |
Before Width: | Height: | Size: 356 KiB |
Before Width: | Height: | Size: 193 KiB |
BIN
data/images/3-sync-lyrics.png
Normal file
After Width: | Height: | Size: 198 KiB |
BIN
data/images/4-playback-queue.png
Normal file
After Width: | Height: | Size: 204 KiB |
Before Width: | Height: | Size: 156 KiB |
Before Width: | Height: | Size: 57 KiB |
BIN
data/images/5-waves-view.png
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
data/images/6-main-settings.png
Normal file
After Width: | Height: | Size: 132 KiB |
|
@ -1,5 +1,11 @@
|
|||
desktop_conf = configuration_data()
|
||||
desktop_conf.set('APP_ID_DYN', app_id_dyn)
|
||||
|
||||
desktop_file = i18n.merge_file(
|
||||
input: '@0@.desktop.in'.format(app_id_dyn),
|
||||
input: configure_file(
|
||||
output: '@0@.desktop.in'.format(app_id_dyn),
|
||||
input: '@0@.desktop.in.in'.format(app_id_dyn),
|
||||
configuration: desktop_conf),
|
||||
output: '@0@.desktop'.format(app_id_dyn),
|
||||
type: 'desktop',
|
||||
po_dir: '../po',
|
||||
|
@ -12,12 +18,22 @@ if desktop_utils.found()
|
|||
test('Validate desktop file', desktop_utils, args: [desktop_file])
|
||||
endif
|
||||
|
||||
appstream_conf = configuration_data()
|
||||
appstream_conf.set('APP_ID', app_id)
|
||||
appstream_conf.set('APP_ID_DYN', app_id_dyn)
|
||||
appstream_conf.set('HOMEPAGE', 'https://gitlab.gnome.org/Rirusha/Cassette')
|
||||
appstream_conf.set('BUGTRACKER', 'https://gitlab.gnome.org/Rirusha/Cassette/-/issues')
|
||||
appstream_conf.set('HELP', 'https://t.me/CassetteGNOME_Discussion')
|
||||
|
||||
appstream_file = i18n.merge_file(
|
||||
input: '@0@.appdata.xml.in'.format(app_id),
|
||||
output: '@0@.appdata.xml'.format(app_id),
|
||||
input: configure_file(
|
||||
output: '@0@.metainfo.xml.in'.format(app_id),
|
||||
input: '@0@.metainfo.xml.in.in'.format(app_id),
|
||||
configuration: appstream_conf),
|
||||
output: '@0@.metainfo.xml'.format(app_id),
|
||||
po_dir: '../po',
|
||||
install: true,
|
||||
install_dir: join_paths(get_option('datadir'), 'appdata')
|
||||
install_dir: join_paths(get_option('datadir'), 'metainfo')
|
||||
)
|
||||
|
||||
appstreamcli = find_program('appstreamcli', required: false)
|
||||
|
@ -77,6 +93,7 @@ resource_files = files('@0@.gresource.xml'.format(app_id))
|
|||
resources = gnome.compile_resources(
|
||||
'cassette-resources',
|
||||
resource_files,
|
||||
source_dir: meson.current_build_dir(),
|
||||
dependencies: blueprints,
|
||||
c_name: 'cassette'
|
||||
)
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
[Desktop Entry]
|
||||
# Translators: app name should be translated
|
||||
Name=Cassette (Devel)
|
||||
Comment=Unofficial Yandex.Music client for GNOME (Development)
|
||||
Comment=Unofficial Yandex Music client for GNOME (Devel build)
|
||||
# Translators: keep number of ';'
|
||||
Keywords=yandex;yandex music;yam;music;
|
||||
Exec=cassette %U
|
||||
Icon=io.github.Rirusha.Cassette-Devel
|
||||
Icon=@APP_ID_DYN@
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Audio
|
||||
Categories=GNOME;GTK;Music;Audio;AudioVideo;
|
||||
StartupNotify=true
|
||||
MimeType=x-scheme-handler/yandexmusic;
|
||||
X-GNOME-UsesNotifications=true
|
|
@ -1,14 +1,14 @@
|
|||
[Desktop Entry]
|
||||
# Translators: app name should be translated
|
||||
Name=Cassette
|
||||
Comment=Unofficial Yandex.Music client for GNOME
|
||||
Comment=Unofficial Yandex Music client for GNOME
|
||||
# Translators: keep number of ';'
|
||||
Keywords=yandex;yandex music;yam;music;
|
||||
Exec=cassette %U
|
||||
Icon=io.github.Rirusha.Cassette
|
||||
Icon=@APP_ID_DYN@
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Categories=Audio
|
||||
Categories=GNOME;GTK;Music;Audio;AudioVideo;
|
||||
StartupNotify=true
|
||||
MimeType=x-scheme-handler/yandexmusic;
|
||||
X-GNOME-UsesNotifications=true
|
|
@ -1,6 +1,6 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<gresources>
|
||||
<gresource prefix="/io/github/Rirusha/Cassette/icons/scalable/actions/">
|
||||
<gresource prefix="/space/rirusha/Cassette/icons/scalable/actions/">
|
||||
<file alias="audio-volume-high-symbolic.svg">assets/icons/audio-volume-high-symbolic.svg</file>
|
||||
<file alias="audio-volume-low-symbolic.svg">assets/icons/audio-volume-low-symbolic.svg</file>
|
||||
<file alias="audio-volume-medium-symbolic.svg">assets/icons/audio-volume-medium-symbolic.svg</file>
|
||||
|
@ -22,6 +22,7 @@
|
|||
<file alias="go-next-symbolic.svg">assets/icons/go-next-symbolic.svg</file>
|
||||
<file alias="go-previous-symbolic.svg">assets/icons/go-previous-symbolic.svg</file>
|
||||
<file alias="isound-wave-alt-symbolic.svg">assets/icons/isound-wave-alt-symbolic.svg</file>
|
||||
<file alias="like-symbolic.svg">assets/icons/like-symbolic.svg</file>
|
||||
<file alias="media-playback-pause-symbolic.svg">assets/icons/media-playback-pause-symbolic.svg</file>
|
||||
<file alias="media-playback-start-symbolic.svg">assets/icons/media-playback-start-symbolic.svg</file>
|
||||
<file alias="media-playlist-repeat-song-symbolic.svg">assets/icons/media-playlist-repeat-song-symbolic.svg</file>
|
||||
|
@ -128,7 +129,7 @@
|
|||
<file alias="wave-my-wave-symbolic.svg">assets/icons/wave-my-wave-symbolic.svg</file>
|
||||
<file alias="window-close-symbolic.svg">assets/icons/window-close-symbolic.svg</file>
|
||||
</gresource>
|
||||
<gresource prefix="/io/github/Rirusha/Cassette">
|
||||
<gresource prefix="/space/rirusha/Cassette/">
|
||||
<file alias="gtk/help-overlay.ui" preprocess="xml-stripblanks">ui/help-overlay.ui</file>
|
||||
<file>style.css</file>
|
||||
<file preprocess="xml-stripblanks">ui/account-info-dialog.ui</file>
|
|
@ -1,23 +1,23 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<schemalist gettext-domain="cassette">
|
||||
|
||||
<schema id="io.github.Rirusha.Cassette" path="/io/github/Rirusha/Cassette/">
|
||||
<child schema="io.github.Rirusha.Cassette.application" name="application"/>
|
||||
<child schema="io.github.Rirusha.Cassette.client" name="client"/>
|
||||
<schema id="space.rirusha.Cassette" path="/space/rirusha/Cassette/">
|
||||
<child schema="space.rirusha.Cassette.application" name="application"/>
|
||||
<child schema="space.rirusha.Cassette.client" name="client"/>
|
||||
</schema>
|
||||
|
||||
<!-- GUI Application -->
|
||||
|
||||
<enum id="io.github.Rirusha.Cassette.application.application-state">
|
||||
<enum id="space.rirusha.Cassette.application.application-state">
|
||||
<value nick="begin" value="0"/>
|
||||
<value nick="online" value="1"/>
|
||||
<value nick="local" value="2"/>
|
||||
<value nick="offline" value="3"/>
|
||||
</enum>
|
||||
|
||||
<schema id="io.github.Rirusha.Cassette.application" path="/io/github/Rirusha/Cassette/application/">
|
||||
<schema id="space.rirusha.Cassette.application" path="/space/rirusha/Cassette/application/">
|
||||
|
||||
<key name="application-state" enum="io.github.Rirusha.Cassette.application.application-state">
|
||||
<key name="application-state" enum="space.rirusha.Cassette.application.application-state">
|
||||
<default>"begin"</default>
|
||||
</key>
|
||||
|
||||
|
@ -73,22 +73,22 @@
|
|||
|
||||
<!-- Client -->
|
||||
|
||||
<enum id="io.github.Rirusha.Cassette.client.repeat-mode">
|
||||
<enum id="space.rirusha.Cassette.client.repeat-mode">
|
||||
<value nick="off" value="0"/>
|
||||
<value nick="one" value="1"/>
|
||||
<value nick="queue" value="2"/>
|
||||
</enum>
|
||||
<enum id="io.github.Rirusha.Cassette.client.shuffle-mode">
|
||||
<enum id="space.rirusha.Cassette.client.shuffle-mode">
|
||||
<value nick="off" value="0"/>
|
||||
<value nick="on" value="1"/>
|
||||
</enum>
|
||||
|
||||
<schema id="io.github.Rirusha.Cassette.client" path="/io/github/Rirusha/Cassette/client/">
|
||||
<schema id="space.rirusha.Cassette.client" path="/space/rirusha/Cassette/client/">
|
||||
|
||||
<key name="repeat-mode" enum="io.github.Rirusha.Cassette.client.repeat-mode">
|
||||
<key name="repeat-mode" enum="space.rirusha.Cassette.client.repeat-mode">
|
||||
<default>"off"</default>
|
||||
</key>
|
||||
<key name="shuffle-mode" enum="io.github.Rirusha.Cassette.client.shuffle-mode">
|
||||
<key name="shuffle-mode" enum="space.rirusha.Cassette.client.shuffle-mode">
|
||||
<default>"off"</default>
|
||||
</key>
|
||||
|
|
@ -1,9 +1,10 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<component type="desktop">
|
||||
<component type="desktop-application">
|
||||
<name>Cassette</name>
|
||||
<id>io.github.Rirusha.Cassette</id>
|
||||
<id>@APP_ID@</id>
|
||||
<metadata_license>CC0-1.0</metadata_license>
|
||||
<project_license>GPL-3.0-only</project_license>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<summary>Unofficial Yandex Music client</summary>
|
||||
<description>
|
||||
<p>
|
||||
GTK/Adwaita application that allows to use Yandex Music
|
||||
|
@ -34,41 +35,61 @@
|
|||
Cassette is an unofficial client and is not associated with or endorsed by Yandex.
|
||||
</p>
|
||||
</description>
|
||||
<launchable type="desktop-id">@APP_ID_DYN@.desktop</launchable>
|
||||
<developer id="space.rirusha">
|
||||
<name>Vladimir Vaskov</name>
|
||||
<name xml:lang="ru">Владимир Васьков</name>
|
||||
</developer>
|
||||
<recommends>
|
||||
<control>keyboard</control>
|
||||
<control>pointing</control>
|
||||
<control>touch</control>
|
||||
</recommends>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#c0c0c0</color>
|
||||
<color type="primary" scheme_preference="dark">#303030</color>
|
||||
<color type="primary" scheme_preference="light">#fee372</color>
|
||||
<color type="primary" scheme_preference="dark">#dd624b</color>
|
||||
</branding>
|
||||
<content_rating type="oars-1.1">
|
||||
<content_attribute id="sex-themes">mild</content_attribute>
|
||||
<content_attribute id="language-profanity">moderate</content_attribute>
|
||||
<content_attribute id="language-discrimination">mild</content_attribute>
|
||||
</content_rating>
|
||||
<url type="homepage">@HOMEPAGE@</url>
|
||||
<url type="bugtracker">@BUGTRACKER@</url>
|
||||
<url type="help">@HELP@</url>
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://github.com/Rirusha/Cassette/blob/master/data/images/1-liked.png?raw=true</image>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/1-liked-view.png</image>
|
||||
<caption>Liked view</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://github.com/Rirusha/Cassette/blob/master/data/images/2-playlists.png?raw=true</image>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/2-playlists-view.png</image>
|
||||
<caption>Playlists view</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://github.com/Rirusha/Cassette/blob/master/data/images/3-lyrics.png?raw=true</image>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/3-sync-lyrics.png</image>
|
||||
<caption>Sync lyrics</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://github.com/Rirusha/Cassette/blob/master/data/images/4-queue.png?raw=true</image>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/4-playback-queue.png</image>
|
||||
<caption>Playback queue</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://github.com/Rirusha/Cassette/blob/master/data/images/5-main-settings.png?raw=true</image>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/5-waves-view.png</image>
|
||||
<caption>Waves view</caption>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://gitlab.gnome.org/Rirusha/Cassette/-/raw/959c28f67e219efdba1fa280d2170d3d72bed20a/data/images/6-main-settings.png</image>
|
||||
<caption>Main preferences</caption>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
<summary>Unofficial Yandex.Music client</summary>
|
||||
<launchable type="desktop-id">io.github.Rirusha.Cassette.desktop</launchable>
|
||||
<releases>
|
||||
<release version="0.2.0" date="2024-01-28">
|
||||
<release version="0.2.1" date="2025-02-25">
|
||||
<description>
|
||||
<p>Fixed a bug on the stations page and the playlist page in GNOME 48</p>
|
||||
</description>
|
||||
</release>
|
||||
<release version="0.2.0" date="2024-07-10">
|
||||
<description>
|
||||
<p>A release dedicated to My Vibe</p>
|
||||
<ul>
|
||||
|
@ -132,8 +153,4 @@
|
|||
</description>
|
||||
</release>
|
||||
</releases>
|
||||
<url type="homepage">https://github.com/Rirusha/Cassette</url>
|
||||
<url type="bugtracker">https://github.com/Rirusha/Cassette/issues</url>
|
||||
<url type="help">https://t.me/CassetteGNOME_Discussion</url>
|
||||
<developer_name>Rirusha</developer_name>
|
||||
</component>
|
|
@ -65,7 +65,7 @@ frame {
|
|||
background-color: rgba(0, 0, 0, 0);
|
||||
}
|
||||
|
||||
.plus-background {
|
||||
.plus-button {
|
||||
color: white;
|
||||
background-image: linear-gradient(90deg,#ff5c4d,#eb469f 30%,#8341ef 75%,#3f68f9);
|
||||
}
|
||||
|
|
|
@ -21,10 +21,10 @@ template $CassetteAccountInfoDialog: Adw.Dialog {
|
|||
margin-bottom: 12;
|
||||
margin-start: 12;
|
||||
margin-end: 12;
|
||||
maximum-size: 450;
|
||||
maximum-size: 360;
|
||||
|
||||
Box {
|
||||
spacing: 24;
|
||||
spacing: 12;
|
||||
orientation: vertical;
|
||||
|
||||
Adw.Avatar avatar {}
|
||||
|
@ -39,45 +39,35 @@ template $CassetteAccountInfoDialog: Adw.Dialog {
|
|||
wrap: true;
|
||||
}
|
||||
|
||||
Box {
|
||||
orientation: vertical;
|
||||
halign: center;
|
||||
spacing: 8;
|
||||
|
||||
Button user_button {
|
||||
ListBox {
|
||||
styles [
|
||||
"pill"
|
||||
"boxed-list-separate"
|
||||
]
|
||||
|
||||
margin-top: 12;
|
||||
selection-mode: none;
|
||||
|
||||
Adw.ButtonRow user_button {
|
||||
action-name: "app.open-account";
|
||||
label: _("Open in browser");
|
||||
hexpand: true;
|
||||
can-shrink: true;
|
||||
title: _("Open in browser");
|
||||
}
|
||||
|
||||
Button plus_button {
|
||||
Adw.ButtonRow plus_button {
|
||||
styles [
|
||||
"pill",
|
||||
"plus-background"
|
||||
"plus-button"
|
||||
]
|
||||
|
||||
action-name: "app.open-plus";
|
||||
label: _("Plus");
|
||||
hexpand: true;
|
||||
can-shrink: true;
|
||||
title: _("Plus");
|
||||
}
|
||||
|
||||
Button logout_button {
|
||||
Adw.ButtonRow logout_button {
|
||||
styles [
|
||||
"pill",
|
||||
"destructive-action"
|
||||
]
|
||||
|
||||
margin-top: 24;
|
||||
action-name: "app.log-out";
|
||||
label: _("Log out");
|
||||
hexpand: true;
|
||||
can-shrink: true;
|
||||
title: _("Log out");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,17 @@ template $CassetteCoverImage: Frame {
|
|||
halign: center;
|
||||
valign: center;
|
||||
|
||||
Image real_image {
|
||||
Stack stack {
|
||||
hhomogeneous: true;
|
||||
|
||||
StackPage {
|
||||
name: "placeholder";
|
||||
child: Image placeholder_image {
|
||||
icon-size: large;
|
||||
icon-name: "audio-x-generic-symbolic";
|
||||
width-request: bind template.image-widget-size;
|
||||
height-request: bind template.image-widget-size;
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -25,8 +25,8 @@ template $CassetteHeaderBar: $CassetteShrinkableBin {
|
|||
ToggleButton search_button {
|
||||
icon-name: "edit-find-symbolic";
|
||||
visible: false;
|
||||
tooltip-text: _("Yandex.Music search");
|
||||
sensitive: bind template.interactive;
|
||||
tooltip-text: _("Yandex Music search");
|
||||
// sensitive: bind template.interactive;
|
||||
}
|
||||
|
||||
title-widget: Adw.ViewSwitcher switcher_title {
|
||||
|
|
|
@ -11,27 +11,46 @@ template $CassetteNoPlusDialog: Adw.Dialog {
|
|||
[top]
|
||||
Adw.HeaderBar {}
|
||||
|
||||
content: Adw.StatusPage {
|
||||
margin-top: 24;
|
||||
margin-bottom: 12;
|
||||
margin-start: 12;
|
||||
margin-end: 12;
|
||||
content: Box {
|
||||
orientation: vertical;
|
||||
|
||||
Adw.StatusPage {
|
||||
vexpand: true;
|
||||
icon-name: "dialog-warning-symbolic";
|
||||
title: _("No Plus Subscription");
|
||||
description: _("To avoid problems with Yandex, the online functions of the application are not available without a Yandex.Plus subscription. Thanks for understanding.");
|
||||
}
|
||||
|
||||
Button logout_button {
|
||||
ListBox {
|
||||
styles [
|
||||
"boxed-list-separate"
|
||||
]
|
||||
|
||||
margin-top: 12;
|
||||
margin-bottom: 12;
|
||||
margin-start: 12;
|
||||
margin-end: 12;
|
||||
selection-mode: none;
|
||||
|
||||
Adw.ButtonRow get_plus_button {
|
||||
styles [
|
||||
"plus-button",
|
||||
]
|
||||
|
||||
action-name: "app.get-plus";
|
||||
title: _("Get Plus");
|
||||
hexpand: true;
|
||||
}
|
||||
|
||||
Adw.ButtonRow logout_button {
|
||||
styles [
|
||||
"pill",
|
||||
"destructive-action"
|
||||
]
|
||||
|
||||
visible: bind template.log-out-button-visible;
|
||||
margin-top: 24;
|
||||
action-name: "app.log-out";
|
||||
label: _("Log out");
|
||||
title: _("Log out");
|
||||
hexpand: true;
|
||||
can-shrink: true;
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
|
|
|
@ -36,7 +36,7 @@
|
|||
<style>
|
||||
<class name="title-1"/>
|
||||
</style>
|
||||
<property name="label" translatable="true">Also you liked this playlists</property>
|
||||
<property name="label" translatable="true">Also you liked these playlists</property>
|
||||
</object>
|
||||
</child>
|
||||
<child>
|
||||
|
|
|
@ -17,7 +17,7 @@
|
|||
</style>
|
||||
<property name="search-delay">900</property>
|
||||
<property name="hexpand">true</property>
|
||||
<!-- Translators: placeholder of "search" entry. Local track search (inside of track lsit) -->
|
||||
<!-- Translators: placeholder of "search" entry. Local track search (inside of track list) -->
|
||||
<property name="placeholder-text" translatable="true">Search track</property>
|
||||
</object>
|
||||
</child>
|
||||
|
|
|
@ -1,61 +0,0 @@
|
|||
## Как внести вклад
|
||||
|
||||
Если вы не знаете, чем занятся, то:
|
||||
* Все запланированные задачи лежат в разделе issue и имеют ярлык "enchancement".
|
||||
* Все известные проблемы лежат там же и имеют ярлык "bug".
|
||||
|
||||
Выбирайте задачи из ближайших версией. Их список вы можете найти [здесь](https://github.com/Rirusha/Cassette/milestones). Это как ускорит выход следующей версии, так и облегчит ревью, так так не нужно будет переключаться с одной глобальной проблемы на другую.
|
||||
|
||||
Также если решили исправить какой-то баг, описанный в issue, сначала убедитесь, что его всё ещё можно воспроизвести в `master` ветке.
|
||||
|
||||
Также, если вы считаете, что приложению чего-то не хватает или вы нашли баг, то не стесняйтесь создавать issue.
|
||||
|
||||
## Именование коммитов
|
||||
Заголовок сообщения должен иметь вид:
|
||||
```
|
||||
feat: добавить кнопку проигрывания в `Имя виджета`
|
||||
|
||||
Кнопки не хватало, поэтому её нужно было добавить
|
||||
```
|
||||
Это пример. Подробнее правила описаны [здесь](https://github.com/conventional-changelog/commitlint/tree/master/%40commitlint/config-conventional). Также тело сообщения необязательно, если информация в заголове исчерпывающая. Также вот список всех типов коммитов с описаниями:
|
||||
|
||||
* `build`: Используется для изменений, связанных с сборкой системы или внешними зависимостями.
|
||||
|
||||
* `chore`: Обычно включает в себя изменения, которые не относятся непосредственно к коду или тестам, например, обновление документации, настройка среды разработки, повышение версии и т. д.
|
||||
|
||||
* `ci`: Относится к изменениям, связанным с настройкой или улучшением CI.
|
||||
|
||||
* `docs`: Используется для изменений, касающихся только документации, например, исправления опечаток, обновление README или добавление комментариев в код.
|
||||
|
||||
* `feat`: Обозначает добавление новой функциональности или возможности в проект.
|
||||
|
||||
* `fix`: Относится к исправлению ошибок в коде или исправлению неполадок в проекте.
|
||||
|
||||
* `perf`: Используется, когда вносятся изменения с целью улучшения производительности.
|
||||
|
||||
* `refactor`: Относится к изменениям, которые не добавляют новую функциональность, а только изменяют структуру или организацию существующего кода.
|
||||
|
||||
* `revert`: Используется для отмены предыдущих коммитов в истории проекта.
|
||||
|
||||
* `style`: Относится к изменениям в форматировании кода, например, правки пробелов, отступов, переносов строк и т. д.
|
||||
|
||||
* `test`: Используется для добавления или изменения тестового кода, например, тестирование новой функциональности или исправление существующих тестов.
|
||||
|
||||
* `po`: Используется для добавления или изменения перевода.
|
||||
|
||||
## Создание Pull Request'ов
|
||||
Все Pull Request'ы должны быть сделанны в `master` ветку. Если вы закрываете какое-то issue, то ссылайтесь на него с ключевым словом "close" в теле коммита, например:
|
||||
```
|
||||
fix: исправить некорректное поведение
|
||||
|
||||
close #123
|
||||
```
|
||||
|
||||
## Форматирование кода
|
||||
Если вы используете Visual Studio Code, то есть таск для запуска линтера. Иначе используйте в линтере конфигурацию в корне репозитория: vala-lint.conf, CI использует именно её.
|
||||
|
||||
## Разработка
|
||||
Проверяйте сборку, используя flatpak, так как это единственная официально поддерживаемая версия.
|
||||
|
||||
## Тестирование
|
||||
Крайне приветствуется написание или дополнение существующих тестов для клиента.
|
|
@ -42,13 +42,13 @@ wsl -t Ubuntu
|
|||
#### В терминале Ubuntu:
|
||||
```shell
|
||||
sudo flatpak remote-add --if-not-exists flathub https://dl.flathub.org/repo/flathub.flatpakrepo
|
||||
sudo flatpak install io.github.Rirusha.Cassette
|
||||
sudo flatpak install space.rirusha.Cassette
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> После перезагрузки Windows в меню «Пуск» появиться ярлык приложения Cassette, но его также можно запустить из терминала Ubuntu так:
|
||||
> ```shell
|
||||
> flatpak run io.github.Rirusha.Cassette
|
||||
> flatpak run space.rirusha.Cassette
|
||||
> ```
|
||||
|
||||
### nightly версия
|
||||
|
@ -76,11 +76,11 @@ sudo flatpak remote-add --if-not-exists cassette-nightly https://rirusha.github.
|
|||
|
||||
```shell
|
||||
sudo flatpak install org.gnome.Platform//master
|
||||
sudo flatpak install cassette-nightly io.github.Rirusha.Cassette-Devel
|
||||
sudo flatpak install cassette-nightly space.rirusha.Cassette.Devel
|
||||
```
|
||||
|
||||
> [!NOTE]
|
||||
> После перезагрузки Windows в меню «Пуск» появиться ярлык приложения Cassette-Devel, но его также можно запустить из терминала Ubuntu так:
|
||||
> После перезагрузки Windows в меню «Пуск» появиться ярлык приложения Cassette.Devel, но его также можно запустить из терминала Ubuntu так:
|
||||
> ```shell
|
||||
> flatpak run io.github.Rirusha.Cassette-Devel
|
||||
> flatpak run space.rirusha.Cassette.Devel
|
||||
> ```
|
||||
|
|
194
docs/README-ru.md
Normal file
|
@ -0,0 +1,194 @@
|
|||
Язык README: \
|
||||
[](README.md)
|
||||
[](docs/README-ru.md)
|
||||
|
||||
<div align="center">
|
||||
<h1>
|
||||
<img
|
||||
src="data/icons/hicolor/scalable/apps/space.rirusha.Cassette.svg"
|
||||
height="64"
|
||||
/>
|
||||
Cassette
|
||||
</h1>
|
||||
|
||||
<a href="https://stopthemingmy.app">
|
||||
<img src="https://stopthemingmy.app/badge.svg"/>
|
||||
</a>
|
||||
|
||||
<a href="https://t.me/CassetteGNOME_Devlog">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/Канал-blue?style=flat&logo=telegram">
|
||||
</a>
|
||||
|
||||
<a href="https://t.me/CassetteGNOME_Devlog">
|
||||
<img alt="Static Badge" src="https://img.shields.io/badge/Чат-blue?style=flat&logo=telegram">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<div align="center"><h4>GTK4/Adwaita приложение, которое позволит вам использовать Я.Музыку на Linux.</h4></div>
|
||||
|
||||
<div align="center">
|
||||
<img src="data/images/1-liked-view.png" alt="Preview"/>
|
||||
</div>
|
||||
|
||||
## Установка
|
||||
|
||||
**Flathub:**
|
||||
|
||||
<a href="https://flathub.org/apps/details/space.rirusha.Cassette">
|
||||
<img width='240' alt='Скачать на Flathub' src='https://flathub.org/assets/badges/flathub-badge-en.svg'/>
|
||||
</a>
|
||||
|
||||
```shell
|
||||
flatpak install space.rirusha.Cassette
|
||||
```
|
||||
|
||||
**Репозитории дистрибутивов:**
|
||||
|
||||
[](https://repology.org/project/cassette/versions)
|
||||
|
||||
### ALT Linux
|
||||
```shell
|
||||
su -
|
||||
apt-get install cassette
|
||||
```
|
||||
|
||||
### Arch Linux
|
||||
|
||||
> Большинство помощников AUR поддерживают флаги в стиле Pacman, например, yay.
|
||||
|
||||
#### yay
|
||||
```shell
|
||||
yay -S cassette
|
||||
```
|
||||
|
||||
#### pamac
|
||||
```shell
|
||||
pamac install cassette
|
||||
```
|
||||
|
||||
### NixOS Unstable
|
||||
```shell
|
||||
nix-shell -p cassette
|
||||
```
|
||||
|
||||
## Сборка
|
||||
|
||||
#### Зависимости:
|
||||
|
||||
* `gtk4`, версия: `>= 4.14`
|
||||
* `libadwaita-1`, версия: `>= 1.5`
|
||||
* `libsoup-3.0`
|
||||
* `gdk-pixbuf-2.0`
|
||||
* `json-glib-1.0`
|
||||
* `sqlite3`
|
||||
* `gee-0.8`
|
||||
* `libxml-2.0`
|
||||
* `gstreamer-1.0`
|
||||
* `webkitgtk-6.0`
|
||||
* `gio-2.0`, версия: `>= 2.72`
|
||||
* `git`, только для `devel`
|
||||
|
||||
#### Утилиты для сборки:
|
||||
|
||||
* `meson`
|
||||
* `ninja`
|
||||
* `cmake`
|
||||
* `blueprint-compiler`
|
||||
* `gcc`
|
||||
* `valac`
|
||||
* `pkg`
|
||||
* `appstream-utils`
|
||||
|
||||
### ПредРелиз
|
||||
|
||||
> В данной версии будут недоступны нестабильные функции, находящиеся в разработке.
|
||||
```shell
|
||||
meson setup _build
|
||||
```
|
||||
|
||||
### Флаг `is_devel`
|
||||
|
||||
> В данной версии будут доступны все функции, находящиеся в разработке.
|
||||
```shell
|
||||
meson setup _build -Dis_devel=true
|
||||
```
|
||||
|
||||
#### Установка
|
||||
```shell
|
||||
sudo ninja install -C _build
|
||||
```
|
||||
|
||||
#### Тестирование
|
||||
```shell
|
||||
ninja -C _build test
|
||||
```
|
||||
|
||||
#### Удаление
|
||||
```shell
|
||||
sudo ninja uninstall -C _build
|
||||
```
|
||||
|
||||
## Версия "В разработке"
|
||||
|
||||
> Эта версия обновляется после каждого изменения, так что она может быть нестабильна.
|
||||
|
||||
Нужно добавить `cassette-nightly` и `gnome-nightly` репозиторий:
|
||||
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
flatpak remote-add --if-not-exists cassette-nightly https://rirusha.space/repos/cassette-nightly.flatpakrepo
|
||||
```
|
||||
|
||||
Установка приложения:
|
||||
|
||||
```shell
|
||||
flatpak install cassette-nightly space.rirusha.Cassette.Devel
|
||||
```
|
||||
|
||||
## Для разработчиков
|
||||
|
||||
> Репозиторий имеет рекомендуемые расширения для разработки с Visual Studio Code.
|
||||
|
||||
### Зависимости
|
||||
|
||||
#### репозиторий [gnome-nightly](https://wiki.gnome.org/Apps/Nightly):
|
||||
```shell
|
||||
flatpak remote-add --if-not-exists gnome-nightly https://nightly.gnome.org/gnome-nightly.flatpakrepo
|
||||
```
|
||||
|
||||
#### Для запуска
|
||||
`org.gnome.Platform//master`
|
||||
```shell
|
||||
flatpak install org.gnome.Platform//master
|
||||
```
|
||||
|
||||
#### Для сборки
|
||||
`org.gnome.Sdk//master` \
|
||||
`org.freedesktop.Sdk.Extension.vala//23.08beta`
|
||||
```shell
|
||||
flatpak install org.gnome.Sdk//master org.freedesktop.Sdk.Extension.vala//23.08beta
|
||||
```
|
||||
|
||||
## Поддержка
|
||||
|
||||
Вы можете поддержать несколькими способами:
|
||||
- Создать issue с проблемой или предложением по улучшению
|
||||
- Отправить merge request с фиксом или добавлением функционала
|
||||
- Поддержать рублём (Просьба указывать в "Сообщении получателю" свой никнейм при отправлении через Т-Банк):
|
||||
|
||||
<br>
|
||||
|
||||
<div align="center">
|
||||
<a href="https://www.tbank.ru/cf/21GCxLuFuE9" style="margin-right: 100px;">
|
||||
<img height="200" src="../assets/tbank.png" alt="Tinkoff">
|
||||
</a>
|
||||
<a href="https://boosty.to/rirusha/donate">
|
||||
<img height="200" src="../assets/boosty.png" alt="boosty.to">
|
||||
</a>
|
||||
</div>
|
||||
|
||||
## Благодарность
|
||||
Спасибо [MarshalX](https://github.com/MarshalX). Библиотека [yandex-music-api](https://github.com/MarshalX/yandex-music-api) была использована в качестве документации к api.
|
||||
|
||||
> Внимание!
|
||||
> Cassette - неофициальный клиент, не связан с компанией Яндекс и не одобрен ей.
|
61
flake.lock
generated
Normal file
|
@ -0,0 +1,61 @@
|
|||
{
|
||||
"nodes": {
|
||||
"flake-utils": {
|
||||
"inputs": {
|
||||
"systems": "systems"
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1710146030,
|
||||
"narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "numtide",
|
||||
"repo": "flake-utils",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"nixpkgs": {
|
||||
"locked": {
|
||||
"lastModified": 1720542800,
|
||||
"narHash": "sha256-ZgnNHuKV6h2+fQ5LuqnUaqZey1Lqqt5dTUAiAnqH0QQ=",
|
||||
"owner": "nixos",
|
||||
"repo": "nixpkgs",
|
||||
"rev": "feb2849fdeb70028c70d73b848214b00d324a497",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nixos",
|
||||
"ref": "nixos-unstable",
|
||||
"repo": "nixpkgs",
|
||||
"type": "github"
|
||||
}
|
||||
},
|
||||
"root": {
|
||||
"inputs": {
|
||||
"flake-utils": "flake-utils",
|
||||
"nixpkgs": "nixpkgs"
|
||||
}
|
||||
},
|
||||
"systems": {
|
||||
"locked": {
|
||||
"lastModified": 1681028828,
|
||||
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
|
||||
"type": "github"
|
||||
},
|
||||
"original": {
|
||||
"owner": "nix-systems",
|
||||
"repo": "default",
|
||||
"type": "github"
|
||||
}
|
||||
}
|
||||
},
|
||||
"root": "root",
|
||||
"version": 7
|
||||
}
|
69
flake.nix
Normal file
|
@ -0,0 +1,69 @@
|
|||
{
|
||||
description = "GTK4/Adwaita application that allows you to use Yandex Music service on Linux operating systems";
|
||||
|
||||
inputs = {
|
||||
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||
flake-utils.url = "github:numtide/flake-utils";
|
||||
};
|
||||
|
||||
outputs = {
|
||||
self,
|
||||
nixpkgs,
|
||||
flake-utils,
|
||||
...
|
||||
}:
|
||||
flake-utils.lib.eachDefaultSystem
|
||||
(
|
||||
system: let
|
||||
pkgs = import nixpkgs {inherit system;};
|
||||
|
||||
nativeBuildInputs = with pkgs; [
|
||||
blueprint-compiler
|
||||
desktop-file-utils
|
||||
meson
|
||||
ninja
|
||||
pkg-config
|
||||
vala
|
||||
];
|
||||
|
||||
buildInputs = with pkgs; [
|
||||
glib-networking
|
||||
gst_all_1.gst-plugins-bad
|
||||
gst_all_1.gst-plugins-base
|
||||
gst_all_1.gst-plugins-good
|
||||
gst_all_1.gstreamer
|
||||
gtk4
|
||||
json-glib
|
||||
libadwaita
|
||||
libgee
|
||||
libsoup_3
|
||||
libxml2
|
||||
sqlite
|
||||
webkitgtk_6_0
|
||||
];
|
||||
in {
|
||||
packages.default = pkgs.stdenv.mkDerivation {
|
||||
name = "cassette";
|
||||
src = self;
|
||||
|
||||
mesonFlags = [
|
||||
"-Dis_devel=true"
|
||||
];
|
||||
|
||||
nativeBuildInputs = with pkgs;
|
||||
[
|
||||
wrapGAppsHook4
|
||||
git
|
||||
]
|
||||
++ nativeBuildInputs;
|
||||
|
||||
inherit buildInputs;
|
||||
|
||||
strictDeps = true;
|
||||
};
|
||||
devShells.default = pkgs.mkShell {
|
||||
packages = with pkgs; [alejandra] ++ nativeBuildInputs ++ buildInputs;
|
||||
};
|
||||
}
|
||||
);
|
||||
}
|
48
meson.build
|
@ -1,16 +1,16 @@
|
|||
project(
|
||||
'cassette',
|
||||
['c', 'vala'],
|
||||
version: '0.2.0',
|
||||
meson_version: '>= 0.62.0',
|
||||
license: 'GPL-3.0-only',
|
||||
version: '0.2.1',
|
||||
meson_version: '>= 1.0.0',
|
||||
license: 'GPL-3.0-or-later',
|
||||
)
|
||||
|
||||
i18n = import('i18n')
|
||||
gnome = import('gnome')
|
||||
|
||||
gtk = dependency('gtk4', version: '>= 4.14')
|
||||
libadwaita = dependency('libadwaita-1', version: '>= 1.5')
|
||||
gtk = dependency('gtk4', version: '>= 4.15')
|
||||
libadwaita = dependency('libadwaita-1', version: '>= 1.6')
|
||||
threads = dependency('threads')
|
||||
libsoup = dependency('libsoup-3.0')
|
||||
gdkpixbuf = dependency('gdk-pixbuf-2.0')
|
||||
|
@ -22,35 +22,37 @@ gstreamer = dependency('gstreamer-1.0')
|
|||
webkit = dependency('webkitgtk-6.0')
|
||||
gio = dependency('gio-2.0', version: '>= 2.72')
|
||||
|
||||
app_id = 'io.github.Rirusha.Cassette'
|
||||
app_id = 'space.rirusha.Cassette'
|
||||
|
||||
if get_option('profile') == 'development'
|
||||
find_program('git', required: true)
|
||||
name_postfix = ' (Devel)'
|
||||
app_id_dyn = '@0@-Devel'.format(app_id)
|
||||
app_identity_dyn = 'Cassette (Devel)'
|
||||
profile = 'Devel'
|
||||
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD').stdout().strip()
|
||||
version_suffix = '-dev.@0@'.format (vcs_tag)
|
||||
else
|
||||
name_postfix = ''
|
||||
app_id_dyn = app_id
|
||||
app_identity_dyn = 'Cassette'
|
||||
profile = ''
|
||||
name_suffix = ''
|
||||
version_suffix = ''
|
||||
app_id_suffix = ''
|
||||
|
||||
if get_option('is_devel')
|
||||
name_suffix = ' (Devel)'
|
||||
app_id_suffix = '.Devel'
|
||||
|
||||
find_program('git', required: true)
|
||||
vcs_tag = run_command('git', 'rev-parse', '--short', 'HEAD', check: true).stdout().strip()
|
||||
version_suffix = '-dev.@0@'.format (vcs_tag)
|
||||
endif
|
||||
|
||||
app_id_dyn = '@0@@1@'.format (app_id, app_id_suffix)
|
||||
app_name = 'Cassette@0@'.format (name_suffix)
|
||||
|
||||
conf = configuration_data()
|
||||
conf.set_quoted('APP_ID', app_id)
|
||||
conf.set_quoted('APP_NAME', 'Cassette@0@'.format (name_postfix))
|
||||
conf.set_quoted('APP_ID_DYN', app_id_dyn)
|
||||
conf.set_quoted('APP_IDENTITY_DYN', app_identity_dyn)
|
||||
conf.set_quoted('APP_NAME', app_name)
|
||||
conf.set_quoted('G_LOG_DOMAIN', app_id)
|
||||
conf.set_quoted('PROFILE', profile)
|
||||
conf.set_quoted('VERSION', meson.project_version() + version_suffix)
|
||||
conf.set10('IS_DEVEL', get_option('is_devel'))
|
||||
conf.set_quoted('VERSION', '@0@@1@'.format (meson.project_version(), version_suffix))
|
||||
conf.set_quoted('GETTEXT_PACKAGE', meson.project_name())
|
||||
conf.set_quoted('DATADIR', join_paths(get_option('prefix'), get_option('datadir')))
|
||||
conf.set_quoted('GNOMELOCALEDIR', join_paths(get_option('prefix'), get_option('localedir')))
|
||||
conf.set_quoted('HOMEPAGE', 'https://gitlab.gnome.org/Rirusha/Cassette')
|
||||
conf.set_quoted('BUGTRACKER', 'https://gitlab.gnome.org/Rirusha/Cassette/-/issues')
|
||||
conf.set_quoted('HELP', 'https://t.me/CassetteGNOME_Discussion')
|
||||
|
||||
subdir('data')
|
||||
|
||||
|
|
|
@ -1,10 +1,5 @@
|
|||
option(
|
||||
'profile',
|
||||
type: 'combo',
|
||||
choices: [
|
||||
'default',
|
||||
'development',
|
||||
],
|
||||
value: 'default',
|
||||
description: 'The build profile for app. One of "default" or "development".'
|
||||
'is_devel',
|
||||
type: 'boolean',
|
||||
value: false
|
||||
)
|
||||
|
|
|
@ -1,4 +1,13 @@
|
|||
# Please keep this list alphabetically sorted
|
||||
az
|
||||
be
|
||||
de
|
||||
es
|
||||
ka
|
||||
pt
|
||||
pt_BR
|
||||
ru
|
||||
sl
|
||||
sv
|
||||
tr
|
||||
zh_CN
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
data/io.github.Rirusha.Cassette.appdata.xml.in
|
||||
data/io.github.Rirusha.Cassette.desktop.in
|
||||
data/io.github.Rirusha.Cassette-Devel.desktop.in
|
||||
data/space.rirusha.Cassette.desktop.in.in
|
||||
data/space.rirusha.Cassette.Devel.desktop.in.in
|
||||
data/space.rirusha.Cassette.metainfo.xml.in.in
|
||||
data/ui/account-info-dialog.blp
|
||||
data/ui/begin-view.ui
|
||||
data/ui/cache-deletion-preferences.ui
|
||||
|
|
|
@ -1,2 +1 @@
|
|||
# add_project_arguments('-DGETTEXT_PACKAGE="cassette"', language:'c')
|
||||
i18n.gettext(meson.project_name(), preset: 'glib')
|
||||
|
|
1364
po/pt_BR.po
Normal file
|
@ -6,8 +6,8 @@ touch ./po/unsort-POTFILES.in
|
|||
find ./data/ui -iname "*.ui" -type f -exec grep -l "translatable" {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./data/ui -iname "*.blp" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./src -iname "*.vala" -type f -exec grep -lrE '_\(|C_|ngettext' {} + | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./data/ -iname "*.desktop.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./data/ -iname "*.appdata.xml.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./data/ -iname "*.desktop.in.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
find ./data/ -iname "*.metainfo.xml.in.in" | while read file; do echo "${file#./}" >> ./po/unsort-POTFILES.in; done
|
||||
|
||||
cat ./po/unsort-POTFILES.in | sort | uniq > ./po/POTFILES.in
|
||||
|
||||
|
|
1328
po/zh_CN.po
Normal file
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,36 +13,35 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette {
|
||||
|
||||
public Adw.AboutDialog build_about_dialog () {
|
||||
const string RIRUSHA = "Rirusha https://github.com/Rirusha";
|
||||
const string ME = "Vladimir Vaskov https://gitlab.gnome.org/Rirusha";
|
||||
const string TELEGRAM_CHAT = "https://t.me/CassetteGNOME_Discussion";
|
||||
const string TELEGRAM_CHANNEL = "https://t.me/CassetteGNOME_Devlog";
|
||||
const string ISSUE_LINK = "https://github.com/Rirusha/Cassette/issues/new";
|
||||
const string TINKOFF_SUPPORT_LINK = "https://www.tinkoff.ru/cf/21GCxLuFuE9";
|
||||
const string BOOSTY_SUPPORT_LINK = "https://boosty.to/rirusha/donate";
|
||||
|
||||
string[] developers = {
|
||||
RIRUSHA,
|
||||
ME,
|
||||
"KseBooka https://github.com/KseBooka"
|
||||
};
|
||||
|
||||
string[] designers = {
|
||||
RIRUSHA
|
||||
ME
|
||||
};
|
||||
|
||||
string[] artists = {
|
||||
RIRUSHA,
|
||||
ME,
|
||||
"Arseniy Nechkin <krisgeniusnos@gmail.com>",
|
||||
"NaumovSN",
|
||||
};
|
||||
|
||||
string[] documenters = {
|
||||
RIRUSHA,
|
||||
ME,
|
||||
"Armatik https://github.com/Armatik",
|
||||
"Fiersik https://github.com/fiersik",
|
||||
"Mikazil https://github.com/Mikazil",
|
||||
|
@ -50,7 +50,7 @@ namespace Cassette {
|
|||
var about = new Adw.AboutDialog () {
|
||||
application_name = Config.APP_NAME,
|
||||
application_icon = Config.APP_ID_DYN,
|
||||
developer_name = "Rirusha",
|
||||
developer_name = "Vladimir Vaskov",
|
||||
version = Config.VERSION,
|
||||
developers = developers,
|
||||
designers = designers,
|
||||
|
@ -58,10 +58,10 @@ namespace Cassette {
|
|||
documenters = documenters,
|
||||
// Translators: NAME <EMAIL.COM> /n NAME <EMAIL.COM>
|
||||
translator_credits = _("translator-credits"),
|
||||
license_type = Gtk.License.GPL_3_0_ONLY,
|
||||
copyright = "© 2023-2024 Rirusha",
|
||||
license_type = Gtk.License.GPL_3_0,
|
||||
copyright = "© 2023-2024 Vladimir Vaskov",
|
||||
support_url = TELEGRAM_CHAT,
|
||||
issue_url = ISSUE_LINK,
|
||||
issue_url = Config.BUGTRACKER,
|
||||
release_notes_version = Config.VERSION
|
||||
};
|
||||
|
||||
|
@ -69,28 +69,43 @@ namespace Cassette {
|
|||
about.add_link (_("Financial support (Tinkoff)"), TINKOFF_SUPPORT_LINK);
|
||||
about.add_link (_("Financial support (Boosty)"), BOOSTY_SUPPORT_LINK);
|
||||
|
||||
// Please keep alphabetical
|
||||
about.add_acknowledgement_section (_("Sponsors"), {
|
||||
"Alex Gluck",
|
||||
"Amper Shiz",
|
||||
"Anton P.",
|
||||
"AveryanAlex",
|
||||
"Avr_Iv",
|
||||
"belovmv",
|
||||
"dant4ick",
|
||||
"Dmitry M.",
|
||||
"Do6pblu_Jyk",
|
||||
"eugene_t",
|
||||
"Fiersik",
|
||||
"Fissium",
|
||||
"gen1s",
|
||||
"InDevOne",
|
||||
"IQQator",
|
||||
"Ivan A.",
|
||||
"katze_942",
|
||||
"khaustovdn",
|
||||
"krylov_alexandr",
|
||||
"kvadrozorro",
|
||||
"Mikazil E.",
|
||||
"Mikazil",
|
||||
"Mikhail Postnikov",
|
||||
"Nikolai M.",
|
||||
"Oleg Shchavelev",
|
||||
"Pavel T.",
|
||||
"Petr Chelpanov",
|
||||
"Roman Aysin",
|
||||
"Semen Fomchenkov",
|
||||
"Sergey G.",
|
||||
"Sergey P.",
|
||||
"Sergey S.",
|
||||
"Shakhrutdin Z.",
|
||||
"Spp595",
|
||||
"Tamahome",
|
||||
"Toxblh",
|
||||
"Vasily Biryukov",
|
||||
"werlock",
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Cassette.Client;
|
||||
|
@ -54,6 +55,7 @@ namespace Cassette {
|
|||
{ "parse-url", on_parse_url_action },
|
||||
{ "open-account", on_open_account_action },
|
||||
{ "open-plus", on_open_plus_action },
|
||||
{ "get-plus", on_get_plus_action },
|
||||
{ "mute", on_mute_action },
|
||||
};
|
||||
|
||||
|
@ -90,14 +92,14 @@ namespace Cassette {
|
|||
|
||||
public bool is_devel {
|
||||
get {
|
||||
return Config.PROFILE == "Devel";
|
||||
return Config.IS_DEVEL;
|
||||
}
|
||||
}
|
||||
|
||||
public Application () {
|
||||
Object (
|
||||
application_id: Config.APP_ID_DYN,
|
||||
resource_base_path: "/io/github/Rirusha/Cassette/",
|
||||
resource_base_path: "/space/rirusha/Cassette/",
|
||||
flags: ApplicationFlags.DEFAULT_FLAGS | ApplicationFlags.HANDLES_OPEN
|
||||
);
|
||||
}
|
||||
|
@ -105,7 +107,7 @@ namespace Cassette {
|
|||
construct {
|
||||
application = this;
|
||||
|
||||
settings = new Settings ("io.github.Rirusha.Cassette.application");
|
||||
settings = new Settings ("space.rirusha.Cassette.application");
|
||||
|
||||
Cassette.Client.init (is_devel);
|
||||
|
||||
|
@ -437,21 +439,15 @@ namespace Cassette {
|
|||
}
|
||||
|
||||
void on_open_account_action () {
|
||||
try {
|
||||
Process.spawn_command_line_async ("xdg-open https://id.yandex.ru/");
|
||||
|
||||
} catch (SpawnError e) {
|
||||
Logger.warning (_("Error while opening uri: %s").printf (e.message));
|
||||
}
|
||||
new Gtk.UriLauncher ("https://id.yandex.ru/").launch.begin (null, null);
|
||||
}
|
||||
|
||||
void on_open_plus_action () {
|
||||
try {
|
||||
Process.spawn_command_line_async ("xdg-open https://plus.yandex.ru/");
|
||||
|
||||
} catch (SpawnError e) {
|
||||
Logger.warning (_("Error while opening uri: %s").printf (e.message));
|
||||
new Gtk.UriLauncher ("https://plus.yandex.ru/").launch.begin (null, null);
|
||||
}
|
||||
|
||||
void on_get_plus_action () {
|
||||
new Gtk.UriLauncher ("https://plus.yandex.ru/getplus/").launch.begin (null, null);
|
||||
}
|
||||
|
||||
void on_mute_action () {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
// DEPROCATED
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
using Gee;
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
namespace Cassette.Client.YaMAPI {
|
||||
|
|
|
@ -1,8 +1,9 @@
|
|||
/* Copyright 2023-2024 Rirusha
|
||||
/* Copyright 2023-2024 Vladimir Vaskov
|
||||
*
|
||||
* This program is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, version 3
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
|
@ -12,7 +13,7 @@
|
|||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*
|
||||
* SPDX-License-Identifier: GPL-3.0-only
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*/
|
||||
|
||||
|
||||
|
|