[JAVA] Êtes-vous toujours épuisé par la recherche d'exemples de vidéos? Un bouton pour envoyer des vidéos FANZA à Slack lorsque vous appuyez dessus.

Aperçu

Objectif

Cible

Tel.

Hypothèses (environnement, etc.)

Code source

https://github.com/yu-suke-dev/fanza-bot

Créer un projet

Installation du plug-in

Démarrez le projet

La hiérarchie du projet ressemble à ceci:

[sample]
   ├── HelloWorldFunction
   │   ├── build.gradle
   │   ├── gradle
   │   │   └── wrapper
   │   │       ├── gradle-wrapper.jar
   │   │       └── gradle-wrapper.properties
   │   ├── gradlew
   │   ├── gradlew.bat
   │   └── src
   │       ├── main
   │       │   └── java
   │       │       └── helloworld
   │       │           ├── App.java
   │       │           └── GatewayResponse.java
   │       └── test
   │           └── java
   │               └── helloworld
   │                   └── AppTest.java
   ├── README.md
   ├── sample.iml
   └── template.yaml

Remplacez par Kotlin.

build.gradle


plugins {
    id 'org.jetbrains.kotlin.jvm' version '1.3.40'
}

apply plugin: 'kotlin'

repositories {
    mavenCentral()
}

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

jar {
    manifest {
        attributes('Main-Class': 'fanza.App')
    }
    from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } }
}

dependencies {
    compile "com.amazonaws:aws-lambda-java-core:1.2.0"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:1.3.40"
    compile "com.squareup.okhttp3:okhttp:3.9.0"
    compile "org.json:json:20180813"
    testCompile "junit:junit:4.12"
}
[src]
  ├── main
  │   └── kotlin
  │       └── fanza
  │           └── App.java
  └── test
  │   └── java
  │       └── fanza
  │           └── AppTest.java

App.kt


package fanza

import com.amazonaws.services.lambda.runtime.Context
import com.amazonaws.services.lambda.runtime.RequestHandler
import okhttp3.MediaType
import okhttp3.OkHttpClient
import okhttp3.Request
import okhttp3.RequestBody
import org.json.JSONObject
import java.io.IOException

/**
 * Handler for requests to Lambda function.
 */
class App : RequestHandler<Any, Any> {

    /**
     * called method
     */
    override fun handleRequest(input: Any, context: Context): Any {

        try {
            //ID requis pour l'API fanza
            var fanzaApiId = System.getenv("FANZA_API_ID")
            var affiliateId = System.getenv("FANZA_AFFILIATE_ID")

            //Créez l'URL que vous souhaitez rechercher
            val fanzaUrl: String = "https://api.dmm.com/affiliate/v3/ItemList"
                    .plus("?api_id=$fanzaApiId")
                    .plus("&affiliate_id=$affiliateId")
                    .plus("&site=FANZA&service=digital&floor=videoa")
                    .plus("&hits=20&sort=date&keyword=amateur&output=json")

            //ACCÉDER À FANZA
            val fanzaInfo = get(fanzaUrl).replace("\\", "")

            //Expression régulière de la partie que vous souhaitez extraire
            val regex = Regex("https://www.dmm.co.jp/litevideo/-/part/=/cid=[a-z]{3,5}[0-9]{3,5}/size=720_480/")

            //Extrayez-en un au hasard des résultats extraits
            val result: String = regex.findAll(fanzaInfo)
                    .map { it.value }
                    .toList()
                    .random()

            //URL du Webhook Slack
            var slackUrl: String = System.getenv("SLACK_URL")

            //Quoi envoyer à Slack
            var slackJson = JSONObject()
            slackJson.put("channel", "#fanza")
            slackJson.put("username", "fanza-bot")
            slackJson.put("text", result)
            slackJson.put("icon_emoji", ":womens:")

            //post envoyer
            post(slackUrl, slackJson.toString())

            return "Success"

        } catch (e: IOException) {
            return RuntimeException(e)
        }
    }

    /**
     * get
     */
    @Throws(IOException::class)
    operator fun get(url: String): String {
        val request = Request.Builder()
                .url(url)
                .header("Content-Type", "application/json")
                .addHeader("X-Custom-Header", "application/json")
                .build()
        val client = OkHttpClient.Builder().build()
        val response = client.newCall(request).execute()
        return response.body()!!.string()
    }

    /**
     * post
     */
    @Throws(IOException::class)
    fun post(url: String, json: String): String {
        val body = RequestBody
                .create(MediaType.parse("application/json; charset=utf-8"), json)
        val request = Request.Builder()
                .url(url)
                .put(body)
                .build()
        val client = OkHttpClient()
        return client.newCall(request).execute().body()!!.string()
    }
}

Définition des variables d'environnement

runtime local-app env

Contrôle de fonctionnement

Résultat d'exécution

Créer un fichier Jar

gradle jar

Transférer vers Lambda

Lier AWS IoT Button et AWS Lambda

Résultat d'exécution

Appuie sur le bouton. (Pochi)

Résumé

Article référencé (Merci)

Recommended Posts

Êtes-vous toujours épuisé par la recherche d'exemples de vidéos? Un bouton pour envoyer des vidéos FANZA à Slack lorsque vous appuyez dessus.
Êtes-vous toujours épuisé par la recherche d'exemples de vidéos? Un bouton pour envoyer des vidéos FANZA à Slack lorsque vous appuyez dessus.
Présentez docker à l'application que vous créez
Utilisez-vous correctement la méthode par défaut de l'interface?
Êtes-vous toujours épuisé par la mise en œuvre de la fonction de recherche? Gem'ransack 'qui peut être implémenté en un instant
Comment effectuer un processus spécifique lorsque le bouton de retour est enfoncé dans le fragment Android
Lorsque vous recevez un appel, envoyez un SMS à ce numéro