From df2f4d0e871446bdc222f538d44c6eb6d3a83aab Mon Sep 17 00:00:00 2001 From: duncte123 Date: Tue, 9 Feb 2021 13:16:40 +0100 Subject: [PATCH 01/76] Bump version --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 04349c8..d6fa5e6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ plugins { } project.group = "com.dunctebot" -project.version = "1.5.1" +project.version = "1.5.2" val archivesBaseName = "sourcemanagers" repositories { From 8ade2d7e1ee5975d6081b6b380a8e261a2070bca Mon Sep 17 00:00:00 2001 From: duncte123 Date: Tue, 9 Feb 2021 13:50:15 +0100 Subject: [PATCH 02/76] Give github a try --- .github/workflows/02-publish.yml | 11 +++++++---- build.gradle.kts | 27 +++++++++++++++++++++++---- 2 files changed, 30 insertions(+), 8 deletions(-) diff --git a/.github/workflows/02-publish.yml b/.github/workflows/02-publish.yml index 429b291..555492e 100644 --- a/.github/workflows/02-publish.yml +++ b/.github/workflows/02-publish.yml @@ -24,8 +24,11 @@ jobs: - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle - run: ./gradlew --no-daemon build - - name: Upload to github + run: ./gradlew --no-daemon publish env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: ./gradlew --no-daemon githubRelease + USERNAME: ${{ github.actor }} + TOKEN: ${{ secrets.GITHUB_TOKEN }} +# - name: Upload to github +# env: +# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} +# run: ./gradlew --no-daemon githubRelease diff --git a/build.gradle.kts b/build.gradle.kts index d6fa5e6..26393af 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -21,7 +21,7 @@ plugins { `java-library` `maven-publish` - id("com.github.breadmoirai.github-release") version "2.2.12" +// id("com.github.breadmoirai.github-release") version "2.2.12" } project.group = "com.dunctebot" @@ -58,6 +58,7 @@ tasks.withType { val jar: Jar by tasks val build: Task by tasks val clean: Task by tasks +val publish: Task by tasks val sourcesJar = task("sourcesJar") { archiveClassifier.set("sources") @@ -74,8 +75,18 @@ build.apply { } publishing { + repositories { + maven { + name = "GitHubPackages" + url = uri("https://maven.pkg.github.com/DuncteBot/skybot-source-managers") + credentials { + username = System.getenv("USERNAME") + password = System.getenv("TOKEN") + } + } + } publications { - create("mavenJava") { + register("gpr") { pom { name.set(archivesBaseName) description.set("Source managers for skybot") @@ -111,7 +122,15 @@ publishing { } } -githubRelease { +publish.apply { + dependsOn(build) + + onlyIf { + System.getenv("USERNAME") != null && System.getenv("TOKEN") != null + } +} + +/*githubRelease { token(System.getenv("GITHUB_TOKEN")) owner("DuncteBot") repo("skybot-source-managers") @@ -119,4 +138,4 @@ githubRelease { overwrite(false) prerelease(false) body(changelog()) -} +}*/ From 185f164a3de1de91a38e443e4239645aa83f269e Mon Sep 17 00:00:00 2001 From: duncte123 Date: Tue, 9 Feb 2021 14:29:05 +0100 Subject: [PATCH 03/76] Attempt to update repo --- .github/workflows/02-publish.yml | 4 ++-- build.gradle.kts | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/02-publish.yml b/.github/workflows/02-publish.yml index 555492e..dbd104d 100644 --- a/.github/workflows/02-publish.yml +++ b/.github/workflows/02-publish.yml @@ -26,8 +26,8 @@ jobs: - name: Build with Gradle run: ./gradlew --no-daemon publish env: - USERNAME: ${{ github.actor }} - TOKEN: ${{ secrets.GITHUB_TOKEN }} + USERNAME: ${{ secrets.JFROG_USER }} + PASSWORD: ${{ secrets.JFROG_PASS }} # - name: Upload to github # env: # GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/build.gradle.kts b/build.gradle.kts index 26393af..4d8a0d4 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -77,16 +77,16 @@ build.apply { publishing { repositories { maven { - name = "GitHubPackages" - url = uri("https://maven.pkg.github.com/DuncteBot/skybot-source-managers") + name = "jfrog" + url = uri("https://duncte123.jfrog.io/artifactory/maven/") credentials { username = System.getenv("USERNAME") - password = System.getenv("TOKEN") + password = System.getenv("PASSWORD") } } } publications { - register("gpr") { + register("jfrog") { pom { name.set(archivesBaseName) description.set("Source managers for skybot") @@ -126,7 +126,7 @@ publish.apply { dependsOn(build) onlyIf { - System.getenv("USERNAME") != null && System.getenv("TOKEN") != null + System.getenv("USERNAME") != null && System.getenv("PASSWORD") != null } } From 5f56393a12c0092e93568903c40022da4788026d Mon Sep 17 00:00:00 2001 From: duncte123 Date: Tue, 9 Feb 2021 14:43:18 +0100 Subject: [PATCH 04/76] Remove id token --- build.gradle.kts | 2 +- .../extra/YoutubeContextFilterOverride.java | 1 - .../sourcemanagers/extra/YoutubeVersionData.java | 11 ++--------- 3 files changed, 3 insertions(+), 11 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 4d8a0d4..cb4b7d1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -25,7 +25,7 @@ plugins { } project.group = "com.dunctebot" -project.version = "1.5.2" +project.version = "1.5.3" val archivesBaseName = "sourcemanagers" repositories { diff --git a/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeContextFilterOverride.java b/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeContextFilterOverride.java index 5fea6e0..bda7c78 100644 --- a/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeContextFilterOverride.java +++ b/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeContextFilterOverride.java @@ -111,7 +111,6 @@ public void onRequest(HttpClientContext context, HttpUriRequest request, boolean request.setHeader("x-youtube-client-version", youtubeVersionData.getVersion()); request.setHeader("x-youtube-page-cl", youtubeVersionData.getPageCl()); request.setHeader("x-youtube-page-label", youtubeVersionData.getLabel()); - request.setHeader("x-youtube-identity-token", youtubeVersionData.getIdToken()); } @Override diff --git a/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeVersionData.java b/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeVersionData.java index ef719a6..8a5d727 100644 --- a/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeVersionData.java +++ b/src/main/java/com/dunctebot/sourcemanagers/extra/YoutubeVersionData.java @@ -27,15 +27,14 @@ public class YoutubeVersionData { /* PAGE_BUILD_LABEL x-youtube-page-label */ private final String label; /* ID_TOKEN x-youtube-identity-token */ - private final String idToken; + // private final String idToken; /* PAGE_CL x-youtube-page-cl */ private final String pageCl; /* DEVICE x-youtube-device */ // private final String device; - public YoutubeVersionData(String version, String idToken, String label, String pageCl) { + public YoutubeVersionData(String version, String label, String pageCl) { this.version = version; - this.idToken = idToken; this.label = label; this.pageCl = pageCl; } @@ -44,10 +43,6 @@ public String getVersion() { return version; } - public String getIdToken() { - return idToken; - } - public String getLabel() { return label; } @@ -60,7 +55,6 @@ public String getPageCl() { public String toString() { return "YoutubeVersionData{" + "version='" + version + '\'' + - ", idToken='" + idToken + '\'' + ", label='" + label + '\'' + ", pageCl='" + pageCl + '\'' + '}'; @@ -69,7 +63,6 @@ public String toString() { public static YoutubeVersionData fromBrowser(JsonBrowser json) { return new YoutubeVersionData( json.get("INNERTUBE_CONTEXT_CLIENT_VERSION").safeText(), - json.get("ID_TOKEN").safeText(), json.get("PAGE_BUILD_LABEL").safeText(), json.get("PAGE_CL").safeText() ); From 84249d9642f4143929a74d23e25d8a5a348d2bb9 Mon Sep 17 00:00:00 2001 From: duncte123 Date: Fri, 19 Feb 2021 11:40:30 +0100 Subject: [PATCH 05/76] First test for tiktok --- .../com/dunctebot/sourcemanagers/Utils.java | 9 + .../pornhub/PornHubAudioSourceManager.java | 4 - .../tiktok/TikTokAudioSourceManager.java | 181 ++++++++++++++++++ .../tiktok/TikTokAudioTrack.java | 50 +++++ 4 files changed, 240 insertions(+), 4 deletions(-) create mode 100644 src/main/java/com/dunctebot/sourcemanagers/tiktok/TikTokAudioSourceManager.java create mode 100644 src/main/java/com/dunctebot/sourcemanagers/tiktok/TikTokAudioTrack.java diff --git a/src/main/java/com/dunctebot/sourcemanagers/Utils.java b/src/main/java/com/dunctebot/sourcemanagers/Utils.java index 420ecdf..7167356 100644 --- a/src/main/java/com/dunctebot/sourcemanagers/Utils.java +++ b/src/main/java/com/dunctebot/sourcemanagers/Utils.java @@ -16,10 +16,19 @@ package com.dunctebot.sourcemanagers; +import org.apache.http.client.methods.HttpGet; + public class Utils { public static boolean isURL(String url) { return url.matches("^https?:\\/\\/[-a-zA-Z0-9+&@#\\/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#\\/%=~_|]"); } + public static void fakeChrome(HttpGet httpGet) { + httpGet.setHeader("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9"); + httpGet.setHeader("dnt", "1"); + httpGet.setHeader("upgrade-insecure-requests", "1"); + httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.150 Safari/537.36"); + } + } diff --git a/src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioSourceManager.java b/src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioSourceManager.java index e950abd..e368525 100644 --- a/src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioSourceManager.java +++ b/src/main/java/com/dunctebot/sourcemanagers/pornhub/PornHubAudioSourceManager.java @@ -146,10 +146,6 @@ private PornHubAudioTrack buildAudioTrack(String title, String author, long dura ); } - /*private PornHubAudioTrack buildAudioTrack(AudioTrackInfoWithImage info) { - return new PornHubAudioTrack(info, this); - }*/ - private JsonBrowser getVideoInfo(String html) throws IOException { // flashvars_130837711['mediaDefinitions'][0]['videoUrl'] final Matcher matcher = VIDEO_INFO_REGEX.matcher(html); diff --git a/src/main/java/com/dunctebot/sourcemanagers/tiktok/TikTokAudioSourceManager.java b/src/main/java/com/dunctebot/sourcemanagers/tiktok/TikTokAudioSourceManager.java new file mode 100644 index 0000000..ff05e7a --- /dev/null +++ b/src/main/java/com/dunctebot/sourcemanagers/tiktok/TikTokAudioSourceManager.java @@ -0,0 +1,181 @@ +/* + * Copyright 2021 Duncan "duncte123" Sterken + * + * Licensed 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 com.dunctebot.sourcemanagers.tiktok; + +import com.dunctebot.sourcemanagers.AbstractDuncteBotHttpSource; +import com.dunctebot.sourcemanagers.AudioTrackInfoWithImage; +import com.sedmelluq.discord.lavaplayer.player.AudioPlayerManager; +import com.sedmelluq.discord.lavaplayer.tools.ExceptionTools; +import com.sedmelluq.discord.lavaplayer.tools.FriendlyException; +import com.sedmelluq.discord.lavaplayer.tools.FriendlyException.Severity; +import com.sedmelluq.discord.lavaplayer.tools.JsonBrowser; +import com.sedmelluq.discord.lavaplayer.track.AudioItem; +import com.sedmelluq.discord.lavaplayer.track.AudioReference; +import com.sedmelluq.discord.lavaplayer.track.AudioTrack; +import com.sedmelluq.discord.lavaplayer.track.AudioTrackInfo; +import org.apache.commons.io.IOUtils; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; + +import java.io.DataInput; +import java.io.DataOutput; +import java.io.IOException; +import java.nio.charset.StandardCharsets; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.dunctebot.sourcemanagers.Utils.fakeChrome; + +public class TikTokAudioSourceManager extends AbstractDuncteBotHttpSource { + private static final String BASE = "https:\\/\\/(?:www\\.)?tiktok\\.com"; + private static final String USER = "@(?[a-z0-9A-Z]+)"; + private static final String VIDEO = "(?