├── settings.gradle ├── .gitignore ├── app ├── misc │ ├── .gitignore │ ├── signing.keystore │ ├── genius-api-token.txt.gpg │ └── android-publisher-account.json.gpg ├── src │ └── main │ │ ├── res │ │ ├── values │ │ │ ├── styles.xml │ │ │ ├── colors.xml │ │ │ └── strings.xml │ │ ├── drawable-hdpi │ │ │ └── icon.png │ │ ├── drawable-mdpi │ │ │ └── icon.png │ │ ├── drawable-xhdpi │ │ │ └── icon.png │ │ ├── drawable-xxhdpi │ │ │ └── icon.png │ │ ├── drawable-xxxhdpi │ │ │ └── icon.png │ │ ├── xml │ │ │ └── network_security_config.xml │ │ ├── values-ja │ │ │ └── strings.xml │ │ ├── menu │ │ │ └── lyrics_options.xml │ │ ├── drawable │ │ │ └── refresh.xml │ │ ├── values-hu │ │ │ └── strings.xml │ │ ├── values-it │ │ │ └── strings.xml │ │ ├── values-nl │ │ │ └── strings.xml │ │ └── layout │ │ │ └── activity_lyrics_show.xml │ │ ├── java │ │ └── com │ │ │ └── kanedias │ │ │ └── vanilla │ │ │ └── lyrics │ │ │ ├── LyricsEngine.java │ │ │ ├── PluginQueryBroadcastReceiver.java │ │ │ ├── GeniusApiEngine.java │ │ │ ├── LyricWikiEngine.java │ │ │ └── LyricsShowActivity.java │ │ └── AndroidManifest.xml ├── proguard-rules.pro └── build.gradle ├── gradle └── wrapper │ ├── gradle-wrapper.jar │ └── gradle-wrapper.properties ├── gradle.properties ├── .travis.yml ├── gradlew.bat ├── README.md ├── gradlew └── LICENSE /settings.gradle: -------------------------------------------------------------------------------- 1 | include ':app' 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | *.iml 2 | .gradle 3 | local.properties 4 | .idea/ 5 | build/ 6 | -------------------------------------------------------------------------------- /app/misc/.gitignore: -------------------------------------------------------------------------------- 1 | android-publisher-account.json 2 | genius-api-token.txt -------------------------------------------------------------------------------- /app/src/main/res/values/styles.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | -------------------------------------------------------------------------------- /app/misc/signing.keystore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/misc/signing.keystore -------------------------------------------------------------------------------- /app/misc/genius-api-token.txt.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/misc/genius-api-token.txt.gpg -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /app/src/main/res/drawable-hdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/src/main/res/drawable-hdpi/icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-mdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/src/main/res/drawable-mdpi/icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/src/main/res/drawable-xhdpi/icon.png -------------------------------------------------------------------------------- /app/misc/android-publisher-account.json.gpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/misc/android-publisher-account.json.gpg -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/src/main/res/drawable-xxhdpi/icon.png -------------------------------------------------------------------------------- /app/src/main/res/drawable-xxxhdpi/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vanilla-music/vanilla-music-lyrics-search/HEAD/app/src/main/res/drawable-xxxhdpi/icon.png -------------------------------------------------------------------------------- /app/src/main/res/values/colors.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | #3F51B5 4 | #303F9F 5 | #FF4081 6 | 7 | -------------------------------------------------------------------------------- /gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Sun Nov 29 01:47:53 MSK 2020 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.5-bin.zip 7 | -------------------------------------------------------------------------------- /app/src/main/res/xml/network_security_config.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | lyrics.wikia.com 5 | 6 | -------------------------------------------------------------------------------- /app/src/main/res/values-ja/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Lyrics Search 3 | 歌詞の検索 4 | lyrics wikia の歌詞を検索することができます 5 | 歌詞が見つかりません! 6 | ファイルに書き込む 7 | 8 | -------------------------------------------------------------------------------- /app/src/main/res/menu/lyrics_options.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/drawable/refresh.xml: -------------------------------------------------------------------------------- 1 | 6 | 9 | 10 | -------------------------------------------------------------------------------- /app/src/main/res/values-hu/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | Dalszövegkereső 3 | Dalszövegkereső 4 | A segítségével dalszövegeket kereshet a számokhoz a wikián 5 | Nem található dalszöveg. 6 | Írás… 7 | Kiírás *.lrc fájlba 8 | Írás fájl címkébe 9 | A fájl kiírása sikeres. 10 | Fájl írási hiba: 11 | 12 | -------------------------------------------------------------------------------- /app/proguard-rules.pro: -------------------------------------------------------------------------------- 1 | # Add project specific ProGuard rules here. 2 | # By default, the flags in this file are appended to flags specified 3 | # in /home/adonai/devel/android-sdk-linux/tools/proguard/proguard-android.txt 4 | # You can edit the include path and order by changing the proguardFiles 5 | # directive in build.gradle. 6 | # 7 | # For more details, see 8 | # http://developer.android.com/guide/developing/tools/proguard.html 9 | 10 | # Add any project specific keep options here: 11 | 12 | # If your project uses WebView with JS, uncomment the following 13 | # and specify the fully qualified class name to the JavaScript interface 14 | # class: 15 | #-keepclassmembers class fqcn.of.javascript.interface.for.webview { 16 | # public *; 17 | #} 18 | -------------------------------------------------------------------------------- /app/src/main/res/values/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Lyrics Search 4 | Lyrics search 5 | Allows you to search lyrics for songs on lyrics wikia 6 | Lyrics not found! 7 | Write… 8 | Write to *.lrc file 9 | Write to file tag 10 | File written successfully! 11 | File write error: 12 | Reload 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-it/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Cerca testo 4 | Cerca testo 5 | Ti permette di cercare i testi delle canzoni su LyricWiki 6 | Testo non trovato! 7 | Scrivi… 8 | Scrivi su un file .lrc 9 | Scrivi nel tag del file 10 | File scritto con successo! 11 | Errore durante la scrittura del file: 12 | Ricarica 13 | 14 | -------------------------------------------------------------------------------- /app/src/main/res/values-nl/strings.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | Songtekst Zoeken 4 | Songtekst zoeken 5 | Zoek naar songteksten van nummers op lyrics wikia 6 | Songteksten niet gevonden! 7 | Schrijf… 8 | Schrijf naar *.lrc bestand 9 | Schrijf naar bestandstag 10 | Bestand is succesvol weggeschreven! 11 | Fout bij schrijven bestand: 12 | Herlaad 13 | 14 | -------------------------------------------------------------------------------- /gradle.properties: -------------------------------------------------------------------------------- 1 | # Project-wide Gradle settings. 2 | 3 | # IDE (e.g. Android Studio) users: 4 | # Gradle settings configured through the IDE *will override* 5 | # any settings specified in this file. 6 | 7 | # For more details on how to configure your build environment visit 8 | # http://www.gradle.org/docs/current/userguide/build_environment.html 9 | 10 | # Specifies the JVM arguments used for the daemon process. 11 | # The setting is particularly useful for tweaking memory settings. 12 | org.gradle.jvmargs=-Xmx1536m 13 | android.useAndroidX=true 14 | 15 | # When configured, Gradle will run in incubating parallel mode. 16 | # This option should only be used with decoupled projects. More details, visit 17 | # http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects 18 | # org.gradle.parallel=true 19 | -------------------------------------------------------------------------------- /app/src/main/java/com/kanedias/vanilla/lyrics/LyricsEngine.java: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright (C) 2016-2019 Oleg `Kanedias` Chernovskiy 3 | * 4 | * This program is free software: you can redistribute it and/or modify 5 | * it under the terms of the GNU General Public License as published by 6 | * the Free Software Foundation, either version 3 of the License, or 7 | * (at your option) any later version. 8 | * 9 | * This program is distributed in the hope that it will be useful, 10 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | * GNU General Public License for more details. 13 | * 14 | * You should have received a copy of the GNU General Public License 15 | * along with this program. If not, see . 16 | */ 17 | package com.kanedias.vanilla.lyrics; 18 | 19 | import android.content.Loader; 20 | import android.os.HandlerThread; 21 | /** 22 | * Interface for various engines for lyrics extraction 23 | * 24 | * @author Kanedias 25 | */ 26 | public interface LyricsEngine { 27 | 28 | /** 29 | * Synchronous call to engine to retrieve lyrics. Most likely to be used in {@link HandlerThread} 30 | * or {@link Loader} 31 | * 32 | * @param artistName band or artist name to search for 33 | * @param songTitle full song title to search for 34 | * @return string containing song lyrics if available, null if nothing found 35 | */ 36 | String getLyrics(String artistName, String songTitle); 37 | } 38 | -------------------------------------------------------------------------------- /app/src/main/AndroidManifest.xml: -------------------------------------------------------------------------------- 1 | 2 | 5 | 6 | 7 | 8 | 9 | 16 | 17 | 20 | 21 | 22 | 23 | 24 | 25 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | -------------------------------------------------------------------------------- /app/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'com.android.application' 2 | apply plugin: 'com.github.triplet.play' 3 | 4 | android { 5 | compileSdkVersion 29 6 | defaultConfig { 7 | applicationId "com.kanedias.vanilla.lyrics" 8 | minSdkVersion 14 9 | targetSdkVersion 29 10 | versionCode 15 11 | versionName "1.4.0" 12 | testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 13 | } 14 | 15 | signingConfigs { 16 | release { 17 | storeFile file('misc/signing.keystore') 18 | storePassword System.getenv('SIGNING_KEYSTORE_PASSWORD') 19 | keyAlias 'release-key' 20 | keyPassword System.getenv('RELEASE_KEY_PASSWORD') 21 | } 22 | } 23 | 24 | buildTypes { 25 | def geniusApiToken = file("misc/genius-api-token.txt").text 26 | 27 | debug { 28 | applicationIdSuffix = ".debug" 29 | buildConfigField "String", "GENIUS_API_TOKEN", "\"$geniusApiToken\"" 30 | } 31 | 32 | release { 33 | buildConfigField "String", "GENIUS_API_TOKEN", "\"$geniusApiToken\"" 34 | 35 | signingConfig signingConfigs.release 36 | proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 37 | } 38 | } 39 | 40 | compileOptions { 41 | sourceCompatibility JavaVersion.VERSION_1_8 42 | targetCompatibility JavaVersion.VERSION_1_8 43 | } 44 | 45 | lintOptions { 46 | disable 'MissingTranslation' 47 | disable 'ExtraTranslation' 48 | } 49 | } 50 | 51 | play { 52 | serviceAccountCredentials = file("misc/android-publisher-account.json") 53 | track = 'production' 54 | } 55 | 56 | dependencies { 57 | implementation 'com.github.vanilla-music:vanilla-music-plugin-commons:1.0.3' 58 | implementation 'org.jsoup:jsoup:1.12.1' // for parsing lyrics wiki pages 59 | } 60 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: android 2 | dist: trusty 3 | 4 | jdk: 5 | - oraclejdk8 6 | 7 | addons: 8 | apt: 9 | update: true 10 | 11 | env: 12 | global: 13 | - ANDROID_COMPILE_SDK=29 14 | - ANDROID_BUILD_TOOLS=29.0.3 15 | - GOOGLE_PUBLISH_JSON=app/misc/android-publisher-account.json 16 | - GENIUS_API_TOKEN_TXT=app/misc/genius-api-token.txt 17 | 18 | android: 19 | components: 20 | - tools 21 | - tools 22 | - platform-tools 23 | - extra-google-m2repository 24 | - extra-android-m2repository 25 | - build-tools-28.0.3 26 | - android-28 27 | 28 | licenses: 29 | - android-sdk-license-.+ 30 | - android-sdk-preview-license-.+ 31 | 32 | before_cache: 33 | - rm -f $HOME/.gradle/caches/modules-2/modules-2.lock 34 | - rm -fr $HOME/.gradle/caches/*/plugin-resolution/ 35 | 36 | cache: 37 | directories: 38 | - $HOME/.gradle/caches/ 39 | - $HOME/.gradle/wrapper/ 40 | - $HOME/.android/build-cache 41 | 42 | before_install: 43 | - sudo apt-get install -y gnupg2 44 | - gpg --batch --decrypt --output ${GOOGLE_PUBLISH_JSON} --passphrase ${GOOGLE_ACCOUNT_DECRYPTION_KEY} ${GOOGLE_PUBLISH_JSON}.gpg 45 | - gpg --batch --decrypt --output ${GENIUS_API_TOKEN_TXT} --passphrase ${GENIUS_TOKEN_DECRYPTION_KEY} ${GENIUS_API_TOKEN_TXT}.gpg 46 | - yes | sdkmanager "platforms;android-${ANDROID_COMPILE_SDK}" 47 | - yes | sdkmanager "platform-tools" 48 | - yes | sdkmanager "build-tools;${ANDROID_BUILD_TOOLS}" 49 | - yes | sdkmanager "extras;android;m2repository" 50 | - yes | sdkmanager "extras;google;m2repository" 51 | 52 | script: 53 | - "./gradlew assembleRelease" 54 | 55 | deploy: 56 | - provider: releases 57 | api_key: "${GITHUB_PUBLISH_OAUTH_TOKEN}" 58 | file: app/build/build/outputs/apk/release/app-release.apk 59 | skip_cleanup: true 60 | on: 61 | tags: true 62 | - provider: script 63 | script: ./gradlew app:publishApkRelease 64 | skip_cleanup: true 65 | on: 66 | tags: true 67 | -------------------------------------------------------------------------------- /app/src/main/res/layout/activity_lyrics_show.xml: -------------------------------------------------------------------------------- 1 | 2 | 11 | 12 | 18 | 19 | 25 | 26 | 34 | 35 | 36 | 37 | 41 | 42 |