Added redemptions & redeemable actions. Fixed a few bugs.
This commit is contained in:
126
data/tts.ts
126
data/tts.ts
@@ -1,126 +1,4 @@
|
||||
let voices_data = [
|
||||
{
|
||||
value: "1",
|
||||
label: "Brian",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "2",
|
||||
label: "Amy",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "3",
|
||||
label: "Emma",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "4",
|
||||
label: "Geraint",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "5",
|
||||
label: "Russel",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "6",
|
||||
label: "Nicole",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "7",
|
||||
label: "Joey",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "8",
|
||||
label: "Justin",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "9",
|
||||
label: "Matthew",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "10",
|
||||
label: "Ivy",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "11",
|
||||
label: "Joanna",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "12",
|
||||
label: "Kendra",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "13",
|
||||
label: "Kimberly",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "14",
|
||||
label: "Salli",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "15",
|
||||
label: "Raveena",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "16",
|
||||
label: "Carter",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "17",
|
||||
label: "Paul",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "18",
|
||||
label: "Evelyn",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "19",
|
||||
label: "Liam",
|
||||
gender: "Male",
|
||||
language: "en"
|
||||
},
|
||||
{
|
||||
value: "20",
|
||||
label: "Jasmine",
|
||||
gender: "Female",
|
||||
language: "en"
|
||||
},
|
||||
]
|
||||
|
||||
const voices = voices_data.sort((a, b) => a.label < b.label ? -1 : a.label > b.label ? 1 : 0)
|
||||
const voices_data = ["Filiz", "Astrid", "Tatyana", "Maxim", "Carmen", "Ines", "Cristiano", "Vitoria", "Ricardo", "Maja", "Jan", "Jacek", "Ewa", "Ruben", "Lotte", "Liv", "Seoyeon", "Takumi", "Mizuki", "Giorgio", "Carla", "Bianca", "Karl", "Dora", "Mathieu", "Celine", "Chantal", "Penelope", "Miguel", "Mia", "Enrique", "Conchita", "Geraint", "Salli", "Matthew", "Kimberly", "Kendra", "Justin", "Joey", "Joanna", "Ivy", "Raveena", "Aditi", "Emma", "Brian", "Amy", "Russell", "Nicole", "Vicki", "Marlene", "Hans", "Naja", "Mads", "Gwyneth", "Zhiyu", "es-ES-Standard-A", "it-IT-Standard-A", "it-IT-Wavenet-A", "ja-JP-Standard-A", "ja-JP-Wavenet-A", "ko-KR-Standard-A", "ko-KR-Wavenet-A", "pt-BR-Standard-A", "tr-TR-Standard-A", "sv-SE-Standard-A", "nl-NL-Standard-A", "nl-NL-Wavenet-A", "en-US-Wavenet-A", "en-US-Wavenet-B", "en-US-Wavenet-C", "en-US-Wavenet-D", "en-US-Wavenet-E", "en-US-Wavenet-F", "en-GB-Standard-A", "en-GB-Standard-B", "en-GB-Standard-C", "en-GB-Standard-D", "en-GB-Wavenet-A", "en-GB-Wavenet-B", "en-GB-Wavenet-C", "en-GB-Wavenet-D", "en-US-Standard-B", "en-US-Standard-C", "en-US-Standard-D", "en-US-Standard-E", "de-DE-Standard-A", "de-DE-Standard-B", "de-DE-Wavenet-A", "de-DE-Wavenet-B", "de-DE-Wavenet-C", "de-DE-Wavenet-D", "en-AU-Standard-A", "en-AU-Standard-B", "en-AU-Wavenet-A", "en-AU-Wavenet-B", "en-AU-Wavenet-C", "en-AU-Wavenet-D", "en-AU-Standard-C", "en-AU-Standard-D", "fr-CA-Standard-A", "fr-CA-Standard-B", "fr-CA-Standard-C", "fr-CA-Standard-D", "fr-FR-Standard-C", "fr-FR-Standard-D", "fr-FR-Wavenet-A", "fr-FR-Wavenet-B", "fr-FR-Wavenet-C", "fr-FR-Wavenet-D", "da-DK-Wavenet-A", "pl-PL-Wavenet-A", "pl-PL-Wavenet-B", "pl-PL-Wavenet-C", "pl-PL-Wavenet-D", "pt-PT-Wavenet-A", "pt-PT-Wavenet-B", "pt-PT-Wavenet-C", "pt-PT-Wavenet-D", "ru-RU-Wavenet-A", "ru-RU-Wavenet-B", "ru-RU-Wavenet-C", "ru-RU-Wavenet-D", "sk-SK-Wavenet-A", "tr-TR-Wavenet-A", "tr-TR-Wavenet-B", "tr-TR-Wavenet-C", "tr-TR-Wavenet-D", "tr-TR-Wavenet-E", "uk-UA-Wavenet-A", "ar-XA-Wavenet-A", "ar-XA-Wavenet-B", "ar-XA-Wavenet-C", "cs-CZ-Wavenet-A", "nl-NL-Wavenet-B", "nl-NL-Wavenet-C", "nl-NL-Wavenet-D", "nl-NL-Wavenet-E", "en-IN-Wavenet-A", "en-IN-Wavenet-B", "en-IN-Wavenet-C", "fil-PH-Wavenet-A", "fi-FI-Wavenet-A", "el-GR-Wavenet-A", "hi-IN-Wavenet-A", "hi-IN-Wavenet-B", "hi-IN-Wavenet-C", "hu-HU-Wavenet-A", "id-ID-Wavenet-A", "id-ID-Wavenet-B", "id-ID-Wavenet-C", "it-IT-Wavenet-B", "it-IT-Wavenet-C", "it-IT-Wavenet-D", "ja-JP-Wavenet-B", "ja-JP-Wavenet-C", "ja-JP-Wavenet-D", "cmn-CN-Wavenet-A", "cmn-CN-Wavenet-B", "cmn-CN-Wavenet-C", "cmn-CN-Wavenet-D", "nb-no-Wavenet-E", "nb-no-Wavenet-A", "nb-no-Wavenet-B", "nb-no-Wavenet-C", "nb-no-Wavenet-D", "vi-VN-Wavenet-A", "vi-VN-Wavenet-B", "vi-VN-Wavenet-C", "vi-VN-Wavenet-D", "sr-rs-Standard-A", "lv-lv-Standard-A", "is-is-Standard-A", "bg-bg-Standard-A", "af-ZA-Standard-A", "Tracy", "Danny", "Huihui", "Yaoyao", "Kangkang", "HanHan", "Zhiwei", "Asaf", "An", "Stefanos", "Filip", "Ivan", "Heidi", "Herena", "Kalpana", "Hemant", "Matej", "Andika", "Rizwan", "Lado", "Valluvar", "Linda", "Heather", "Sean", "Michael", "Karsten", "Guillaume", "Pattara", "Jakub", "Szabolcs", "Hoda", "Naayf"]
|
||||
const voices = voices_data.filter(v => !v.includes("-")).sort()
|
||||
|
||||
export default voices
|
72
data/twitch-reauthorize.ts
Normal file
72
data/twitch-reauthorize.ts
Normal file
@@ -0,0 +1,72 @@
|
||||
import axios from 'axios'
|
||||
import { db } from "@/lib/db"
|
||||
|
||||
export async function updateTwitchToken(userId: string) {
|
||||
const connection = await db.twitchConnection.findFirst({
|
||||
where: {
|
||||
userId: userId
|
||||
}
|
||||
})
|
||||
if (!connection) {
|
||||
return null
|
||||
}
|
||||
|
||||
try {
|
||||
const { expires_in }: { client_id: string, login: string, scopes: string[], user_id: string, expires_in: number } = (await axios.get("https://id.twitch.tv/oauth2/validate", {
|
||||
headers: {
|
||||
Authorization: 'OAuth ' + connection.accessToken
|
||||
}
|
||||
})).data;
|
||||
|
||||
if (expires_in > 3600) {
|
||||
let data = await db.twitchConnection.findFirst({
|
||||
where: {
|
||||
userId: userId
|
||||
}
|
||||
})
|
||||
|
||||
let dataFormatted = {
|
||||
user_id: userId,
|
||||
access_token: data?.accessToken,
|
||||
refresh_token: data?.refreshToken,
|
||||
broadcaster_id: connection.broadcasterId
|
||||
}
|
||||
return dataFormatted
|
||||
}
|
||||
} catch (error) {
|
||||
}
|
||||
|
||||
// Post to https://id.twitch.tv/oauth2/token
|
||||
const token: { access_token: string, expires_in: number, refresh_token: string, token_type: string, scope: string[] } = (await axios.post("https://id.twitch.tv/oauth2/token", {
|
||||
client_id: process.env.TWITCH_BOT_CLIENT_ID,
|
||||
client_secret: process.env.TWITCH_BOT_CLIENT_SECRET,
|
||||
grant_type: "refresh_token",
|
||||
refresh_token: connection.refreshToken
|
||||
})).data
|
||||
|
||||
// Fetch values from token.
|
||||
const { access_token, expires_in, refresh_token, token_type } = token
|
||||
|
||||
if (!access_token || !refresh_token || token_type !== "bearer") {
|
||||
return null
|
||||
}
|
||||
|
||||
await db.twitchConnection.update({
|
||||
where: {
|
||||
userId: userId
|
||||
},
|
||||
data: {
|
||||
accessToken: access_token,
|
||||
refreshToken: refresh_token
|
||||
}
|
||||
})
|
||||
|
||||
const data = {
|
||||
user_id: userId,
|
||||
access_token,
|
||||
refresh_token,
|
||||
broadcaster_id: connection.broadcasterId
|
||||
}
|
||||
|
||||
return data
|
||||
}
|
Reference in New Issue
Block a user