diff --git a/.github/workflows/flutter-build.yml b/.github/workflows/flutter-build.yml
deleted file mode 100644
index 42fba506..00000000
--- a/.github/workflows/flutter-build.yml
+++ /dev/null
@@ -1,85 +0,0 @@
-name: Flutter Cross Build
-on:
- push:
- branches:
- - build
- workflow_dispatch:
-
-jobs:
- build_ubuntu:
- runs-on: ubuntu-latest
- steps:
- - uses: actions/checkout@v2
- - uses: subosito/flutter-action@v2.2.0
- with:
- cache: true
- - run: |
- sudo apt-get update -y
- sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- - run: flutter config --enable-linux-desktop
- - run: flutter pub get
- - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- - run: flutter clean
- - run: flutter build linux
- - run: make deb
- - run: make tar
- - run: wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -O /usr/local/bin/appimagetool
- - run: chmod +x /usr/local/bin/appimagetool
- - run: pip3 install appimage-builder
- - run: make appimage
- - uses: actions/upload-artifact@v2
- with:
- name: Spotube-Linux-Bundle
- path: |
- build/Spotube-linux-x86_64.deb
- build/Spotube-linux-x86_64.tar.xz
- build/Spotube-*-x86_64.AppImage
- # Building Android Application
- - run: echo '${{ secrets.KEYSTORE }}' | base64 --decode > android/app/upload-keystore.jks
- - run: echo '${{ secrets.KEY_PROPERTIES }}' > android/key.properties
- - run: flutter build apk
- - run: make apk
- - uses: actions/upload-artifact@v2
- with:
- name: Spotube-Android-Bundle
- path: |
- build/Spotube-android-all-arch.apk
- build_windows:
- runs-on: windows-latest
- steps:
- - uses: actions/checkout@v2
- - uses: subosito/flutter-action@v2.2.0
- with:
- cache: true
- - run: flutter config --enable-windows-desktop
- - run: flutter pub get
- - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- - run: flutter build windows
- - run: ls build/windows/runner/Release
- - run: choco install make -y
- - run: make innoinstall
- - run: make inno
- - uses: actions/upload-artifact@v2
- with:
- name: Spotube-Windows-Bundle
- path: |
- build/installer/Spotube-windows-x86_64-setup.exe
- build_macos:
- runs-on: macos-11
- steps:
- - uses: actions/checkout@v2
- - uses: subosito/flutter-action@v2
- with:
- cache: true
- - run: flutter config --enable-macos-desktop
- - run: flutter pub get
- - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- - run: flutter build macos
- - run: du -sh build/macos/Build/Products/Release/spotube.app
- - run: npm install -g appdmg
- - run: appdmg appdmg.json build/Spotube-macos-x86_64.dmg
- - uses: actions/upload-artifact@v2
- with:
- name: Spotube-Macos-Bundle
- path: |
- build/Spotube-macos-x86_64.dmg
diff --git a/.github/workflows/spotube-nightly.yml b/.github/workflows/spotube-nightly.yml
new file mode 100644
index 00000000..5600ab46
--- /dev/null
+++ b/.github/workflows/spotube-nightly.yml
@@ -0,0 +1,134 @@
+name: Spotube Nightly
+on:
+ push:
+ branches:
+ - build
+ workflow_dispatch:
+
+jobs:
+ build_ubuntu:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Get latest tag
+ id: tag
+ uses: dawidd6/action-get-tag@v1
+ with:
+ strip_v: true
+ - uses: subosito/flutter-action@v2
+ with:
+ cache: true
+ - name: Get current date
+ id: date
+ run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
+ - run: |
+ sudo apt-get update -y
+ sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
+ - run: |
+ wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage
+ chmod +x appimage-builder-x86_64.AppImage
+ mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder
+ # replacing & adding new release version with older version
+ - run: |
+ sed -i 's|%{{APPDATA_RELEASE}}%||' linux/com.github.KRTirtho.Spotube.appdata.xml
+
+ - run: |
+ flutter config --enable-linux-desktop
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+ dart pub global activate flutter_distributor
+ flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean
+ make tar
+ - run: |
+ mv build/Spotube-linux-x86_64.tar.xz dist/
+ mv dist/**/spotube-*-linux.deb dist/Spotube-linux-x86_64.deb
+ mv dist/**/spotube-*-linux.AppImage dist/Spotube-linux-x86_64.AppImage
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Linux-Bundle
+ path: dist/
+
+ build_android:
+ runs-on: ubuntu-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Get latest tag
+ id: tag
+ uses: dawidd6/action-get-tag@v1
+ with:
+ strip_v: true
+ - uses: subosito/flutter-action@v2
+ with:
+ cache: true
+ - run: |
+ sudo apt-get update -y
+ sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
+ - run: |
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+ dart pub global activate flutter_distributor
+ flutter_distributor package --platform=android --targets=apk --skip-clean
+ - run: |
+ mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Android-Bundle
+ path: dist/
+
+ build_windows:
+ runs-on: windows-latest
+ steps:
+ - uses: actions/checkout@v3
+ - name: Get latest tag
+ id: tag
+ uses: dawidd6/action-get-tag@v1
+ with:
+ # Optionally strip `v` prefix
+ strip_v: true
+ # Replace Version in files
+ - run: |
+ choco install sed make -y
+ sed -i "s/%{{SPOTUBE_VERSION}}%/${{ steps.tag.outputs.tag }}/" windows/runner/Runner.rc
+
+ # Build Windows Executable
+ - uses: subosito/flutter-action@v2.2.0
+ with:
+ cache: true
+ - run: |
+ flutter config --enable-windows-desktop
+ flutter pub get
+ dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+ dart pub global activate flutter_distributor
+ make innoinstall
+ flutter_distributor package --platform=windows --targets=exe --skip-clean
+
+ # Create Chocolatey Package
+ # setting the sha256 hash for new bundle
+ - run: mv dist/**/spotube-*-windows-setup.exe dist/Spotube-windows-x86_64-setup.exe
+
+ # Upload artifacts
+ - uses: actions/upload-artifact@v3
+ with:
+ name: Spotube-Windows-Bundle
+ path: dist/
+
+
+ build_macos:
+ runs-on: macos-11
+ steps:
+ - uses: actions/checkout@v2
+ - uses: subosito/flutter-action@v2
+ with:
+ cache: true
+ - run: flutter config --enable-macos-desktop
+ - run: flutter pub get
+ - run: dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
+ - run: flutter build macos
+ - run: du -sh build/macos/Build/Products/Release/spotube.app
+ - run: npm install -g appdmg
+ - run: appdmg appdmg.json build/Spotube-macos-x86_64.dmg
+ - uses: actions/upload-artifact@v2
+ with:
+ name: Spotube-Macos-Bundle
+ path: |
+ build/Spotube-macos-x86_64.dmg
\ No newline at end of file
diff --git a/.github/workflows/release-build.yml b/.github/workflows/spotube-release.yml
similarity index 87%
rename from .github/workflows/release-build.yml
rename to .github/workflows/spotube-release.yml
index becf00bf..1951583c 100644
--- a/.github/workflows/release-build.yml
+++ b/.github/workflows/spotube-release.yml
@@ -1,4 +1,4 @@
-name: Spotube Build & Release
+name: Spotube Release
on:
release:
types:
@@ -36,9 +36,8 @@ jobs:
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
dart pub global activate melos
- cd build/flutter_distributor && melos bootstrap && cd ../..
make innoinstall
- dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=windows --targets=exe --skip-clean
+ flutter_distributor package --platform=windows --targets=exe --skip-clean
# Create Chocolatey Package
# setting the sha256 hash for new bundle
@@ -93,11 +92,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- - uses: actions/checkout@v3
- with:
- repository: KRTirtho/flutter_distributor
- ref: deb-implementation
- path: build/flutter_distributor
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
@@ -111,7 +105,7 @@ jobs:
run: echo "::set-output name=date::$(date +'%Y-%m-%d')"
- run: |
sudo apt-get update -y
- sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
+ sudo apt-get install -y tar clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse libgstreamer1.0-dev libgstreamer-plugins-base1.0-dev
- run: |
wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.0.0-beta.1/appimage-builder-1.0.0-677acbd-x86_64.AppImage
chmod +x appimage-builder-x86_64.AppImage
@@ -124,9 +118,8 @@ jobs:
flutter config --enable-linux-desktop
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- dart pub global activate melos
- cd build/flutter_distributor && melos bootstrap && cd ../..
- dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=linux --targets=deb,appimage --skip-clean
+ dart pub global activate flutter_distributor
+ flutter_distributor package --platform=linux --targets=deb,appimage --skip-clean
make tar
- run: |
mv build/Spotube-linux-x86_64.tar.xz dist/
@@ -141,11 +134,6 @@ jobs:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- - uses: actions/checkout@v3
- with:
- repository: KRTirtho/flutter_distributor
- ref: deb-implementation
- path: build/flutter_distributor
- name: Get latest tag
id: tag
uses: dawidd6/action-get-tag@v1
@@ -156,13 +144,12 @@ jobs:
cache: true
- run: |
sudo apt-get update -y
- sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make libwebkit2gtk-4.0-dev keybinder-3.0 python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
+ sudo apt-get install -y clang cmake ninja-build pkg-config libgtk-3-dev make python3-pip python3-setuptools patchelf desktop-file-utils libgdk-pixbuf2.0-dev fakeroot strace fuse
- run: |
flutter pub get
dart bin/create-secrets.dart '${{ secrets.LYRICS_SECRET }}' '${{ secrets.SPOTIFY_SECRET }}'
- dart pub global activate melos
- cd build/flutter_distributor && melos bootstrap && cd ../..
- dart build/flutter_distributor/packages/flutter_distributor/bin/main.dart package --platform=android --targets=apk --skip-clean
+ dart pub global activate flutter_distributor
+ flutter_distributor package --platform=android --targets=apk --skip-clean
- run: |
mv dist/**/spotube-*-android.apk dist/Spotube-android-all-arch.apk
- uses: actions/upload-artifact@v3
diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md
index 2d1db363..db5423a8 100644
--- a/CONTRIBUTION.md
+++ b/CONTRIBUTION.md
@@ -114,13 +114,11 @@ Enhancement suggestions are tracked as [GitHub issues](https://github.com/KRTirt
### Your First Code Contribution
-audioplayers requirement https://github.com/bluefireteam/audioplayers/blob/main/packages/audioplayers_linux/requirements.md
-
Do the following:
- Download the latest Flutter SDK (>=2.15.1) & enable desktop support
- Install Development dependencies in linux
- - `libwebkit2gtk-4.0-dev`, `libkeybinder-3.0-0` & `libkeybinder-3.0-dev` (for Debian/Ubuntu)
- - `webkit2gtk` & `libkeybinder3` (for Arch/Manjaro)
+ - `libgstreamer1.0-dev` & `libgstreamer-plugins-base1.0-dev` (for Debian/Ubuntu)
+ - `gstreamer`, `gst-libav`, `gst-plugins-base` & `gst-plugins-good` (for Arch/Manjaro)
- Clone the Repo & Run `flutter pub get` in the Terminal
- Create a `secrets.json` in root of the project. The structure should be similar to the following example:
```jsoc name="secrets.json"
@@ -144,7 +142,7 @@ Do the following:
> You can add more clientId/clientSecret/genius-access-token if you want. The credentials used in the example are dummy (fake). You've to use your own secrets
- Finally run these following commands in the root of the project to start the Spotube Locally
```bash
- $ dart create-secrets.dart --local
+ $ dart bin/create-secrets.dart --local
$ flutter run -d )>
```
diff --git a/README.md b/README.md
index 1510d89e..807516d8 100644
--- a/README.md
+++ b/README.md
@@ -127,8 +127,7 @@ Bu why? You can learn about it [here](https://dev.to/krtirtho/choosing-open-sour
- [AUR](https://aur.archlinux.org/) - AUR stands for Arch User Repository. It is a community-driven repository for Arch-based Linux distributions users
- [Flatpak](https://flatpak.org/) - Flatpak is a utility for software deployment and package management for Linux
- [spotify (dart)](https://github.com/rinukkusu/spotify-dart) - A dart library for interfacing with the Spotify API
-- [just_audio](https://github.com/ryanheise/just_audio/tree/master/just_audio) - A feature-rich cross-platform audio player for Flutter that supports network audio streams too
-- [libwinmedia](https://github.com/harmonoid/libwinmedia) - A cross-platform media playback library for C/C++ with good number of features (only Windows & Linux)
+- [audioplayers](https://github.com/bluefireteam/audioplayers) - A Flutter plugin to play multiple audio files simultaneously (Android/iOS)
- [youtube_explode_dart](https://github.com/Hexer10/youtube_explode_dart) - YoutubeExplode is a library that provides an interface to query metadata of YouTube videos, playlists and channels, as well as to resolve and download video streams and closed caption tracks
- [infinite_scroll_pagination](https://github.com/EdsonBueno/infinite_scroll_pagination) - Flutter package to help you lazily load and display pages of items as the user scrolls down your screen
- [bitsdojo_window](https://github.com/bitsdojo/bitsdojo_window) - A Flutter package that makes it easy to customize and work with your Flutter desktop app window on Windows, macOS and Linux