From fc6adb321f6fb174d4637d83cdd384eba52cbce2 Mon Sep 17 00:00:00 2001 From: Linus Torvaldus Date: Mon, 30 May 2022 22:12:40 -0400 Subject: [PATCH 001/103] i am linus torvaldus --- NUXT/components/Player/seekbar.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NUXT/components/Player/seekbar.vue b/NUXT/components/Player/seekbar.vue index 15cdb86d..0892d483 100644 --- a/NUXT/components/Player/seekbar.vue +++ b/NUXT/components/Player/seekbar.vue @@ -12,7 +12,7 @@ active style="width: 100%; background: #ffffff22" background-opacity="0.5" - background-color="primary" + background-color="white" :buffer-value="buffered" :value="percent" color="primary" From 148ebb83e38e3bff5075415e276f4d029ac0855f Mon Sep 17 00:00:00 2001 From: Linus Torvaldus Date: Mon, 30 May 2022 22:17:03 -0400 Subject: [PATCH 002/103] light theme controls fix --- NUXT/components/Player/quality.vue | 1 + NUXT/components/Player/speed.vue | 1 + 2 files changed, 2 insertions(+) diff --git a/NUXT/components/Player/quality.vue b/NUXT/components/Player/quality.vue index be49765f..fe356c24 100644 --- a/NUXT/components/Player/quality.vue +++ b/NUXT/components/Player/quality.vue @@ -10,6 +10,7 @@ fab text small + color="white" style="position: absolute; bottom: 0.25rem; right: 3rem" v-bind="attrs" v-on="on" diff --git a/NUXT/components/Player/speed.vue b/NUXT/components/Player/speed.vue index 55bd4aee..8ebf4231 100644 --- a/NUXT/components/Player/speed.vue +++ b/NUXT/components/Player/speed.vue @@ -10,6 +10,7 @@ fab text small + color="white" style="position: absolute; bottom: 0.25rem; right: 6rem" v-bind="attrs" v-on="on" From 59835aa04da69e6d52250d32fbbd873b7d7022ed Mon Sep 17 00:00:00 2001 From: Kenny <27463495+Frontesque@users.noreply.github.com> Date: Tue, 31 May 2022 09:57:56 -0400 Subject: [PATCH 003/103] Delete nightly-release.yml --- .github/workflows/nightly-release.yml | 141 -------------------------- 1 file changed, 141 deletions(-) delete mode 100644 .github/workflows/nightly-release.yml diff --git a/.github/workflows/nightly-release.yml b/.github/workflows/nightly-release.yml deleted file mode 100644 index ae28077e..00000000 --- a/.github/workflows/nightly-release.yml +++ /dev/null @@ -1,141 +0,0 @@ -name: nightly-release - -# Controls when the workflow will run -on: - # Triggers the workflow on on a schedule - schedule: - # Runs "at 0:00 UTC every day" (see https://crontab.guru) - - cron: '0 0 * * *' - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -env: - NODE_VERSION: 16 - -# A workflow run is made up of one or more jobs that can run sequentially or in parallel -jobs: - # This workflow contains a single job called "build" - build: - name: Build web assets - runs-on: ubuntu-latest - needs: check_date - if: ${{ needs.check_date.outputs.should_run != 'false' }} - steps: - - name: Checkout - uses: actions/checkout@v2 - with: - ref: main - - name: Set up Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Install dependencies - run: npm i; cd NUXT; npm i - - name: Set App Version - working-directory: NUXT - run: sed -i 's/dev-local/${{ github.sha }}/' nuxt.config.js - - name: Build web assets - working-directory: NUXT - run: npm run generate - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: dist - path: dist - android: - name: Build Android platform - runs-on: ubuntu-latest - needs: [build] - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Download artifacts - uses: actions/download-artifact@v2 - with: - name: dist - path: dist - - name: Set up Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Install dependencies - run: npm i - - name: Set up JDK 11 - uses: actions/setup-java@v1 - with: - java-version: 11 - - name: Copy web assets to native platform - run: npx cap copy android - - name: Update native platform - run: npx cap update android - - name: Build with Gradle - working-directory: android - run: chmod +x gradlew; ./gradlew clean assembleRelease -x test -Pandroid.injected.signing.store.file=/home/runner/work/VueTube/VueTube/android/key.jks -Pandroid.injected.signing.store.password=${{ secrets.ANDROID_STORE_PASSWORD }} -Pandroid.injected.signing.key.alias=${{ secrets.ANDROID_KEY_ALIAS }} -Pandroid.injected.signing.key.password=${{ secrets.ANDROID_KEY_PASSWORD }} - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: android - path: android/app/build/outputs/apk/release/app-release.apk - - ios: - name: Build iOS platform - runs-on: macos-latest - needs: [build] - steps: - - name: Checkout - uses: actions/checkout@v2 - - name: Download artifacts - uses: actions/download-artifact@v2 - with: - name: dist - path: dist - - name: Set up Node.js ${{ env.NODE_VERSION }} - uses: actions/setup-node@v2 - with: - node-version: ${{ env.NODE_VERSION }} - - name: Install dependencies - run: npm i - - name: Copy web assets to native platform - run: npx cap copy ios - - name: Update native platform - run: npx cap update ios - - name: Add empty `GoogleService-Info.plist` - run: echo "$GOOGLE_SERVICE_INFO_PLIST" > ios/App/App/GoogleService-Info.plist - env: - GOOGLE_SERVICE_INFO_PLIST: ${{secrets.GOOGLE_SERVICE_INFO_PLIST}} - - name: Build and archive with xcodebuild - working-directory: ios - run: xcodebuild - -workspace App/App.xcworkspace - -scheme App - -archivePath App/build/App.xarchive - clean build archive - CODE_SIGN_IDENTITY="" - CODE_SIGNING_REQUIRED=NO - CODE_SIGNING_ALLOWED="NO" - CODE_SIGN_ENTITLEMENTS="" - - name: Make IPA - run: mkdir Payload && mv ~/Library/Developer/Xcode/DerivedData/App-*/Build/Products/Debug-iphoneos/App.app Payload && zip -r Payload.zip Payload && mv Payload.zip VueTube.ipa - - - name: Upload artifacts - uses: actions/upload-artifact@v2 - with: - name: iOS - path: VueTube.ipa - - check_date: - runs-on: ubuntu-latest - name: Check latest commit - outputs: - should_run: ${{ steps.should_run.outputs.should_run }} - steps: - - uses: actions/checkout@v2 - - name: print latest_commit - run: echo ${{ github.sha }} - - - id: should_run - continue-on-error: true - name: check latest commit is less than a day - if: ${{ github.event_name == 'schedule' }} - run: test -z $(git rev-list --after="24 hours" ${{ github.sha }}) && echo "::set-output name=should_run::false" From 339bd4eb152da49a02ff84509e34e6d833b69629 Mon Sep 17 00:00:00 2001 From: Kenny <27463495+Frontesque@users.noreply.github.com> Date: Tue, 31 May 2022 10:01:40 -0400 Subject: [PATCH 004/103] make addplugin async --- NUXT/plugins/thirdPartyPluginLoader.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NUXT/plugins/thirdPartyPluginLoader.js b/NUXT/plugins/thirdPartyPluginLoader.js index 3e7382cb..ee1435b7 100644 --- a/NUXT/plugins/thirdPartyPluginLoader.js +++ b/NUXT/plugins/thirdPartyPluginLoader.js @@ -32,7 +32,7 @@ const module = { }), - addPlugin(content) { + async addPlugin(content) { await ensureStructure(); new Promise(async (resolve, reject) => { const fileName = require("./utils").getCpn(); // Im not sure what this is actually meant for but im using it as a random string generator From 3acb70ca06d84568e758595402b41ddcf27880d3 Mon Sep 17 00:00:00 2001 From: Sushi Date: Tue, 31 May 2022 20:50:55 -0600 Subject: [PATCH 005/103] sponsorblock --- NUXT/components/Player/index.vue | 15 +++++++++++++++ NUXT/plugins/youtube.js | 15 +++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 8c438dbc..c2a7eeb7 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -213,6 +213,21 @@ export default { this.vidSrc = this.sources[this.sources.length - 1].url; // TODO: detect orientation change and enter fullscreen // TODO: detect video loading state and send this.loading to play button :loading = loading + + + this.$youtube.getSponsorBlock(this.$route.query.v, (data) => { + sponsorBlock = data.segment; + }); + + this.$refs.player.ontimeupdate = () => { + let vidTime = this.$refs.player.currentTime; + for (let i = 0; i < sponsorBlock.length; i++) { + if (vidTime > sponsorBlock[i][0] && vidTime < sponsorBlock[0][i]) { + this.$refs.player.currentTime = sponsorBlock[i][0]; + break; + } + } + } }, beforeDestroy() { if (this.isFullscreen) this.exitFullscreen(); diff --git a/NUXT/plugins/youtube.js b/NUXT/plugins/youtube.js index 87e1b3fe..f89e4c21 100644 --- a/NUXT/plugins/youtube.js +++ b/NUXT/plugins/youtube.js @@ -64,6 +64,21 @@ const searchModule = { callback(err); }); }, + getSponsorBlock(id, callback) { + Http.request({ + method: "GET", + url: `https://sponsor.ajay.app/api/skipSegments`, + params: { videoID: id }, + }) + .then((res) => { + logger("sponsorBlock", res.data); + callback(res.data); + }) + .catch((err) => { + logger("codeRun", err, true); + callback(err); + }); + } }; //--- Recommendations ---// From d9f9edf8a8a4373d7a5df1e80ffdeb8083a08d97 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Tue, 31 May 2022 23:40:36 -0400 Subject: [PATCH 006/103] sponsorblock.vue --- NUXT/components/Player/index.vue | 18 +--- NUXT/components/Player/sponsorblock.vue | 43 ++++++++ NUXT/plugins/vuetube.js | 2 +- android/app/src/main/res/xml/config.xml | 4 + .../screenorientation/CDVOrientation.java | 98 +++++++++++++++++++ ios/App/App/config.xml | 4 + ios/App/Podfile | 23 ++--- 7 files changed, 165 insertions(+), 27 deletions(-) create mode 100644 NUXT/components/Player/sponsorblock.vue create mode 100644 android/capacitor-cordova-android-plugins/src/main/java/cordova/plugins/screenorientation/CDVOrientation.java diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index c2a7eeb7..dfdcc3f1 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -162,6 +162,7 @@ :controls="controls" @seeking="seeking = !seeking" /> + @@ -176,8 +177,10 @@ import captions from "~/components/Player/captions.vue"; import playpause from "~/components/Player/playpause.vue"; import watchtime from "~/components/Player/watchtime.vue"; import fullscreen from "~/components/Player/fullscreen.vue"; +import sponsorblock from "~/components/Player/sponsorblock.vue"; export default { components: { + sponsorblock, fullscreen, watchtime, playpause, @@ -213,21 +216,6 @@ export default { this.vidSrc = this.sources[this.sources.length - 1].url; // TODO: detect orientation change and enter fullscreen // TODO: detect video loading state and send this.loading to play button :loading = loading - - - this.$youtube.getSponsorBlock(this.$route.query.v, (data) => { - sponsorBlock = data.segment; - }); - - this.$refs.player.ontimeupdate = () => { - let vidTime = this.$refs.player.currentTime; - for (let i = 0; i < sponsorBlock.length; i++) { - if (vidTime > sponsorBlock[i][0] && vidTime < sponsorBlock[0][i]) { - this.$refs.player.currentTime = sponsorBlock[i][0]; - break; - } - } - } }, beforeDestroy() { if (this.isFullscreen) this.exitFullscreen(); diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue new file mode 100644 index 00000000..a300eb25 --- /dev/null +++ b/NUXT/components/Player/sponsorblock.vue @@ -0,0 +1,43 @@ + + + diff --git a/NUXT/plugins/vuetube.js b/NUXT/plugins/vuetube.js index 018ef5b9..36437f5c 100644 --- a/NUXT/plugins/vuetube.js +++ b/NUXT/plugins/vuetube.js @@ -149,7 +149,7 @@ const module = { // join the array into a string with : as a separator const returntext = levels.join(":"); - console.log("Human Time:", returntext); + // console.log("Human Time:", returntext); return returntext; }, //--- End Convert Time To Human Readable String ---// diff --git a/android/app/src/main/res/xml/config.xml b/android/app/src/main/res/xml/config.xml index 1b1b0e0d..0886a477 100644 --- a/android/app/src/main/res/xml/config.xml +++ b/android/app/src/main/res/xml/config.xml @@ -2,5 +2,9 @@ + + + + \ No newline at end of file diff --git a/android/capacitor-cordova-android-plugins/src/main/java/cordova/plugins/screenorientation/CDVOrientation.java b/android/capacitor-cordova-android-plugins/src/main/java/cordova/plugins/screenorientation/CDVOrientation.java new file mode 100644 index 00000000..5dc845e0 --- /dev/null +++ b/android/capacitor-cordova-android-plugins/src/main/java/cordova/plugins/screenorientation/CDVOrientation.java @@ -0,0 +1,98 @@ +/* + * + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + * + */ + +package cordova.plugins.screenorientation; + +import org.apache.cordova.CallbackContext; +import org.apache.cordova.CordovaPlugin; + +import org.json.JSONArray; +import org.json.JSONException; + +import android.app.Activity; +import android.content.pm.ActivityInfo; +import android.util.Log; + +public class CDVOrientation extends CordovaPlugin { + + private static final String TAG = "YoikScreenOrientation"; + + /** + * Screen Orientation Constants + */ + + private static final String ANY = "any"; + private static final String PORTRAIT_PRIMARY = "portrait-primary"; + private static final String PORTRAIT_SECONDARY = "portrait-secondary"; + private static final String LANDSCAPE_PRIMARY = "landscape-primary"; + private static final String LANDSCAPE_SECONDARY = "landscape-secondary"; + private static final String PORTRAIT = "portrait"; + private static final String LANDSCAPE = "landscape"; + + @Override + public boolean execute(String action, JSONArray args, CallbackContext callbackContext) { + + Log.d(TAG, "execute action: " + action); + + // Route the Action + if (action.equals("screenOrientation")) { + return routeScreenOrientation(args, callbackContext); + } + + // Action not found + callbackContext.error("action not recognised"); + return false; + } + + private boolean routeScreenOrientation(JSONArray args, CallbackContext callbackContext) { + + String action = args.optString(0); + + + + String orientation = args.optString(1); + + Log.d(TAG, "Requested ScreenOrientation: " + orientation); + + Activity activity = cordova.getActivity(); + + if (orientation.equals(ANY)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED); + } else if (orientation.equals(LANDSCAPE_PRIMARY)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); + } else if (orientation.equals(PORTRAIT_PRIMARY)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT); + } else if (orientation.equals(LANDSCAPE)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_LANDSCAPE); + } else if (orientation.equals(PORTRAIT)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR_PORTRAIT); + } else if (orientation.equals(LANDSCAPE_SECONDARY)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE); + } else if (orientation.equals(PORTRAIT_SECONDARY)) { + activity.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT); + } + + callbackContext.success(); + return true; + + + } +} \ No newline at end of file diff --git a/ios/App/App/config.xml b/ios/App/App/config.xml index 1b1b0e0d..b43c248f 100644 --- a/ios/App/App/config.xml +++ b/ios/App/App/config.xml @@ -2,5 +2,9 @@ + + + + \ No newline at end of file diff --git a/ios/App/Podfile b/ios/App/Podfile index d3fc14a3..323ce865 100644 --- a/ios/App/Podfile +++ b/ios/App/Podfile @@ -9,17 +9,18 @@ install! 'cocoapods', :disable_input_output_paths => true def capacitor_pods pod 'Capacitor', :path => '../../node_modules/@capacitor/ios' pod 'CapacitorCordova', :path => '../../node_modules/@capacitor/ios' - pod 'CapacitorCommunityHttp', :path => '..\..\node_modules\@capacitor-community\http' - pod 'CapacitorApp', :path => '..\..\node_modules\@capacitor\app' - pod 'CapacitorBrowser', :path => '..\..\node_modules\@capacitor\browser' - pod 'CapacitorDevice', :path => '..\..\node_modules\@capacitor\device' - pod 'CapacitorFilesystem', :path => '..\..\node_modules\@capacitor\filesystem' - pod 'CapacitorHaptics', :path => '..\..\node_modules\@capacitor\haptics' - pod 'CapacitorShare', :path => '..\..\node_modules\@capacitor\share' - pod 'CapacitorSplashScreen', :path => '..\..\node_modules\@capacitor\splash-screen' - pod 'CapacitorStatusBar', :path => '..\..\node_modules\@capacitor\status-bar' - pod 'CapacitorToast', :path => '..\..\node_modules\@capacitor\toast' - pod 'HugotomaziCapacitorNavigationBar', :path => '..\..\node_modules\@hugotomazi\capacitor-navigation-bar' + pod 'CapacitorCommunityHttp', :path => '../../node_modules/@capacitor-community/http' + pod 'CapacitorApp', :path => '../../node_modules/@capacitor/app' + pod 'CapacitorBrowser', :path => '../../node_modules/@capacitor/browser' + pod 'CapacitorDevice', :path => '../../node_modules/@capacitor/device' + pod 'CapacitorFilesystem', :path => '../../node_modules/@capacitor/filesystem' + pod 'CapacitorHaptics', :path => '../../node_modules/@capacitor/haptics' + pod 'CapacitorShare', :path => '../../node_modules/@capacitor/share' + pod 'CapacitorSplashScreen', :path => '../../node_modules/@capacitor/splash-screen' + pod 'CapacitorStatusBar', :path => '../../node_modules/@capacitor/status-bar' + pod 'CapacitorToast', :path => '../../node_modules/@capacitor/toast' + pod 'HugotomaziCapacitorNavigationBar', :path => '../../node_modules/@hugotomazi/capacitor-navigation-bar' + pod 'CordovaPlugins', :path => '../capacitor-cordova-ios-plugins' end target 'App' do From f2d2038fa5d8506f7194d62ea5e148b0538337c6 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 00:00:54 -0400 Subject: [PATCH 007/103] videoid prop --- NUXT/components/Player/index.vue | 10 +++++++++- NUXT/components/Player/sponsorblock.vue | 4 ++++ NUXT/pages/watch.vue | 1 + 3 files changed, 14 insertions(+), 1 deletion(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index dfdcc3f1..84261262 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -162,7 +162,11 @@ :controls="controls" @seeking="seeking = !seeking" /> - + @@ -201,6 +205,10 @@ export default { type: Object, required: true, }, + videoid: { + type: String, + required: true, + }, }, data() { return { diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index a300eb25..f836c0af 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -9,6 +9,10 @@ export default { type: Object, required: true, }, + videoid: { + type: String, + required: true, + }, }, mounted() { let sponsorBlock = []; diff --git a/NUXT/pages/watch.vue b/NUXT/pages/watch.vue index 6be50c52..17bd3beb 100644 --- a/NUXT/pages/watch.vue +++ b/NUXT/pages/watch.vue @@ -8,6 +8,7 @@ ref="player" :video="video" :sources="sources" + :videoid="$route.query.v" /> From f998ce278c2800889b80abd435572ab42b2f56fb Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 00:01:42 -0400 Subject: [PATCH 008/103] param fix --- NUXT/components/Player/sponsorblock.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index f836c0af..c876170a 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -16,7 +16,7 @@ export default { }, mounted() { let sponsorBlock = []; - this.$youtube.getSponsorBlock(this.$route.query.v, (data) => { + this.$youtube.getSponsorBlock(this.videoid, (data) => { sponsorBlock = data.segment; }); From e6eef424bb2c4b2d6c207f9be3c8360955935819 Mon Sep 17 00:00:00 2001 From: Sushi Date: Wed, 1 Jun 2022 00:13:16 -0600 Subject: [PATCH 009/103] SPONSORBLOCK WORKS --- NUXT/components/Player/sponsorblock.vue | 39 +++++++++++-------------- 1 file changed, 17 insertions(+), 22 deletions(-) diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index c876170a..7456bbf6 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -15,33 +15,28 @@ export default { }, }, mounted() { - let sponsorBlock = []; - this.$youtube.getSponsorBlock(this.videoid, (data) => { - sponsorBlock = data.segment; - }); + let vid = this.video; + let id = this.videoid; - this.$refs.player.addEventListener("loadeddata", (e) => { - console.log("%c loadeddata", "color: #00ff00"); + vid.addEventListener("loadeddata", (e) => { + if (vid.readyState >= 3) { + this.$youtube.getSponsorBlock(id, (data) => { + console.log(data); - if (this.$refs.player.readyState >= 3) { - this.$refs.player.ontimeupdate = () => { - console.log("%c notinsegment", "color: #00ff00"); + // iterate over data.segments array + vid.ontimeupdate = () => { + data.forEach(function(sponsor) { + let vidTime = vid.currentTime; - let vidTime = this.$refs.player.currentTime; - - for (let i = 0; i < sponsorBlock.length; i++) { - console.log("%c loopin", "color: #00ffff"); - - if (vidTime > sponsorBlock[i][0] && vidTime < sponsorBlock[0][i]) { - console.log("%c insegment", "color: #ff0000"); - - this.$refs.player.currentTime = sponsorBlock[i][0]; - break; + if (vidTime >= sponsor.segment[0] && vidTime <= sponsor.segment[1]) { + console.log("Skipping the sponsor"); + vid.currentTime = sponsor.segment[1]; + } + }) } - } - }; + }) } - }); + }) }, }; From 96525a527a752bbbede2220afe21a88fc92954ec Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 14:06:34 -0400 Subject: [PATCH 010/103] split & fix progressbar, sb error checker --- NUXT/components/Player/index.vue | 10 +- NUXT/components/Player/progressbar.vue | 47 ++++++++++ NUXT/components/Player/seekbar.vue | 119 +++++++++++------------- NUXT/components/Player/sponsorblock.vue | 53 +++++++++-- NUXT/pages/watch.vue | 1 + 5 files changed, 153 insertions(+), 77 deletions(-) create mode 100644 NUXT/components/Player/progressbar.vue diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 84261262..a25aa9f3 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -152,7 +152,12 @@ @fullscreen="(controls = $refs.player.paused), handleFullscreenChange()" /> - + + + + diff --git a/NUXT/components/Player/seekbar.vue b/NUXT/components/Player/seekbar.vue index 0892d483..f83bec57 100644 --- a/NUXT/components/Player/seekbar.vue +++ b/NUXT/components/Player/seekbar.vue @@ -7,22 +7,6 @@ style="display: none" :src="vidWrs" /> - ({ + scrubbing: false, + progress: 0, + duration: 0, + vidWrs: "", + }), mounted() { - console.log("sources", this.sources); - this.vidSrc = this.sources[this.sources.length - 1].url; - this.vidWrs = this.sources[1].url; - let vid = this.video; - vid.addEventListener("loadeddata", (e) => { - // console.log("%c loadeddata", "color: #00ff00"); - console.log(e); - //Video should now be loaded but we can add a second check - if (vid.readyState >= 3) { - vid.ontimeupdate = () => { - // console.log("%c timeupdate", "color: #aaaaff"); - this.duration = vid.duration; - if (!this.scrubbing) this.progress = vid.currentTime; - this.percent = (vid.currentTime / vid.duration) * 100; - }; - vid.onprogress = () => { - // console.log("%c progress", "color: #ff00ff"); - this.buffered = (vid.buffered.end(0) / vid.duration) * 100; - }; + // this.vidWrs = this.sources[1].url; + this.video.addEventListener("loadeddata", (e) => { + if (this.video.readyState >= 3) { + this.video.addEventListener("timeupdate", () => { + this.duration = this.video.duration; + if (!this.scrubbing) this.progress = this.currentTime; + }); } }); }, methods: { + seek(e) { + // console.log(`scrubbing ${e}`); + let vid = this.$refs.playerfake; + let canvas = this.$refs.preview; + this.$refs.playerfake.currentTime = e; + canvas + .getContext("2d") + .drawImage( + vid, + 0, + 0, + this.video.clientWidth / 3, + this.video.clientHeight / 3 + ); + }, + scrub(e) { + this.video.currentTime = e; + }, // TODO: better scrubbing preview loadVideoFrames() { // Exit loop if desired number of frames have been extracted @@ -228,24 +233,6 @@ export default { console.log(this.frames); }, // TODO: scrubbing preview end - seek(e) { - // console.log(`scrubbing ${e}`); - let vid = this.$refs.playerfake; - let canvas = this.$refs.preview; - this.$refs.playerfake.currentTime = e; - canvas - .getContext("2d") - .drawImage( - vid, - 0, - 0, - this.video.clientWidth / 3, - this.video.clientHeight / 3 - ); - }, - scrub(e) { - this.video.currentTime = e; - }, }, }; diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 7456bbf6..e056aaa6 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -1,5 +1,22 @@ + + diff --git a/NUXT/pages/watch.vue b/NUXT/pages/watch.vue index 17bd3beb..ca4a0ff6 100644 --- a/NUXT/pages/watch.vue +++ b/NUXT/pages/watch.vue @@ -228,6 +228,7 @@ hide-overlay persistent no-click-animation + style="z-index: 2 !important" attach="#content-container" > Date: Wed, 1 Jun 2022 14:35:14 -0400 Subject: [PATCH 011/103] sb visual segments, preview fix --- NUXT/components/Player/index.vue | 1 + NUXT/components/Player/seekbar.vue | 2 +- NUXT/components/Player/sponsorblock.vue | 67 +++++++++++++++++++------ 3 files changed, 54 insertions(+), 16 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index a25aa9f3..f6ba1d49 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -172,6 +172,7 @@ v-if="$refs.player" :video="$refs.player" :videoid="videoid" + :fullscreen="isFullscreen" /> diff --git a/NUXT/components/Player/seekbar.vue b/NUXT/components/Player/seekbar.vue index f83bec57..8e4ad8b9 100644 --- a/NUXT/components/Player/seekbar.vue +++ b/NUXT/components/Player/seekbar.vue @@ -83,7 +83,7 @@ export default { vidWrs: "", }), mounted() { - // this.vidWrs = this.sources[1].url; + this.vidWrs = this.sources[1].url; this.video.addEventListener("loadeddata", (e) => { if (this.video.readyState >= 3) { this.video.addEventListener("timeupdate", () => { diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index e056aaa6..8519e645 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -1,21 +1,26 @@ @@ -30,9 +35,14 @@ export default { type: String, required: true, }, + fullscreen: { + type: Boolean, + required: true, + }, }, data: () => ({ - segments: [], + blocks: [], + skipping: false, }), mounted() { let vid = this.video; @@ -43,20 +53,23 @@ export default { this.$youtube.getSponsorBlock(id, (data) => { console.log("sbreturn", data); if (Array.isArray(data)) { - this.segments = data; + this.blocks = data; // iterate over data.segments array vid.addEventListener("timeupdate", () => { - console.log("sb check", data); + // console.log("sb check", data); data.forEach((sponsor) => { let vidTime = vid.currentTime; if ( vidTime >= sponsor.segment[0] && - vidTime <= sponsor.segment[1] + vidTime <= sponsor.segment[1] && + !this.skipping ) { console.log("Skipping the sponsor"); - vid.currentTime = sponsor.segment[1]; + // to avoid jank and jitters + this.skipping = true; + vid.currentTime = sponsor.segment[1] + 1; } }); }); @@ -72,4 +85,28 @@ export default { .sponsor { color: green; } +.selfpromo { + color: yellow; +} +.exclusive_access { + color: orange; +} +.interaction { + color: blue; +} +.intro { + color: purple; +} +.outro { + color: purple; +} +.music_offtopic { + color: red; +} +.poi_highlight { + color: #ff00ff; +} +.filler { + color: blue; +} From d90b287eef3e639b5a77c74647c9b519b485ade4 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 14:47:00 -0400 Subject: [PATCH 012/103] sb bugfix --- NUXT/components/Player/sponsorblock.vue | 3 --- 1 file changed, 3 deletions(-) diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 8519e645..dc1d39be 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -42,7 +42,6 @@ export default { }, data: () => ({ blocks: [], - skipping: false, }), mounted() { let vid = this.video; @@ -67,8 +66,6 @@ export default { !this.skipping ) { console.log("Skipping the sponsor"); - // to avoid jank and jitters - this.skipping = true; vid.currentTime = sponsor.segment[1] + 1; } }); From ae4893a53c4b969ad52f898c79abb6f6ee5d552e Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 14:47:00 -0400 Subject: [PATCH 013/103] sb bugfix --- NUXT/components/Player/sponsorblock.vue | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 8519e645..4cbb7f0e 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -42,7 +42,6 @@ export default { }, data: () => ({ blocks: [], - skipping: false, }), mounted() { let vid = this.video; @@ -63,12 +62,9 @@ export default { if ( vidTime >= sponsor.segment[0] && - vidTime <= sponsor.segment[1] && - !this.skipping + vidTime <= sponsor.segment[1] ) { console.log("Skipping the sponsor"); - // to avoid jank and jitters - this.skipping = true; vid.currentTime = sponsor.segment[1] + 1; } }); From 12bad17877548208b0d39f76e83d6d87bdcbda27 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 15:02:02 -0400 Subject: [PATCH 014/103] progress fullscreen hide --- NUXT/components/Player/index.vue | 2 ++ NUXT/components/Player/progressbar.vue | 1 + NUXT/components/Player/sponsorblock.vue | 1 + 3 files changed, 4 insertions(+) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index f6ba1d49..e631ab41 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -155,6 +155,7 @@ @@ -172,6 +173,7 @@ v-if="$refs.player" :video="$refs.player" :videoid="videoid" + :controls="controls" :fullscreen="isFullscreen" /> diff --git a/NUXT/components/Player/progressbar.vue b/NUXT/components/Player/progressbar.vue index 2695729b..63ff2a9a 100644 --- a/NUXT/components/Player/progressbar.vue +++ b/NUXT/components/Player/progressbar.vue @@ -5,6 +5,7 @@ background-color="primary" :buffer-value="buffered" :value="(currentTime / video.duration) * 100" + :class="!fullscreen || controls ? '' : 'invisible'" color="primary" height="2" :style=" diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 4cbb7f0e..31b9aed6 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -11,6 +11,7 @@ background: transparent; pointer-events: none; " + :class="!fullscreen || controls ? '' : 'invisible'" background-color="white" background-opacity="1" color="transparent" From 080f085c5255bdeb5176e0a43d8ad8726dcb255f Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 15:05:19 -0400 Subject: [PATCH 015/103] bugfix for prev commit --- NUXT/components/Player/progressbar.vue | 4 ++++ NUXT/components/Player/sponsorblock.vue | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/NUXT/components/Player/progressbar.vue b/NUXT/components/Player/progressbar.vue index 63ff2a9a..4b117f65 100644 --- a/NUXT/components/Player/progressbar.vue +++ b/NUXT/components/Player/progressbar.vue @@ -30,6 +30,10 @@ export default { type: Number, required: true, }, + controls: { + type: Boolean, + required: true, + }, }, data: () => ({ buffered: 0, diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 31b9aed6..cd80c747 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -40,6 +40,10 @@ export default { type: Boolean, required: true, }, + controls: { + type: Boolean, + required: true, + }, }, data: () => ({ blocks: [], From 85018056e3e0f6474640f21ae56134bd88931a27 Mon Sep 17 00:00:00 2001 From: Sushi Date: Wed, 1 Jun 2022 15:12:00 -0600 Subject: [PATCH 016/103] sponsor skip toast --- NUXT/components/Player/sponsorblock.vue | 1 + NUXT/plugins/youtube.js | 3 +++ 2 files changed, 4 insertions(+) diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index cd80c747..3ebe449d 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -70,6 +70,7 @@ export default { vidTime <= sponsor.segment[1] ) { console.log("Skipping the sponsor"); + this.$youtube.showToast("Skipped sponsor") vid.currentTime = sponsor.segment[1] + 1; } }); diff --git a/NUXT/plugins/youtube.js b/NUXT/plugins/youtube.js index f89e4c21..97d3792c 100644 --- a/NUXT/plugins/youtube.js +++ b/NUXT/plugins/youtube.js @@ -78,6 +78,9 @@ const searchModule = { logger("codeRun", err, true); callback(err); }); + }, + showToast(text) { + Toast.show({ text: text }); } }; From c65d8527e54ca8e3b1223ea80566ce1e6183e4b6 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 1 Jun 2022 21:42:43 -0400 Subject: [PATCH 017/103] watch from url fix --- NUXT/layouts/default.vue | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/NUXT/layouts/default.vue b/NUXT/layouts/default.vue index ed6f57e2..6d2a0273 100644 --- a/NUXT/layouts/default.vue +++ b/NUXT/layouts/default.vue @@ -159,22 +159,26 @@ export default { return; } // No text found, no point in calling API - //--- Auto Suggest ---// - this.$youtube.autoComplete(text, (res) => { - const data = res.replace(/^.*?\(/, "").replace(/\)$/, ""); //Format Response - this.response = JSON.parse(data)[1]; - }); - - //--- User Pastes Link, Direct Them To Video ---// const isLink = linkParser(text); - if (isLink) { + if (!isLink) { + //--- Auto Suggest ---// + this.$youtube.autoComplete(text, (res) => { + const data = res.replace(/^.*?\(/, "").replace(/\)$/, ""); //Format Response + this.response = JSON.parse(data)[1]; + console.log(this.response); + }); + } else { + //--- User Pastes Link, Direct Them To Video ---// this.response = [ - `Watch Video from ID: ${isLink.searchParams.get("v")}`, - { id: isLink.searchParams.get("v") }, + [ + `Watch Video from ID: ${isLink.searchParams.get("v")}`, + { id: isLink.searchParams.get("v") }, + ], ]; + console.log("this.response: ", this.response); return; + //--- End User Pastes Link, Direct Them To Video ---// } - //--- End User Pastes Link, Direct Them To Video ---// }, youtubeSearch(item) { From c89ad35c80bf4e1ef578dbaf6be2a06bc375bf53 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Mon, 6 Jun 2022 11:21:40 -0400 Subject: [PATCH 018/103] humantime fix --- NUXT/components/Player/index.vue | 15 --------------- NUXT/plugins/vuetube.js | 30 +++++++++++++++--------------- 2 files changed, 15 insertions(+), 30 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index be57af09..e631ab41 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -235,21 +235,6 @@ export default { this.vidSrc = this.sources[this.sources.length - 1].url; // TODO: detect orientation change and enter fullscreen // TODO: detect video loading state and send this.loading to play button :loading = loading - - - this.$youtube.getSponsorBlock(this.$route.query.v, (data) => { - sponsorBlock = data.segment; - }); - - this.$refs.player.ontimeupdate = () => { - let vidTime = this.$refs.player.currentTime; - for (let i = 0; i < sponsorBlock.length; i++) { - if (vidTime > sponsorBlock[i][0] && vidTime < sponsorBlock[0][i]) { - this.$refs.player.currentTime = sponsorBlock[i][0]; - break; - } - } - } }, beforeDestroy() { if (this.isFullscreen) this.exitFullscreen(); diff --git a/NUXT/plugins/vuetube.js b/NUXT/plugins/vuetube.js index 886a4d86..ba23fdda 100644 --- a/NUXT/plugins/vuetube.js +++ b/NUXT/plugins/vuetube.js @@ -150,21 +150,21 @@ const module = { let returntext = levels.join(":"); console.log("Human Time:", returntext); - while (returntext.startsWith(":00")) { - returntext = returntext.substring(3); - } // Remove Prepending 0s (eg. 00:00:00:01:00) - if (returntext.startsWith(":0")) { - returntext = returntext.substring(2); - } else { - returntext = returntext.substring(1); - } // Prevent Time Starting With 0 (eg. 01:00) - - if (!returntext.includes(":")) { - if (returntext.length == 1) { - returntext = "0" + returntext; // Make tens digit in seconds always visible (eg. 0:09) - } - returntext = "0:" + returntext; // Make minutes visible as 0 when sub 60 seconds (eg. 0:51) - } + // while (returntext.startsWith(":00")) { + // returntext = returntext.substring(3); + // } // Remove Prepending 0s (eg. 00:00:00:01:00) + // if (returntext.startsWith(":0")) { + // returntext = returntext.substring(2); + // } else { + // returntext = returntext.substring(1); + // } // Prevent Time Starting With 0 (eg. 01:00) + + // if (!returntext.includes(":")) { + // if (returntext.length == 1) { + // returntext = "0" + returntext; // Make tens digit in seconds always visible (eg. 0:09) + // } + // returntext = "0:" + returntext; // Make minutes visible as 0 when sub 60 seconds (eg. 0:51) + // } return returntext; }, From 064ad9cac57f57f88932231f564ac787ec7aead8 Mon Sep 17 00:00:00 2001 From: gayolGate Date: Tue, 7 Jun 2022 14:07:53 +0200 Subject: [PATCH 019/103] Create question.yml --- .github/ISSUE_TEMPLATE/question.yml | 1 + 1 file changed, 1 insertion(+) create mode 100644 .github/ISSUE_TEMPLATE/question.yml diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml new file mode 100644 index 00000000..8b137891 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -0,0 +1 @@ + From eb57a7ca432abfce9f1b46e5d090a635c9e3b631 Mon Sep 17 00:00:00 2001 From: gayolGate Date: Tue, 7 Jun 2022 14:29:00 +0200 Subject: [PATCH 020/103] Update question.yml --- .github/ISSUE_TEMPLATE/question.yml | 34 +++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml index 8b137891..553021c0 100644 --- a/.github/ISSUE_TEMPLATE/question.yml +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -1 +1,35 @@ +name: ❓ Question +description: Ask a quesion related to VueTube +labels: [question] +body: + - type: textarea + id: question + attributes: + label: Ask your question + description: What do you want to know? + placeholder: | + Example: + "How do I add a plugin?" + validations: + required: true + + - type: textarea + id: other-details + attributes: + label: Other details + placeholder: | + Additional details and attachments. + + - type: checkboxes + id: acknowledgements + attributes: + label: Acknowledgements + description: Your question will be closed if you haven't done these steps. + options: + - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue. + required: true + - label: I have written a short but informative title. + required: true + - label: I will fill out all of the requested information in this form. + required: true From e019e8ffde88873328530dac03b84291f21daf1c Mon Sep 17 00:00:00 2001 From: gayolGate Date: Tue, 7 Jun 2022 14:31:52 +0200 Subject: [PATCH 021/103] Update question.yml --- .github/ISSUE_TEMPLATE/question.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml index 553021c0..2a81b345 100644 --- a/.github/ISSUE_TEMPLATE/question.yml +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -15,11 +15,11 @@ body: required: true - type: textarea - id: other-details + id: aditional-info attributes: - label: Other details + label: Aditional information placeholder: | - Additional details and attachments. + Additional useful information, for example, a screenshot. - type: checkboxes id: acknowledgements @@ -27,7 +27,7 @@ body: label: Acknowledgements description: Your question will be closed if you haven't done these steps. options: - - label: I have searched the existing issues and this is a new ticket, **NOT** a duplicate or related to another open issue. + - label: I have searched the existing issues and this is a new question, **NOT** a duplicate or related to another open issue. required: true - label: I have written a short but informative title. required: true From 825b7ccfeb4a305cace225df7d6fd3cd026cc0b0 Mon Sep 17 00:00:00 2001 From: gayolGate Date: Tue, 7 Jun 2022 14:34:43 +0200 Subject: [PATCH 022/103] Update question.yml --- .github/ISSUE_TEMPLATE/question.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml index 2a81b345..2430db7d 100644 --- a/.github/ISSUE_TEMPLATE/question.yml +++ b/.github/ISSUE_TEMPLATE/question.yml @@ -33,3 +33,5 @@ body: required: true - label: I will fill out all of the requested information in this form. required: true + - label: My question isn't asked in FAQ (Frequently Asked Questions). + required: true From 6d4fde2dcc601c86683dfa3b3d8494a469fa7505 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Tue, 7 Jun 2022 13:16:26 -0400 Subject: [PATCH 023/103] slider improvements --- NUXT/components/Player/index.vue | 2 ++ NUXT/components/Player/progressbar.vue | 19 +++++++++++++----- NUXT/components/Player/seekbar.vue | 6 ++++-- NUXT/components/Player/sponsorblock.vue | 19 +++++++++++------- .../slimVideoDescriptionRenderer.vue | 1 + NUXT/pages/watch.vue | 4 ++-- NUXT/plugins/vuetube.js | 20 ------------------- android/.idea/deploymentTargetDropDown.xml | 12 +++++------ 8 files changed, 41 insertions(+), 42 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index e631ab41..0d684117 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -155,6 +155,7 @@ @@ -22,6 +27,10 @@ export default { type: Object, required: true, }, + seeking: { + type: Boolean, + required: true, + }, fullscreen: { type: Boolean, required: true, diff --git a/NUXT/components/Player/seekbar.vue b/NUXT/components/Player/seekbar.vue index 8e4ad8b9..cf731fc5 100644 --- a/NUXT/components/Player/seekbar.vue +++ b/NUXT/components/Player/seekbar.vue @@ -13,12 +13,14 @@ hide-details height="2" dense + color="transparent" + thumb-color="primary" track-color="transparent" :class="!controls && !fullscreen && !scrubbing ? 'invisible' : ''" - style="position: absolute; z-index: 3" + style="position: absolute; z-index: 4" :style=" fullscreen - ? 'width: calc(100% - 2rem); left: 1rem; bottom: 3rem;' + ? 'width: calc(100% - 2rem); left: 1rem; bottom: 51px;' : 'width: calc(100% - 0.8rem); left: 0.4rem; bottom: 0;' " :thumb-size="0" diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 3ebe449d..c2c36dfe 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -6,20 +6,21 @@ :buffer-value="(block.segment[1] / video.duration) * 100" :value="(block.segment[0] / video.duration) * 100" style=" - z-index: 4; - width: 100%; - background: transparent; + z-index: 3; + position: absolute; pointer-events: none; + background: transparent; + transform: translateY(50%); " :class="!fullscreen || controls ? '' : 'invisible'" background-color="white" background-opacity="1" color="transparent" - height="2" + :height="seeking ? 4 : 2" :style=" fullscreen - ? 'width: calc(100% - 2rem); left: 1rem; position: absolute; bottom: 3rem;' - : 'width: 100%; left: 0; position: absolute; bottom: 0;' + ? 'width: calc(100% - 2rem); left: 1rem; bottom: 3.25rem;' + : 'width: 100%; left: 0; bottom: 1px;' " /> @@ -32,6 +33,10 @@ export default { type: Object, required: true, }, + seeking: { + type: Boolean, + required: true, + }, videoid: { type: String, required: true, @@ -70,7 +75,7 @@ export default { vidTime <= sponsor.segment[1] ) { console.log("Skipping the sponsor"); - this.$youtube.showToast("Skipped sponsor") + this.$youtube.showToast("Skipped sponsor"); vid.currentTime = sponsor.segment[1] + 1; } }); diff --git a/NUXT/components/UtilRenderers/slimVideoDescriptionRenderer.vue b/NUXT/components/UtilRenderers/slimVideoDescriptionRenderer.vue index 32c7bc97..faf7ecfc 100644 --- a/NUXT/components/UtilRenderers/slimVideoDescriptionRenderer.vue +++ b/NUXT/components/UtilRenderers/slimVideoDescriptionRenderer.vue @@ -8,6 +8,7 @@ diff --git a/NUXT/pages/watch.vue b/NUXT/pages/watch.vue index 148c6dfa..07a5d708 100644 --- a/NUXT/pages/watch.vue +++ b/NUXT/pages/watch.vue @@ -22,7 +22,7 @@
@@ -164,7 +164,7 @@
-
+
diff --git a/NUXT/plugins/vuetube.js b/NUXT/plugins/vuetube.js index ba23fdda..461aef2a 100644 --- a/NUXT/plugins/vuetube.js +++ b/NUXT/plugins/vuetube.js @@ -141,31 +141,11 @@ const module = { Math.floor((((seconds % 31536000) % 86400) % 3600) % 60), //Seconds ]; levels = levels.filter((level) => level !== null); - for (let i = 1; i < levels.length; i++) { levels[i] = levels[i].toString().padStart(2, "0"); } - // join the array into a string with : as a separator let returntext = levels.join(":"); - - console.log("Human Time:", returntext); - // while (returntext.startsWith(":00")) { - // returntext = returntext.substring(3); - // } // Remove Prepending 0s (eg. 00:00:00:01:00) - // if (returntext.startsWith(":0")) { - // returntext = returntext.substring(2); - // } else { - // returntext = returntext.substring(1); - // } // Prevent Time Starting With 0 (eg. 01:00) - - // if (!returntext.includes(":")) { - // if (returntext.length == 1) { - // returntext = "0" + returntext; // Make tens digit in seconds always visible (eg. 0:09) - // } - // returntext = "0:" + returntext; // Make minutes visible as 0 when sub 60 seconds (eg. 0:51) - // } - return returntext; }, //--- End Convert Time To Human Readable String ---// diff --git a/android/.idea/deploymentTargetDropDown.xml b/android/.idea/deploymentTargetDropDown.xml index 007b8a48..7c97d1b7 100644 --- a/android/.idea/deploymentTargetDropDown.xml +++ b/android/.idea/deploymentTargetDropDown.xml @@ -1,17 +1,17 @@ - + - + - - + + - - + + \ No newline at end of file From bee1f4570110b78fadab55ccc4277076cd25e36d Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Tue, 7 Jun 2022 14:29:57 -0400 Subject: [PATCH 024/103] player controls position improvements --- NUXT/components/Player/fullscreen.vue | 7 +- NUXT/components/Player/index.vue | 102 +++++++++++++++++++++++++- NUXT/components/Player/watchtime.vue | 20 +++-- 3 files changed, 117 insertions(+), 12 deletions(-) diff --git a/NUXT/components/Player/fullscreen.vue b/NUXT/components/Player/fullscreen.vue index c4cfdb56..b332d7de 100644 --- a/NUXT/components/Player/fullscreen.vue +++ b/NUXT/components/Player/fullscreen.vue @@ -4,10 +4,13 @@ text small color="white" - style="position: absolute; bottom: 0.25rem; right: 0.25rem" + style="position: absolute; right: 0.25rem" + :style="fullscreen ? 'bottom: 3.5rem' : 'bottom: 0.25rem'" @click.stop="$emit('fullscreen')" > - {{ fullscreen ? "mdi-fullscreen-exit" : "mdi-fullscreen" }} + {{ + fullscreen ? "mdi-fullscreen-exit" : "mdi-fullscreen" + }} diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 0d684117..1cfff4ae 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -74,7 +74,11 @@
@@ -143,7 +147,89 @@ mdi-fast-forward-5 - + + + mdi-thumb-up-outline + + + mdi-thumb-down-outline + + + mdi-share-outline + + + mdi-plus-box-multiple-outline + + + mdi-comment-text-outline + + + + mdi-cards-outline + @@ -151,6 +237,18 @@ :fullscreen="isFullscreen" @fullscreen="(controls = $refs.player.paused), handleFullscreenChange()" /> + + mdi-cards-outline +
{{ watched }} / {{ duration }} @@ -15,7 +10,16 @@ diff --git a/NUXT/components/Player/seekbar.vue b/NUXT/components/Player/seekbar.vue index cf731fc5..1f4fd019 100644 --- a/NUXT/components/Player/seekbar.vue +++ b/NUXT/components/Player/seekbar.vue @@ -77,23 +77,21 @@ export default { type: Number, required: true, }, + progress: { + type: Number, + required: true, + }, + duration: { + type: Number, + required: true, + }, }, data: () => ({ scrubbing: false, - progress: 0, - duration: 0, vidWrs: "", }), mounted() { this.vidWrs = this.sources[1].url; - this.video.addEventListener("loadeddata", (e) => { - if (this.video.readyState >= 3) { - this.video.addEventListener("timeupdate", () => { - this.duration = this.video.duration; - if (!this.scrubbing) this.progress = this.currentTime; - }); - } - }); }, methods: { seek(e) { @@ -114,126 +112,126 @@ export default { scrub(e) { this.video.currentTime = e; }, - // TODO: better scrubbing preview - loadVideoFrames() { - // Exit loop if desired number of frames have been extracted - if (this.frames.length >= frameCount) { - this.visibleFrame = 0; - - // Append all canvases to container div - this.frames.forEach((frame) => { - this.frameContainerElement.appendChild(frame); - }); - return; - } - - // If extraction hasn’t started, set desired time for first frame - if (this.frames.length === 0) { - this.requestedTime = 0; - } else { - this.requestedTime = this.requestedTime + this.frameTimestep; - } - - // Send seek request to video player for the next frame. - this.videoElement.currentTime = this.requestedTime; - }, - extractFrame(videoWidth, videoHeight) { - // Create DOM canvas object - var canvas = document.createElement("canvas"); - canvas.className = "video-scrubber-frame"; - canvas.height = videoHeight; - canvas.width = videoWidth; - - // Copy current frame to canvas - var context = canvas.getContext("2d"); - context.drawImage(this.videoElement, 0, 0, videoWidth, videoHeight); - this.frames.push(canvas); - - // Load the next frame - loadVideoFrames(); - }, - prefetch_file(url, fetched_callback, progress_callback, error_callback) { - var xhr = new XMLHttpRequest(); - xhr.open("GET", url, true); - xhr.responseType = "blob"; - - xhr.addEventListener( - "load", - function () { - if (xhr.status === 200) { - var URL = window.URL || window.webkitURL; - var blob_url = URL.createObjectURL(xhr.response); - fetched_callback(blob_url); - } else { - error_callback(); - } - }, - false - ); - - var prev_pc = 0; - xhr.addEventListener("progress", function (event) { - if (event.lengthComputable) { - var pc = Math.round((event.loaded / event.total) * 100); - if (pc != prev_pc) { - prev_pc = pc; - progress_callback(pc); - } - } - }); - xhr.send(); - }, - async extractFramesFromVideo(videoUrl, fps = 25) { - // fully download it first (no buffering): - console.log(videoUrl); - console.log(fps); - let videoBlob = await fetch(videoUrl, { - headers: { range: "bytes=0-567139" }, - }).then((r) => r.blob()); - console.log(videoBlob); - let videoObjectUrl = URL.createObjectURL(videoBlob); - let video = document.createElement("video"); - - let seekResolve; - video.addEventListener("seeked", async function () { - if (seekResolve) seekResolve(); - }); - - video.src = videoObjectUrl; - - // workaround chromium metadata bug (https://stackoverflow.com/q/38062864/993683) - while ( - (video.duration === Infinity || isNaN(video.duration)) && - video.readyState < 2 - ) { - await new Promise((r) => setTimeout(r, 1000)); - video.currentTime = 10000000 * Math.random(); - } - let duration = video.duration; - - let canvas = document.createElement("canvas"); - let context = canvas.getContext("2d"); - let [w, h] = [video.videoWidth, video.videoHeight]; - canvas.width = w; - canvas.height = h; - - let interval = 1; - let currentTime = 0; - - while (currentTime < duration) { - video.currentTime = currentTime; - await new Promise((r) => (seekResolve = r)); - - context.drawImage(video, 0, 0, w, h); - let base64ImageData = canvas.toDataURL(); - console.log(base64ImageData); - this.frames.push(base64ImageData); - - currentTime += interval; - } - console.log("%c frames", "color: #00ff00"); - console.log(this.frames); - }, + // TODO: better scrubbing preview (don't delet ples 🙏) + // loadVideoFrames() { + // // Exit loop if desired number of frames have been extracted + // if (this.frames.length >= frameCount) { + // this.visibleFrame = 0; + + // // Append all canvases to container div + // this.frames.forEach((frame) => { + // this.frameContainerElement.appendChild(frame); + // }); + // return; + // } + + // // If extraction hasn’t started, set desired time for first frame + // if (this.frames.length === 0) { + // this.requestedTime = 0; + // } else { + // this.requestedTime = this.requestedTime + this.frameTimestep; + // } + + // // Send seek request to video player for the next frame. + // this.videoElement.currentTime = this.requestedTime; + // }, + // extractFrame(videoWidth, videoHeight) { + // // Create DOM canvas object + // var canvas = document.createElement("canvas"); + // canvas.className = "video-scrubber-frame"; + // canvas.height = videoHeight; + // canvas.width = videoWidth; + + // // Copy current frame to canvas + // var context = canvas.getContext("2d"); + // context.drawImage(this.videoElement, 0, 0, videoWidth, videoHeight); + // this.frames.push(canvas); + + // // Load the next frame + // loadVideoFrames(); + // }, + // prefetch_file(url, fetched_callback, progress_callback, error_callback) { + // var xhr = new XMLHttpRequest(); + // xhr.open("GET", url, true); + // xhr.responseType = "blob"; + + // xhr.addEventListener( + // "load", + // function () { + // if (xhr.status === 200) { + // var URL = window.URL || window.webkitURL; + // var blob_url = URL.createObjectURL(xhr.response); + // fetched_callback(blob_url); + // } else { + // error_callback(); + // } + // }, + // false + // ); + + // var prev_pc = 0; + // xhr.addEventListener("progress", function (event) { + // if (event.lengthComputable) { + // var pc = Math.round((event.loaded / event.total) * 100); + // if (pc != prev_pc) { + // prev_pc = pc; + // progress_callback(pc); + // } + // } + // }); + // xhr.send(); + // }, + // async extractFramesFromVideo(videoUrl, fps = 25) { + // // fully download it first (no buffering): + // console.log(videoUrl); + // console.log(fps); + // let videoBlob = await fetch(videoUrl, { + // headers: { range: "bytes=0-567139" }, + // }).then((r) => r.blob()); + // console.log(videoBlob); + // let videoObjectUrl = URL.createObjectURL(videoBlob); + // let video = document.createElement("video"); + + // let seekResolve; + // video.addEventListener("seeked", async function () { + // if (seekResolve) seekResolve(); + // }); + + // video.src = videoObjectUrl; + + // // workaround chromium metadata bug (https://stackoverflow.com/q/38062864/993683) + // while ( + // (video.duration === Infinity || isNaN(video.duration)) && + // video.readyState < 2 + // ) { + // await new Promise((r) => setTimeout(r, 1000)); + // video.currentTime = 10000000 * Math.random(); + // } + // let duration = video.duration; + + // let canvas = document.createElement("canvas"); + // let context = canvas.getContext("2d"); + // let [w, h] = [video.videoWidth, video.videoHeight]; + // canvas.width = w; + // canvas.height = h; + + // let interval = 1; + // let currentTime = 0; + + // while (currentTime < duration) { + // video.currentTime = currentTime; + // await new Promise((r) => (seekResolve = r)); + + // context.drawImage(video, 0, 0, w, h); + // let base64ImageData = canvas.toDataURL(); + // console.log(base64ImageData); + // this.frames.push(base64ImageData); + + // currentTime += interval; + // } + // console.log("%c frames", "color: #00ff00"); + // console.log(this.frames); + // }, // TODO: scrubbing preview end }, }; diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index c2c36dfe..31ec13da 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -49,41 +49,10 @@ export default { type: Boolean, required: true, }, - }, - data: () => ({ - blocks: [], - }), - mounted() { - let vid = this.video; - let id = this.videoid; - - vid.addEventListener("loadeddata", (e) => { - if (vid.readyState >= 3) { - this.$youtube.getSponsorBlock(id, (data) => { - console.log("sbreturn", data); - if (Array.isArray(data)) { - this.blocks = data; - - // iterate over data.segments array - vid.addEventListener("timeupdate", () => { - // console.log("sb check", data); - data.forEach((sponsor) => { - let vidTime = vid.currentTime; - - if ( - vidTime >= sponsor.segment[0] && - vidTime <= sponsor.segment[1] - ) { - console.log("Skipping the sponsor"); - this.$youtube.showToast("Skipped sponsor"); - vid.currentTime = sponsor.segment[1] + 1; - } - }); - }); - } - }); - } - }); + blocks: { + type: Array, + required: true, + }, }, }; diff --git a/NUXT/components/Player/watchtime.vue b/NUXT/components/Player/watchtime.vue index dd23cace..770da080 100644 --- a/NUXT/components/Player/watchtime.vue +++ b/NUXT/components/Player/watchtime.vue @@ -19,18 +19,14 @@ export default { type: Boolean, required: true, }, - }, - data() { - return { - watched: 0, - duration: 0, - }; - }, - mounted() { - this.video.addEventListener("timeupdate", () => { - this.duration = this.$vuetube.humanTime(this.video.duration); - this.watched = this.$vuetube.humanTime(this.video.currentTime); - }); + duration: { + type: Number, + required: true, + }, + watched: { + type: Number, + required: true, + }, }, }; diff --git a/ios/App/App.xcodeproj/project.pbxproj b/ios/App/App.xcodeproj/project.pbxproj index 3e1923b9..cba029a9 100644 --- a/ios/App/App.xcodeproj/project.pbxproj +++ b/ios/App/App.xcodeproj/project.pbxproj @@ -352,15 +352,14 @@ DEVELOPMENT_TEAM = VRCJ7YWR89; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; OTHER_SWIFT_FLAGS = "$(inherited) \"-D\" \"COCOAPODS\" \"-DDEBUG\""; PRODUCT_BUNDLE_IDENTIFIER = com.Frontesque.vuetube; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTS_MACCATALYST = YES; + SUPPORTS_MACCATALYST = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Debug; }; @@ -374,14 +373,13 @@ DEVELOPMENT_TEAM = VRCJ7YWR89; INFOPLIST_FILE = App/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 12.2; - "IPHONEOS_DEPLOYMENT_TARGET[sdk=macosx*]" = 14.2; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; PRODUCT_BUNDLE_IDENTIFIER = com.Frontesque.vuetube; PRODUCT_NAME = "$(TARGET_NAME)"; - SUPPORTS_MACCATALYST = YES; + SUPPORTS_MACCATALYST = NO; SWIFT_ACTIVE_COMPILATION_CONDITIONS = ""; SWIFT_VERSION = 5.0; - TARGETED_DEVICE_FAMILY = "1,2,6"; + TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; From a079946ae11fa1821384e262750ff502e1365646 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 8 Jun 2022 12:32:04 -0400 Subject: [PATCH 031/103] sponsorblock cleanup --- NUXT/components/Player/index.vue | 14 +++--- NUXT/components/Player/sponsorblock.vue | 58 ++++++++----------------- 2 files changed, 26 insertions(+), 46 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 48afc43f..0fd08be5 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -274,12 +274,11 @@ @seeking="seeking = !seeking" />
@@ -354,7 +353,7 @@ export default { }); vid.addEventListener("loadeddata", (e) => { - // TODO: detect video loading state and send this.loading to play button :loading = loading + // TODO: detect video loading state and send this.loading to play button :loading = loading here // console.log(e); if (vid.readyState >= 3) { vid.addEventListener("timeupdate", () => { @@ -362,7 +361,7 @@ export default { this.watched = this.$vuetube.humanTime(vid.currentTime); if (!this.seeking) this.progress = vid.currentTime; - // console.log("sb check", data); + // console.log("sb check", this.blocks); // iterate over data.segments array if (this.blocks.length > 0) this.blocks.forEach((sponsor) => { @@ -378,6 +377,7 @@ export default { } }); }); + // TODO: detect video loading state and send this.loading to play button :loading = loading here vid.addEventListener("progress", () => { this.buffered = (vid.buffered.end(0) / vid.duration) * 100; }); diff --git a/NUXT/components/Player/sponsorblock.vue b/NUXT/components/Player/sponsorblock.vue index 31ec13da..51632d43 100644 --- a/NUXT/components/Player/sponsorblock.vue +++ b/NUXT/components/Player/sponsorblock.vue @@ -23,13 +23,18 @@ : 'width: 100%; left: 0; bottom: 1px;' " /> +
- - From e936325ccbdc74a5e32934c4a9968f1d7d55b703 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 8 Jun 2022 12:34:52 -0400 Subject: [PATCH 032/103] progressbar cleanup --- NUXT/components/Player/index.vue | 8 ++++---- NUXT/components/Player/progressbar.vue | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 0fd08be5..2ba08fb1 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -254,12 +254,12 @@
export default { props: { - video: { + duration: { type: Object, required: true, }, From 89e521300fc9eb85466e13e949b09ab11988f781 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Wed, 8 Jun 2022 12:36:32 -0400 Subject: [PATCH 033/103] watchtime cleanup --- NUXT/components/Player/index.vue | 7 ++----- NUXT/components/Player/watchtime.vue | 10 +++------- 2 files changed, 5 insertions(+), 12 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 2ba08fb1..bb972cad 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -149,10 +149,9 @@ = 3) { vid.addEventListener("timeupdate", () => { - this.duration = this.$vuetube.humanTime(vid.duration); - this.watched = this.$vuetube.humanTime(vid.currentTime); if (!this.seeking) this.progress = vid.currentTime; // console.log("sb check", this.blocks); diff --git a/NUXT/components/Player/watchtime.vue b/NUXT/components/Player/watchtime.vue index 770da080..6571a45e 100644 --- a/NUXT/components/Player/watchtime.vue +++ b/NUXT/components/Player/watchtime.vue @@ -3,18 +3,14 @@ style="color: #fff; left: 1rem; font-size: 0.75rem; position: absolute" :style="fullscreen ? 'bottom: 4.25rem' : 'bottom: 1rem'" > - {{ watched }} - / {{ duration }} + {{ $vuetube.humanTime(currentTime) }} + / {{ $vuetube.humanTime(duration) }}
diff --git a/NUXT/components/Player/playpause.vue b/NUXT/components/Player/playpause.vue index f0b06efe..2af038cb 100644 --- a/NUXT/components/Player/playpause.vue +++ b/NUXT/components/Player/playpause.vue @@ -4,7 +4,7 @@ text large color="white" - @click.stop=" + @click=" (paused = !video.paused), video.paused ? $emit('play') : $emit('pause') " > diff --git a/NUXT/components/Player/progressbar.vue b/NUXT/components/Player/progressbar.vue index 19515e80..09a7a1d8 100644 --- a/NUXT/components/Player/progressbar.vue +++ b/NUXT/components/Player/progressbar.vue @@ -1,7 +1,6 @@ - - From 426e8f857618d9d98f284ea6ce0602e53c85b7d7 Mon Sep 17 00:00:00 2001 From: Affan Zaman <47723802+afnzmn@users.noreply.github.com> Date: Thu, 9 Jun 2022 10:22:55 -0400 Subject: [PATCH 050/103] Doubletap -> Double tap Robo is slow --- NUXT/components/Player/index.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 3dec3377..36b582cf 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -86,7 +86,7 @@ style="width: 100%; top: 0.5rem; position: absolute; font-size: 0.66rem" > mdi-rewind - Doubletap left or right to skip 10 seconds + Double tap left or right to skip 10 seconds mdi-fast-forward
From 5bddf86ce9eda704affa8268db421e3a10d99a90 Mon Sep 17 00:00:00 2001 From: Nikita Krupin Date: Thu, 9 Jun 2022 12:39:44 -0400 Subject: [PATCH 051/103] zindex fix & no close on fullscreen --- NUXT/components/Player/index.vue | 10 ++++------ NUXT/components/Player/quality.vue | 2 +- NUXT/components/Player/speed.vue | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/NUXT/components/Player/index.vue b/NUXT/components/Player/index.vue index 3dec3377..16eb3183 100644 --- a/NUXT/components/Player/index.vue +++ b/NUXT/components/Player/index.vue @@ -21,11 +21,7 @@ objectFit: contain ? 'contain' : 'cover', borderRadius: $store.state.tweaks.roundWatch && !isFullscreen - ? ` - ${$store.state.tweaks.roundTweak / 3}rem - ${$store.state.tweaks.roundTweak / 3}rem - ${$store.state.tweaks.roundTweak / 12}rem - ${$store.state.tweaks.roundTweak / 12}rem !important` + ? `${$store.state.tweaks.roundTweak / 3}rem ${$store.state.tweaks.roundTweak / 3}rem 0rem 0rem !important` : '0', }" poster="https://media.discordapp.net/attachments/970793575153561640/974728851441729556/bam.png" @@ -182,7 +178,7 @@
@@ -215,12 +211,14 @@ diff --git a/NUXT/components/Player/quality.vue b/NUXT/components/Player/quality.vue index c438d83f..c9d83e37 100644 --- a/NUXT/components/Player/quality.vue +++ b/NUXT/components/Player/quality.vue @@ -2,8 +2,8 @@