diff --git a/README.md b/README.md index 8a37714..1c4fa23 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,8 @@ pip install -r requirements-dev.txt python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())' # Rename .env.example to .env and fill in the required values. -# DISCORD_WEBHOOK_URL and EMAIL_* can be left empty. +# Only DJANGO_SECRET_KEY is required to run the server. +# EMAIL_HOST_USER, EMAIL_HOST_PASSWORD and DISCORD_WEBHOOK_URL can be left empty if not needed. mv .env.example .env # Run the migrations. diff --git a/core/admin.py b/core/admin.py index 9cef8ca..10b9200 100644 --- a/core/admin.py +++ b/core/admin.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from django.contrib import admin from core.models import Benefit, DropCampaign, Game, Owner, TimeBasedDrop diff --git a/core/apps.py b/core/apps.py index e9830d1..258ccb2 100644 --- a/core/apps.py +++ b/core/apps.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from django.apps import AppConfig diff --git a/core/import_json.py b/core/import_json.py new file mode 100644 index 0000000..aa57c78 --- /dev/null +++ b/core/import_json.py @@ -0,0 +1,11 @@ +from __future__ import annotations + +from typing import Any + + +def import_data_from_view(data: dict[str, Any]) -> None: + """Import data that are sent from Twitch Drop Miner. + + Args: + data (dict[str, Any]): The data to import. + """ diff --git a/core/migrations/0001_initial.py b/core/migrations/0001_initial.py new file mode 100644 index 0000000..938523c --- /dev/null +++ b/core/migrations/0001_initial.py @@ -0,0 +1,420 @@ +# Generated by Django 5.1.4 on 2024-12-11 04:58 +from __future__ import annotations + +from typing import TYPE_CHECKING + +import auto_prefetch +import django.contrib.auth.models +import django.contrib.auth.validators +import django.db.models.deletion +import django.db.models.manager +import django.utils.timezone +from django.db import migrations, models + +if TYPE_CHECKING: + from django.db.migrations.operations.base import Operation + + +class Migration(migrations.Migration): + """Initial migration for the core app. + + This add the following models: + - ScrapedJson + - User + - Owner + - Game + - DropCampaign + - TimeBasedDrop + - Benefit + """ + + initial = True + + dependencies: list[tuple[str, str]] = [ + ("auth", "0012_alter_user_first_name_max_length"), + ] + + operations: list[Operation] = [ + migrations.CreateModel( + name="ScrapedJson", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("json_data", models.JSONField(help_text="The JSON data from the Twitch API.", unique=True)), + ("created_at", models.DateTimeField(auto_now_add=True)), + ("modified_at", models.DateTimeField(auto_now=True)), + ("imported_at", models.DateTimeField(null=True)), + ], + options={ + "ordering": ["-created_at"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name="User", + fields=[ + ("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")), + ("password", models.CharField(max_length=128, verbose_name="password")), + ("last_login", models.DateTimeField(blank=True, null=True, verbose_name="last login")), + ( + "is_superuser", + models.BooleanField( + default=False, + help_text="Designates that this user has all permissions without explicitly assigning them.", + verbose_name="superuser status", + ), + ), + ( + "username", + models.CharField( + error_messages={"unique": "A user with that username already exists."}, + help_text="Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.", + max_length=150, + unique=True, + validators=[django.contrib.auth.validators.UnicodeUsernameValidator()], + verbose_name="username", + ), + ), + ("first_name", models.CharField(blank=True, max_length=150, verbose_name="first name")), + ("last_name", models.CharField(blank=True, max_length=150, verbose_name="last name")), + ("email", models.EmailField(blank=True, max_length=254, verbose_name="email address")), + ( + "is_staff", + models.BooleanField( + default=False, + help_text="Designates whether the user can log into this admin site.", + verbose_name="staff status", + ), + ), + ( + "is_active", + models.BooleanField( + default=True, + help_text=( + "Designates whether this user should be treated as active. Unselect this instead of" + " deleting accounts." + ), + verbose_name="active", + ), + ), + ("date_joined", models.DateTimeField(default=django.utils.timezone.now, verbose_name="date joined")), + ( + "groups", + models.ManyToManyField( + blank=True, + help_text=( + "The groups this user belongs to. A user will get all permissions granted to each of their" + " groups." + ), + related_name="user_set", + related_query_name="user", + to="auth.group", + verbose_name="groups", + ), + ), + ( + "user_permissions", + models.ManyToManyField( + blank=True, + help_text="Specific permissions for this user.", + related_name="user_set", + related_query_name="user", + to="auth.permission", + verbose_name="user permissions", + ), + ), + ], + options={ + "ordering": ["username"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.contrib.auth.models.UserManager()), + ], + ), + migrations.CreateModel( + name="Owner", + fields=[ + ("created_at", models.DateTimeField(auto_created=True)), + ( + "twitch_id", + models.TextField(help_text="The Twitch ID of the owner.", primary_key=True, serialize=False), + ), + ("modified_at", models.DateTimeField(auto_now=True)), + ("name", models.TextField(blank=True, help_text="The name of the owner.")), + ], + options={ + "ordering": ["name"], + "abstract": False, + "base_manager_name": "prefetch_manager", + "indexes": [ + models.Index(fields=["name"], name="owner_name_idx"), + models.Index(fields=["created_at"], name="owner_created_at_idx"), + ], + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name="Game", + fields=[ + ( + "created_at", + models.DateTimeField(auto_created=True, help_text="When the game was first added to the database."), + ), + ( + "twitch_id", + models.TextField(help_text="The Twitch ID of the game.", primary_key=True, serialize=False), + ), + ("modified_at", models.DateTimeField(auto_now=True, help_text="When the game was last modified.")), + ("game_url", models.URLField(blank=True, help_text="The URL to the game on Twitch.")), + ("display_name", models.TextField(blank=True, help_text="The display name of the game.")), + ("name", models.TextField(blank=True, help_text="The name of the game.")), + ("box_art_url", models.URLField(blank=True, help_text="URL to the box art of the game.")), + ("slug", models.TextField(blank=True)), + ( + "org", + auto_prefetch.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="games", + to="core.owner", + ), + ), + ], + options={ + "ordering": ["display_name"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name="DropCampaign", + fields=[ + ( + "created_at", + models.DateTimeField( + auto_created=True, + help_text="When the drop campaign was first added to the database.", + ), + ), + ( + "twitch_id", + models.TextField( + help_text="The Twitch ID of the drop campaign.", + primary_key=True, + serialize=False, + ), + ), + ( + "modified_at", + models.DateTimeField(auto_now=True, help_text="When the drop campaign was last modified."), + ), + ( + "account_link_url", + models.URLField(blank=True, help_text="The URL to link accounts for the drop campaign."), + ), + ("description", models.TextField(blank=True, help_text="The description of the drop campaign.")), + ("details_url", models.URLField(blank=True, help_text="The URL to the details of the drop campaign.")), + ("ends_at", models.DateTimeField(help_text="When the drop campaign ends.", null=True)), + ("starts_at", models.DateTimeField(help_text="When the drop campaign starts.", null=True)), + ("image_url", models.URLField(blank=True, help_text="The URL to the image for the drop campaign.")), + ("name", models.TextField(blank=True, help_text="The name of the drop campaign.")), + ("status", models.TextField(blank=True, help_text="The status of the drop campaign.")), + ( + "game", + auto_prefetch.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="drop_campaigns", + to="core.game", + ), + ), + ( + "scraped_json", + auto_prefetch.ForeignKey( + help_text="Reference to the JSON data from the Twitch API.", + null=True, + on_delete=django.db.models.deletion.SET_NULL, + to="core.scrapedjson", + ), + ), + ], + options={ + "ordering": ["ends_at"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name="TimeBasedDrop", + fields=[ + ( + "created_at", + models.DateTimeField(auto_created=True, help_text="When the drop was first added to the database."), + ), + ( + "twitch_id", + models.TextField(help_text="The Twitch ID of the drop.", primary_key=True, serialize=False), + ), + ("modified_at", models.DateTimeField(auto_now=True, help_text="When the drop was last modified.")), + ( + "required_subs", + models.PositiveBigIntegerField(help_text="The number of subs required for the drop.", null=True), + ), + ("ends_at", models.DateTimeField(help_text="When the drop ends.", null=True)), + ("name", models.TextField(blank=True, help_text="The name of the drop.")), + ( + "required_minutes_watched", + models.PositiveBigIntegerField(help_text="The number of minutes watched required.", null=True), + ), + ("starts_at", models.DateTimeField(help_text="When the drop starts.", null=True)), + ( + "drop_campaign", + auto_prefetch.ForeignKey( + help_text="The drop campaign this drop is part of.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="drops", + to="core.dropcampaign", + ), + ), + ], + options={ + "ordering": ["required_minutes_watched"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.CreateModel( + name="Benefit", + fields=[ + ("created_at", models.DateTimeField(auto_created=True, null=True)), + ("twitch_id", models.TextField(primary_key=True, serialize=False)), + ("modified_at", models.DateTimeField(auto_now=True)), + ( + "twitch_created_at", + models.DateTimeField(help_text="When the benefit was created on Twitch.", null=True), + ), + ( + "entitlement_limit", + models.PositiveBigIntegerField( + help_text="The number of times the benefit can be claimed.", + null=True, + ), + ), + ("image_asset_url", models.URLField(blank=True, help_text="The URL to the image for the benefit.")), + ("is_ios_available", models.BooleanField(help_text="If the benefit is farmable on iOS.", null=True)), + ("name", models.TextField(blank=True, help_text="The name of the benefit.")), + ("distribution_type", models.TextField(blank=True, help_text="The distribution type of the benefit.")), + ( + "game", + auto_prefetch.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="benefits", + to="core.game", + ), + ), + ( + "owner_organization", + auto_prefetch.ForeignKey( + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="benefits", + to="core.owner", + ), + ), + ( + "time_based_drop", + auto_prefetch.ForeignKey( + help_text="The time based drop this benefit is for.", + null=True, + on_delete=django.db.models.deletion.CASCADE, + related_name="benefits", + to="core.timebaseddrop", + ), + ), + ], + options={ + "ordering": ["-twitch_created_at"], + "abstract": False, + "base_manager_name": "prefetch_manager", + }, + managers=[ + ("objects", django.db.models.manager.Manager()), + ("prefetch_manager", django.db.models.manager.Manager()), + ], + ), + migrations.AddIndex( + model_name="game", + index=models.Index(fields=["display_name"], name="game_display_name_idx"), + ), + migrations.AddIndex( + model_name="game", + index=models.Index(fields=["name"], name="game_name_idx"), + ), + migrations.AddIndex( + model_name="game", + index=models.Index(fields=["created_at"], name="game_created_at_idx"), + ), + migrations.AddIndex( + model_name="dropcampaign", + index=models.Index(fields=["name"], name="drop_campaign_name_idx"), + ), + migrations.AddIndex( + model_name="dropcampaign", + index=models.Index(fields=["starts_at"], name="drop_campaign_starts_at_idx"), + ), + migrations.AddIndex( + model_name="dropcampaign", + index=models.Index(fields=["ends_at"], name="drop_campaign_ends_at_idx"), + ), + migrations.AddIndex( + model_name="timebaseddrop", + index=models.Index(fields=["name"], name="time_based_drop_name_idx"), + ), + migrations.AddIndex( + model_name="timebaseddrop", + index=models.Index(fields=["starts_at"], name="time_based_drop_starts_at_idx"), + ), + migrations.AddIndex( + model_name="timebaseddrop", + index=models.Index(fields=["ends_at"], name="time_based_drop_ends_at_idx"), + ), + migrations.AddIndex( + model_name="benefit", + index=models.Index(fields=["name"], name="benefit_name_idx"), + ), + migrations.AddIndex( + model_name="benefit", + index=models.Index(fields=["twitch_created_at"], name="benefit_twitch_created_at_idx"), + ), + migrations.AddIndex( + model_name="benefit", + index=models.Index(fields=["created_at"], name="benefit_created_at_idx"), + ), + migrations.AddIndex( + model_name="benefit", + index=models.Index(fields=["is_ios_available"], name="benefit_is_ios_available_idx"), + ), + ] diff --git a/core/models_utils.py b/core/models_utils.py index 7fffd7f..099fe9a 100644 --- a/core/models_utils.py +++ b/core/models_utils.py @@ -1,8 +1,11 @@ +from __future__ import annotations + import logging from datetime import datetime -from typing import Any +from typing import TYPE_CHECKING, Any -from django.db import models +if TYPE_CHECKING: + from django.db import models logger: logging.Logger = logging.getLogger(__name__) diff --git a/core/settings.py b/core/settings.py index 2994fd4..284eced 100644 --- a/core/settings.py +++ b/core/settings.py @@ -1,3 +1,5 @@ +from __future__ import annotations + import os from pathlib import Path from typing import Literal diff --git a/core/templatetags/custom_filters.py b/core/templatetags/custom_filters.py index e04169b..4d97827 100644 --- a/core/templatetags/custom_filters.py +++ b/core/templatetags/custom_filters.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from django import template register = template.Library() diff --git a/core/templatetags/time_filters.py b/core/templatetags/time_filters.py index b655039..0dafcbc 100644 --- a/core/templatetags/time_filters.py +++ b/core/templatetags/time_filters.py @@ -1,3 +1,5 @@ +from __future__ import annotations + from django import template register = template.Library() diff --git a/core/tests/response.json b/core/tests/response.json new file mode 100644 index 0000000..dec7587 --- /dev/null +++ b/core/tests/response.json @@ -0,0 +1,7396 @@ +[ + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "5b5816c8-a533-11ef-9266-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://rewards.pokemon.com/", + "description": "Earn a Surging Sparks Elite Trainer Box in Pok\u00e9mon Trading Card Game Live by tuning in to any channel streaming to the Pok\u00e9mon Trading Card Game Live category for 45 minutes. Redeem by December 15, 7:59 UTC. FAQ: pkmn.news/PokemonDrops", + "detailsURL": "https://rewards.pokemon.com/", + "endAt": "2024-12-14T07:58:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "155409827", + "slug": "pokemon-trading-card-game-live", + "displayName": "Pok\u00e9mon Trading Card Game Live", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/ba5242a9-4dec-48ee-a51d-8c4cef284b65.png", + "name": "Surging Sparks Drops", + "owner": { + "id": "36c4e21d-bdf3-410c-97c3-5a5a4bf1399b", + "name": "The Pok\u00e9mon Company", + "__typename": "Organization" + }, + "startAt": "2024-11-18T08:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "d67d1ca0-a533-11ef-a6ec-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "ea74f727-a52f-11ef-811f-0a58a9feac02", + "createdAt": "2024-11-17T22:04:28.735Z", + "entitlementLimit": 1, + "game": { + "id": "155409827", + "name": "Pok\u00e9mon Trading Card Game Live", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/a6fba16a-44ff-40a6-bec9-447523af31b6.png", + "isIosAvailable": false, + "name": "Surging Sparks ETB", + "ownerOrganization": { + "id": "36c4e21d-bdf3-410c-97c3-5a5a4bf1399b", + "name": "The Pok\u00e9mon Company", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-14T07:58:59.999Z", + "name": "Surging Sparks ETB", + "preconditionDrops": null, + "requiredMinutesWatched": 45, + "startAt": "2024-11-18T08:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "930fcc81-b111-11ef-a322-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://www.pathofexile.com/my-account/twitch", + "description": "Celebrate Path of Exile 2 going into Early Access with us! Watch time earns the Energising Bolt Flask Effect and Halo of the Righteous Helmet Attachment. Gifting subs will earn Chimera Pet!", + "detailsURL": "https://www.pathofexile.com/twitchdrops", + "endAt": "2024-12-14T07:59:59.996Z", + "eventBasedDrops": [], + "game": { + "id": "1702520304", + "slug": "path-of-exile-2", + "displayName": "Path of Exile 2", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/cf2c1ea0-5a36-4386-9a4d-99a06f60b9f2.png", + "name": "PoE2 Early Access", + "owner": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad", + "name": "Grinding Gear Games", + "__typename": "Organization" + }, + "startAt": "2024-12-06T19:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "bd663e10-b297-11ef-a6a3-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad_CUSTOM_ID_EnergisingBoltFlaskEffect", + "createdAt": "2024-12-04T23:25:50.995Z", + "entitlementLimit": 1, + "game": { + "id": "1702520304", + "name": "Path of Exile 2", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/d70e4e75-7237-4730-9a10-b6016aaaa795.png", + "isIosAvailable": false, + "name": "Energising Bolt Flask", + "ownerOrganization": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad", + "name": "Grinding Gear Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad_CUSTOM_ID_HaloOfTheRighteousHelmetAttachment", + "createdAt": "2024-12-04T23:25:04.483Z", + "entitlementLimit": 1, + "game": { + "id": "1702520304", + "name": "Path of Exile 2", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/9a4c6f77-b965-482a-84e6-fdfe514e26c3.png", + "isIosAvailable": false, + "name": "Halo Of The Righteous", + "ownerOrganization": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad", + "name": "Grinding Gear Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-14T07:59:59.996Z", + "name": "Early Access Bundle", + "preconditionDrops": null, + "requiredMinutesWatched": 180, + "startAt": "2024-12-06T19:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "dbf9a735-b2a8-11ef-a6a3-0a58a9feac02", + "requiredSubs": 2, + "benefitEdges": [ + { + "benefit": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad_CUSTOM_ID_ChimeraPet", + "createdAt": "2024-12-04T23:23:29.279Z", + "entitlementLimit": 1, + "game": { + "id": "1702520304", + "name": "Path of Exile 2", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/56b8503e-d07e-4748-8093-eb4ef57d4140.png", + "isIosAvailable": false, + "name": "Chimera Pet", + "ownerOrganization": { + "id": "f751ba67-7c8b-4c41-b6df-bcea0914f3ad", + "name": "Grinding Gear Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-14T07:59:59.996Z", + "name": "Chimera Pet", + "preconditionDrops": null, + "requiredMinutesWatched": 0, + "startAt": "2024-12-06T19:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "48c096a7-a198-11ef-8043-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://www.strinova.com/profile?media=TC&media_code=OBTWWTDC", + "description": "Greetings, Navigator!\nTo mark the official launch of Strinova, we're bringing you an exclusive Twitch Drops event! From November 22 at 12:00 a.m. (UTC) to December 15 at 3:59 p.m. (UTC), tune into any Strinova stream on Twitch.tv to earn Bablo Crystal and more rewards.", + "detailsURL": "https://www.strinova.com/news/zRi8Bu9FYB0wWd4wRMxyKw?media=TC&media_code=OBTWWTD", + "endAt": "2024-12-15T15:58:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "1515015750", + "slug": "strinova", + "displayName": "Strinova", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/8b8cb479-f69f-469e-9507-7ce438382b26.jpeg", + "name": "Official Launch Drops", + "owner": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "startAt": "2024-11-22T00:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "30009a67-a586-11ef-85f0-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c_CUSTOM_ID_10213_1", + "createdAt": "2024-11-13T07:48:30.415Z", + "entitlementLimit": 1, + "game": { + "id": "1515015750", + "name": "Strinova", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/650fe434-55e7-473b-994a-ed590caf643f.png", + "isIosAvailable": false, + "name": "EXP Bonus Card: 5-Win", + "ownerOrganization": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T15:58:59.999Z", + "name": "EXP Bonus Card: 5-Win", + "preconditionDrops": null, + "requiredMinutesWatched": 30, + "startAt": "2024-11-22T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "3ca05711-a586-11ef-94a9-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c_CUSTOM_ID_60000076_1", + "createdAt": "2024-11-13T07:51:40.298Z", + "entitlementLimit": 1, + "game": { + "id": "1515015750", + "name": "Strinova", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/cec4a5d3-ca9b-43ea-8651-7f1de53006f1.png", + "isIosAvailable": false, + "name": "Emote: Bai Mo - New Buddy", + "ownerOrganization": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T15:58:59.999Z", + "name": "Bai Mo - New Buddy", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-22T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "3fe6ee81-a199-11ef-9a3c-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c_CUSTOM_ID_2_600", + "createdAt": "2024-11-13T07:37:57.129Z", + "entitlementLimit": 1, + "game": { + "id": "1515015750", + "name": "Strinova", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/5a4185c3-fe33-48d7-bc75-5d548aebac98.png", + "isIosAvailable": false, + "name": "Dream Token x600", + "ownerOrganization": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T15:58:59.999Z", + "name": "Dream Token*600", + "preconditionDrops": null, + "requiredMinutesWatched": 15, + "startAt": "2024-11-22T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "4a3430e4-a586-11ef-85a0-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c_CUSTOM_ID_25011_1", + "createdAt": "2024-11-13T07:47:19.145Z", + "entitlementLimit": 1, + "game": { + "id": "1515015750", + "name": "Strinova", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/9a37abc7-dca9-487a-a887-3862a4966dde.png", + "isIosAvailable": false, + "name": "Weapon Skin Selection Box", + "ownerOrganization": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T15:58:59.999Z", + "name": "Weapon Skin Selection Gift Box", + "preconditionDrops": null, + "requiredMinutesWatched": 90, + "startAt": "2024-11-22T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "6da76831-a586-11ef-b4a5-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c_CUSTOM_ID_21015_1", + "createdAt": "2024-11-13T07:49:52.982Z", + "entitlementLimit": 1, + "game": { + "id": "1515015750", + "name": "Strinova", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/b0706ffe-fd6b-4f75-94af-3791a4065fe0.png", + "isIosAvailable": false, + "name": "Bablo Crystal Box x1", + "ownerOrganization": { + "id": "f42efb4d-150e-4989-bd12-daf51b853c4c", + "name": "iDreamSky", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T15:58:59.999Z", + "name": "Bablo Crystal Box x1 Chance to earn 888 Bablo Crystals", + "preconditionDrops": null, + "requiredMinutesWatched": 120, + "startAt": "2024-11-22T00:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "85d966ab-b0d3-11ef-9429-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "629037015", + "displayName": "KAKELEMMORPG", + "name": "kakelemmorpg", + "__typename": "Channel" + }, + { + "id": "684142392", + "displayName": "JeanL_XD", + "name": "jeanl_xd", + "__typename": "Channel" + }, + { + "id": "43495944", + "displayName": "BoomerHD", + "name": "boomerhd", + "__typename": "Channel" + }, + { + "id": "132557219", + "displayName": "Macielzeraa_", + "name": "macielzeraa_", + "__typename": "Channel" + }, + { + "id": "546999559", + "displayName": "mage1tv", + "name": "mage1tv", + "__typename": "Channel" + }, + { + "id": "1037340071", + "displayName": "godzintv", + "name": "godzintv", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://id.twitch.tv/oauth2/authorize?client_id=9awx3xtp59477gdaslg318amuimqp8&redirect_uri=https%3A%2F%2Fwww.kakele.io%2Fdrops&response_type=code&scope=user:read:email", + "description": "\ud83c\udfae Announcing Kakele Online's Epic Twitch Drops! Embark on a unique journey in Kakele's realm. Dive into mystical lands, conquer quests, and enjoy our exciting Twitch Drops for enhanced gaming. Unlock rewards, including teleports, herbs, potions, and materials. \ud83d\udd52 Timed Rewards: Enjoy cities Teleports, Ultra potions, Gold Refiner Kits and collect Dog Cards and Trophies. \ud83d\udcb0 Prosperity Path: Gain Copper, Tin, Silver, Iron, Gold, Life Herbs, Mana Herbs for success. Accumulate Reputation Coins. \ud83c\udf88 Grand Finale: End with an exclusive Twitch Drop and Bacon Extravaganza surprise! Link accounts, watch streams, and claim rewards for an unforgettable RPG experience. \ud83c\udf1f How to Join: Link Accounts: Connect your account and Twitch in the game app. Watch Streams: Tune in during to your favorite Kakele streamer. Claim Rewards: Receive Twitch Drop notifications claim in the game app. Influencers: To enable drops on your stream, email us! Don't miss the chance to enrich your journey with Twitch Drops!", + "detailsURL": "https://www.kakele.io/?utm_source=drops", + "endAt": "2024-12-15T17:30:59.996Z", + "eventBasedDrops": [], + "game": { + "id": "902050890", + "slug": "kakele-online-mmorpg", + "displayName": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/c8d92e9c-865a-4e0f-81d5-4e73ba6cf189.png", + "name": "Kakele Online - December", + "owner": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "startAt": "2024-12-03T10:47:28Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "1b6b21e6-b0d4-11ef-af71-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "3af8e6f6-780b-11ee-b0fe-0a58a9feac02", + "createdAt": "2023-10-31T16:33:32.442Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/0740ea50-b39a-4e12-b1da-9d390e560c56.png", + "isIosAvailable": false, + "name": "2 Kebelessa Teleports", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "29498454-780b-11ee-af23-0a58a9feac02", + "createdAt": "2023-10-31T16:33:02.772Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/8a5b234f-eb7e-4dcf-b4e8-fa94931777df.png", + "isIosAvailable": false, + "name": "2 Muroria Teleports", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "0fe71c9e-780b-11ee-8782-0a58a9feac02", + "createdAt": "2023-10-31T16:32:20.184Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/b0a7f648-5793-455c-95f6-386d9f687e61.png", + "isIosAvailable": false, + "name": "2 Kechelada Teleports", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "Traveler Pack", + "preconditionDrops": null, + "requiredMinutesWatched": 120, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "254a6a6d-b0d4-11ef-8da9-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "9dbbda1c-780b-11ee-8782-0a58a9feac02", + "createdAt": "2023-10-31T16:36:18.137Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/54e92edb-3ab0-48d8-b39d-456bad420a05.png", + "isIosAvailable": false, + "name": "30 Supreme Mana Bottles", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "895141c2-780b-11ee-8ad4-0a58a9feac02", + "createdAt": "2023-10-31T16:35:43.884Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/53c591dc-6c1f-4453-92c4-a548f3bd67fb.png", + "isIosAvailable": false, + "name": "15 Ultra Mana Bottles", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "7b4a062f-780b-11ee-8638-0a58a9feac02", + "createdAt": "2023-10-31T16:35:20.348Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/b5f057f0-3ea0-4bc3-a580-c72b266d1a62.png", + "isIosAvailable": false, + "name": "15 Ultra Health Bottles", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "Life Supplies", + "preconditionDrops": null, + "requiredMinutesWatched": 240, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "3151ffc0-b0d4-11ef-813b-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "c5d42cf1-780b-11ee-b083-0a58a9feac02", + "createdAt": "2023-10-31T16:37:25.405Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/40bf2da6-6a63-4077-bce8-17c90df7bc53.png", + "isIosAvailable": false, + "name": "10 Raw Iron", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "db81d4fc-780b-11ee-bf86-0a58a9feac02", + "createdAt": "2023-10-31T16:38:01.775Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/8d5f4723-e87c-4478-9865-c4d5e2748cce.png", + "isIosAvailable": false, + "name": "15 Raw Silver", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "d0969ae7-780b-11ee-84e6-0a58a9feac02", + "createdAt": "2023-10-31T16:37:43.456Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/2fe82985-0ff8-4d1e-af9e-b7f6389345a7.png", + "isIosAvailable": false, + "name": "10 Raw Gold", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "Precious Metals", + "preconditionDrops": null, + "requiredMinutesWatched": 360, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "82f7f27c-b0d4-11ef-8081-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "09f93f35-780c-11ee-bb60-0a58a9feac02", + "createdAt": "2023-10-31T16:39:19.733Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/a5151156-0de7-4119-ad6d-a7c4f059a802.png", + "isIosAvailable": false, + "name": "50 Reputation Coins", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "9fb548de-780c-11ee-b083-0a58a9feac02", + "createdAt": "2023-10-31T16:43:30.946Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/4b541ab7-dde1-487a-b1e9-21b45300d4ad.png", + "isIosAvailable": false, + "name": "Twitch Drop", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "Reputation Coins", + "preconditionDrops": null, + "requiredMinutesWatched": 540, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "92463e13-b0d4-11ef-815c-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "428eed26-780c-11ee-9c9d-0a58a9feac02", + "createdAt": "2023-10-31T16:40:54.666Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/e8bac004-1c92-4cb1-93cf-9fa82009374a.png", + "isIosAvailable": false, + "name": "10 Life Herbs", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "36ee5781-780c-11ee-bddd-0a58a9feac02", + "createdAt": "2023-10-31T16:40:35.159Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/a92e4ffd-aa48-4636-81d0-be3a71c6edac.png", + "isIosAvailable": false, + "name": "10 Mana Herbs", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "29c88721-780c-11ee-a40e-0a58a9feac02", + "createdAt": "2023-10-31T16:40:13.101Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/ccbb9448-e02c-4ee0-a4f0-6a5450ded7e4.png", + "isIosAvailable": false, + "name": "5 Gold Refiner Kits", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "Gold Refiner and Herbalist Kit", + "preconditionDrops": null, + "requiredMinutesWatched": 660, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "bfdc16f5-b0d4-11ef-b052-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "73589c19-b0d6-11ef-b0ce-0a58a9feac02", + "createdAt": "2024-12-02T17:54:17.645Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/dc317dd1-d91a-413c-a71d-332c35b4b6da.png", + "isIosAvailable": false, + "name": "Evil Entity Trophy", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "fc6b0d32-780b-11ee-bf86-0a58a9feac02", + "createdAt": "2023-10-31T16:38:56.991Z", + "entitlementLimit": 1, + "game": { + "id": "902050890", + "name": "Kakele Online: MMORPG", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/5b2cddf0-d4d4-4c8f-a52c-21b9a56c6b95.png", + "isIosAvailable": false, + "name": "50 Kakele Coins (NT)", + "ownerOrganization": { + "id": "392e8b0d-e928-437f-a87d-c8f9eae3f8c7", + "name": "ViVa Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T17:30:59.996Z", + "name": "The Ultimate Drop", + "preconditionDrops": null, + "requiredMinutesWatched": 900, + "startAt": "2024-12-03T10:47:28Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 98, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "27e46235-b09e-11ef-8df3-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://ufl.link/UFLTwitch_Drops", + "description": "Twitch Drops let you earn cool and exclusive rewards just by watching any channel with drops enabled \non Twitch in the UFL category!", + "detailsURL": "https://ufl.link/UFLTwitch_Drops", + "endAt": "2024-12-15T23:59:59.992Z", + "eventBasedDrops": [], + "game": { + "id": "1471416868", + "slug": "ufl", + "displayName": "UFL", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/c5ffb8e8-1364-4a1a-9906-ac7402c31538.png", + "name": "Get your Twitch Drops", + "owner": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a", + "name": "XTEN LIMITED", + "__typename": "Organization" + }, + "startAt": "2024-12-05T00:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "758d7a1f-b09e-11ef-8efe-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a_CUSTOM_ID_42249", + "createdAt": "2024-11-12T17:00:02.687Z", + "entitlementLimit": 1, + "game": { + "id": "1471416868", + "name": "UFL", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/efd49489-0089-4aec-a87c-22070d2f796d.png", + "isIosAvailable": false, + "name": "UFL Drop Pack #1", + "ownerOrganization": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a", + "name": "XTEN LIMITED", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T23:59:59.992Z", + "name": "UFL Twitch Drop #1", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-12-05T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "869732f3-b09e-11ef-b0ce-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a_CUSTOM_ID_42250", + "createdAt": "2024-11-12T17:06:45.368Z", + "entitlementLimit": 1, + "game": { + "id": "1471416868", + "name": "UFL", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/28b6260e-00eb-4df9-a6a6-1196b375bbdf.png", + "isIosAvailable": false, + "name": "UFL Drop Pack #2", + "ownerOrganization": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a", + "name": "XTEN LIMITED", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T23:59:59.992Z", + "name": "UFL Twitch Drop #2", + "preconditionDrops": null, + "requiredMinutesWatched": 120, + "startAt": "2024-12-05T00:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "9359b62d-b09e-11ef-8da9-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a_CUSTOM_ID_42251", + "createdAt": "2024-11-12T17:08:42.794Z", + "entitlementLimit": 1, + "game": { + "id": "1471416868", + "name": "UFL", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/08a82e9d-6363-4bdb-adcc-2723385ba712.png", + "isIosAvailable": false, + "name": "UFL Drop Pack #3", + "ownerOrganization": { + "id": "df246de8-213d-4816-9fdf-1e234784c18a", + "name": "XTEN LIMITED", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-15T23:59:59.992Z", + "name": "UFL Twitch Drop #3", + "preconditionDrops": null, + "requiredMinutesWatched": 180, + "startAt": "2024-12-05T00:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "47c9347d-a1c2-11ef-b746-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://drops-register.ubi.com/#/en-US", + "description": "XDefiant Open S2M3", + "detailsURL": "https://www.ubisoft.com/fr-fr/help/gameplay/article/information-about-twitch-drops-for-ubisoft-games/000065532", + "endAt": "2024-12-18T16:58:59.998Z", + "eventBasedDrops": [], + "game": { + "id": "780302568", + "slug": "xdefiant", + "displayName": "XDefiant", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/31bae90c-e40a-4883-a76c-cea9599417b2.png", + "name": "XDefiant Open S2 M3", + "owner": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "startAt": "2024-11-20T17:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "5e54971b-a1c2-11ef-98f0-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_open_morganite", + "createdAt": "2024-11-13T12:40:35.363Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/25f54a05-b5a0-41f0-8a53-d0ea7e42f63f.png", + "isIosAvailable": false, + "name": "Morganite P90 Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r1", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "6940bf2c-a1c2-11ef-abf8-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_open_punch", + "createdAt": "2024-11-13T12:41:29.646Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/48fd2fcf-99a9-4b2a-b2b7-499463a4611a.png", + "isIosAvailable": false, + "name": "Punch TAC-50 Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r2", + "preconditionDrops": null, + "requiredMinutesWatched": 180, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "756f21f4-a1c2-11ef-9af7-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_open_violet", + "createdAt": "2024-11-13T12:43:15.054Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/46c8a32d-c760-4e2d-af0d-d0006549a122.png", + "isIosAvailable": false, + "name": "Violet SPAS-12 Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r3", + "preconditionDrops": null, + "requiredMinutesWatched": 300, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 70, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "cb62d73d-a1c1-11ef-8e0c-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "45115824", + "displayName": "MCFixer", + "name": "mcfixer", + "__typename": "Channel" + }, + { + "id": "95956637", + "displayName": "RaffGN7", + "name": "raffgn7", + "__typename": "Channel" + }, + { + "id": "114868515", + "displayName": "JustRyuk", + "name": "justryuk", + "__typename": "Channel" + }, + { + "id": "476259807", + "displayName": "grzmot69streams", + "name": "grzmot69streams", + "__typename": "Channel" + }, + { + "id": "28152440", + "displayName": "Charede", + "name": "charede", + "__typename": "Channel" + }, + { + "id": "84909565", + "displayName": "OMA_Monster", + "name": "oma_monster", + "__typename": "Channel" + }, + { + "id": "50249759", + "displayName": "Kine_ESP", + "name": "kine_esp", + "__typename": "Channel" + }, + { + "id": "131612770", + "displayName": "OWtlaw3d", + "name": "owtlaw3d", + "__typename": "Channel" + }, + { + "id": "134809155", + "displayName": "Tibore_", + "name": "tibore_", + "__typename": "Channel" + }, + { + "id": "150748702", + "displayName": "EngineerBunny", + "name": "engineerbunny", + "__typename": "Channel" + }, + { + "id": "74394566", + "displayName": "BurnerBlade", + "name": "burnerblade", + "__typename": "Channel" + }, + { + "id": "39836855", + "displayName": "moderngamingus", + "name": "moderngamingus", + "__typename": "Channel" + }, + { + "id": "522947870", + "displayName": "GASWARA", + "name": "gaswara", + "__typename": "Channel" + }, + { + "id": "51831029", + "displayName": "RBKeyz", + "name": "rbkeyz", + "__typename": "Channel" + }, + { + "id": "28655798", + "displayName": "Stallion", + "name": "stallion", + "__typename": "Channel" + }, + { + "id": "118005288", + "displayName": "L4k3", + "name": "l4k3", + "__typename": "Channel" + }, + { + "id": "176410600", + "displayName": "MARINO_SKI", + "name": "marino_ski", + "__typename": "Channel" + }, + { + "id": "95647499", + "displayName": "DravenNHK", + "name": "dravennhk", + "__typename": "Channel" + }, + { + "id": "76458094", + "displayName": "Marciu", + "name": "marciu", + "__typename": "Channel" + }, + { + "id": "47248663", + "displayName": "Sebbong", + "name": "sebbong", + "__typename": "Channel" + }, + { + "id": "212962306", + "displayName": "RIFAS", + "name": "rifas", + "__typename": "Channel" + }, + { + "id": "44327314", + "displayName": "Danielgrec", + "name": "danielgrec", + "__typename": "Channel" + }, + { + "id": "88346652", + "displayName": "TheShreg", + "name": "theshreg", + "__typename": "Channel" + }, + { + "id": "54838111", + "displayName": "MiiLo_tf", + "name": "miilo_tf", + "__typename": "Channel" + }, + { + "id": "777193279", + "displayName": "brok_n_one", + "name": "brok_n_one", + "__typename": "Channel" + }, + { + "id": "504846770", + "displayName": "darkgardet", + "name": "darkgardet", + "__typename": "Channel" + }, + { + "id": "95112342", + "displayName": "KaBloomiiy", + "name": "kabloomiiy", + "__typename": "Channel" + }, + { + "id": "127910681", + "displayName": "Raiko_Cl", + "name": "raiko_cl", + "__typename": "Channel" + }, + { + "id": "27778169", + "displayName": "SUBZERO2K", + "name": "subzero2k", + "__typename": "Channel" + }, + { + "id": "46109015", + "displayName": "The_Two_Defenders", + "name": "the_two_defenders", + "__typename": "Channel" + }, + { + "id": "68865044", + "displayName": "Hubinalle", + "name": "hubinalle", + "__typename": "Channel" + }, + { + "id": "237342326", + "displayName": "squadsama", + "name": "squadsama", + "__typename": "Channel" + }, + { + "id": "179117311", + "displayName": "blackkn1ght21", + "name": "blackkn1ght21", + "__typename": "Channel" + }, + { + "id": "104506091", + "displayName": "DGKPG", + "name": "dgkpg", + "__typename": "Channel" + }, + { + "id": "49312778", + "displayName": "juanmacamposs", + "name": "juanmacamposs", + "__typename": "Channel" + }, + { + "id": "156292206", + "displayName": "cinnacup", + "name": "cinnacup", + "__typename": "Channel" + }, + { + "id": "61249842", + "displayName": "L1SOMNI4K_TV", + "name": "l1somni4k_tv", + "__typename": "Channel" + }, + { + "id": "78525291", + "displayName": "ZakoMove", + "name": "zakomove", + "__typename": "Channel" + }, + { + "id": "176310611", + "displayName": "Darkmccry", + "name": "darkmccry", + "__typename": "Channel" + }, + { + "id": "265596642", + "displayName": "omarkadv", + "name": "omarkadv", + "__typename": "Channel" + }, + { + "id": "117371586", + "displayName": "RTHLZ", + "name": "rthlz", + "__typename": "Channel" + }, + { + "id": "70726527", + "displayName": "NightClub2077", + "name": "nightclub2077", + "__typename": "Channel" + }, + { + "id": "455991044", + "displayName": "efrem_03", + "name": "efrem_03", + "__typename": "Channel" + }, + { + "id": "15666801", + "displayName": "MDee14", + "name": "mdee14", + "__typename": "Channel" + }, + { + "id": "99410741", + "displayName": "Dex_tv", + "name": "dex_tv", + "__typename": "Channel" + }, + { + "id": "404083648", + "displayName": "WolFinD", + "name": "wolfind", + "__typename": "Channel" + }, + { + "id": "52648571", + "displayName": "BAFA", + "name": "bafa", + "__typename": "Channel" + }, + { + "id": "145346181", + "displayName": "FamousWolluf", + "name": "famouswolluf", + "__typename": "Channel" + }, + { + "id": "400971066", + "displayName": "abdeldzttv", + "name": "abdeldzttv", + "__typename": "Channel" + }, + { + "id": "59146108", + "displayName": "ScoPTG", + "name": "scoptg", + "__typename": "Channel" + }, + { + "id": "1149849174", + "displayName": "melichuchu", + "name": "melichuchu", + "__typename": "Channel" + }, + { + "id": "63087971", + "displayName": "Jalaga", + "name": "jalaga", + "__typename": "Channel" + }, + { + "id": "644727257", + "displayName": "Veechy99", + "name": "veechy99", + "__typename": "Channel" + }, + { + "id": "60679677", + "displayName": "Bones3161", + "name": "bones3161", + "__typename": "Channel" + }, + { + "id": "51855570", + "displayName": "Gamer_TerryMcFly", + "name": "gamer_terrymcfly", + "__typename": "Channel" + }, + { + "id": "429768818", + "displayName": "Zomby764", + "name": "zomby764", + "__typename": "Channel" + }, + { + "id": "448493266", + "displayName": "BaezaElTurco", + "name": "baezaelturco", + "__typename": "Channel" + }, + { + "id": "56265971", + "displayName": "VirusPowers", + "name": "viruspowers", + "__typename": "Channel" + }, + { + "id": "448200303", + "displayName": "itz_barbarian_", + "name": "itz_barbarian_", + "__typename": "Channel" + }, + { + "id": "104950622", + "displayName": "TeddyBER", + "name": "teddyber", + "__typename": "Channel" + }, + { + "id": "61301802", + "displayName": "NaruTVs", + "name": "narutvs", + "__typename": "Channel" + }, + { + "id": "75816566", + "displayName": "Tactino96", + "name": "tactino96", + "__typename": "Channel" + }, + { + "id": "113025884", + "displayName": "MajorRespect", + "name": "majorrespect", + "__typename": "Channel" + }, + { + "id": "46211896", + "displayName": "kylxen", + "name": "kylxen", + "__typename": "Channel" + }, + { + "id": "96879284", + "displayName": "Kalamity", + "name": "kalamity", + "__typename": "Channel" + }, + { + "id": "77180593", + "displayName": "El_VideoClub", + "name": "el_videoclub", + "__typename": "Channel" + }, + { + "id": "111240086", + "displayName": "SuriPlay", + "name": "suriplay", + "__typename": "Channel" + }, + { + "id": "29708543", + "displayName": "Harkonis", + "name": "harkonis", + "__typename": "Channel" + }, + { + "id": "482039259", + "displayName": "ZinRyZe", + "name": "zinryze", + "__typename": "Channel" + }, + { + "id": "428246934", + "displayName": "H_Guerrero", + "name": "h_guerrero", + "__typename": "Channel" + }, + { + "id": "646941512", + "displayName": "bakedzombiequeen", + "name": "bakedzombiequeen", + "__typename": "Channel" + }, + { + "id": "43533289", + "displayName": "Protezee", + "name": "protezee", + "__typename": "Channel" + }, + { + "id": "470298375", + "displayName": "GameAssado", + "name": "gameassado", + "__typename": "Channel" + }, + { + "id": "400565134", + "displayName": "SirZave24", + "name": "sirzave24", + "__typename": "Channel" + }, + { + "id": "179366252", + "displayName": "MarkusWolfy", + "name": "markuswolfy", + "__typename": "Channel" + }, + { + "id": "1190678667", + "displayName": "AIMHEIMM", + "name": "aimheimm", + "__typename": "Channel" + }, + { + "id": "277113009", + "displayName": "NateHotshot", + "name": "natehotshot", + "__typename": "Channel" + }, + { + "id": "58686341", + "displayName": "rammz57", + "name": "rammz57", + "__typename": "Channel" + }, + { + "id": "125228327", + "displayName": "Miukena", + "name": "miukena", + "__typename": "Channel" + }, + { + "id": "174796794", + "displayName": "Gaming_uae", + "name": "gaming_uae", + "__typename": "Channel" + }, + { + "id": "37233420", + "displayName": "meligeni", + "name": "meligeni", + "__typename": "Channel" + }, + { + "id": "110832774", + "displayName": "BolekR6", + "name": "bolekr6", + "__typename": "Channel" + }, + { + "id": "661797013", + "displayName": "sidwaj", + "name": "sidwaj", + "__typename": "Channel" + }, + { + "id": "170742652", + "displayName": "Dark_Rhinos", + "name": "dark_rhinos", + "__typename": "Channel" + }, + { + "id": "40750182", + "displayName": "colemonocl", + "name": "colemonocl", + "__typename": "Channel" + }, + { + "id": "132503454", + "displayName": "MrKorleonne", + "name": "mrkorleonne", + "__typename": "Channel" + }, + { + "id": "126373811", + "displayName": "MsHoney420", + "name": "mshoney420", + "__typename": "Channel" + }, + { + "id": "56753664", + "displayName": "djtickle", + "name": "djtickle", + "__typename": "Channel" + }, + { + "id": "45845935", + "displayName": "LIVESTREAM_CH", + "name": "livestream_ch", + "__typename": "Channel" + }, + { + "id": "239855325", + "displayName": "sn0wyte", + "name": "sn0wyte", + "__typename": "Channel" + }, + { + "id": "146655612", + "displayName": "cometenno", + "name": "cometenno", + "__typename": "Channel" + }, + { + "id": "703913533", + "displayName": "Krael1c", + "name": "krael1c", + "__typename": "Channel" + }, + { + "id": "178101176", + "displayName": "kratzy76au", + "name": "kratzy76au", + "__typename": "Channel" + }, + { + "id": "132307432", + "displayName": "RockyDaNerd", + "name": "rockydanerd", + "__typename": "Channel" + }, + { + "id": "215989575", + "displayName": "EdgeTypE", + "name": "edgetype", + "__typename": "Channel" + }, + { + "id": "106939329", + "displayName": "OneShooter", + "name": "oneshooter", + "__typename": "Channel" + }, + { + "id": "675284547", + "displayName": "jemtvfavorite", + "name": "jemtvfavorite", + "__typename": "Channel" + }, + { + "id": "44944867", + "displayName": "Bstaaard", + "name": "bstaaard", + "__typename": "Channel" + }, + { + "id": "110829601", + "displayName": "cheyballa718", + "name": "cheyballa718", + "__typename": "Channel" + }, + { + "id": "37646005", + "displayName": "NuclearQueso", + "name": "nuclearqueso", + "__typename": "Channel" + }, + { + "id": "98535293", + "displayName": "oEverson_", + "name": "oeverson_", + "__typename": "Channel" + }, + { + "id": "496406219", + "displayName": "FV3RZA", + "name": "fv3rza", + "__typename": "Channel" + }, + { + "id": "135154256", + "displayName": "xKingxPredatorx", + "name": "xkingxpredatorx", + "__typename": "Channel" + }, + { + "id": "69234377", + "displayName": "krysisfps", + "name": "krysisfps", + "__typename": "Channel" + }, + { + "id": "46814605", + "displayName": "Suafps", + "name": "suafps", + "__typename": "Channel" + }, + { + "id": "32520002", + "displayName": "Retalha", + "name": "retalha", + "__typename": "Channel" + }, + { + "id": "75770781", + "displayName": "DOPEGIRL20", + "name": "dopegirl20", + "__typename": "Channel" + }, + { + "id": "165860398", + "displayName": "GCGamerOficial", + "name": "gcgameroficial", + "__typename": "Channel" + }, + { + "id": "50746863", + "displayName": "Element_Five", + "name": "element_five", + "__typename": "Channel" + }, + { + "id": "58491861", + "displayName": "DarthMinos", + "name": "darthminos", + "__typename": "Channel" + }, + { + "id": "70953347", + "displayName": "SvenRGE", + "name": "svenrge", + "__typename": "Channel" + }, + { + "id": "144174616", + "displayName": "DangleBerriesTV", + "name": "dangleberriestv", + "__typename": "Channel" + }, + { + "id": "112003806", + "displayName": "bulletthekrazygamer", + "name": "bulletthekrazygamer", + "__typename": "Channel" + }, + { + "id": "195321014", + "displayName": "Thrishh", + "name": "thrishh", + "__typename": "Channel" + }, + { + "id": "76938838", + "displayName": "NattapongS", + "name": "nattapongs", + "__typename": "Channel" + }, + { + "id": "99109261", + "displayName": "Gasterat", + "name": "gasterat", + "__typename": "Channel" + }, + { + "id": "58371977", + "displayName": "LastZer0", + "name": "lastzer0", + "__typename": "Channel" + }, + { + "id": "123838193", + "displayName": "CrossArchon", + "name": "crossarchon", + "__typename": "Channel" + }, + { + "id": "480955248", + "displayName": "MillerTvGaming", + "name": "millertvgaming", + "__typename": "Channel" + }, + { + "id": "78686185", + "displayName": "MorganSkilly", + "name": "morganskilly", + "__typename": "Channel" + }, + { + "id": "53887031", + "displayName": "ThatBoiRazz", + "name": "thatboirazz", + "__typename": "Channel" + }, + { + "id": "723483567", + "displayName": "oyebulll", + "name": "oyebulll", + "__typename": "Channel" + }, + { + "id": "159817514", + "displayName": "MoonieBaboonie", + "name": "mooniebaboonie", + "__typename": "Channel" + }, + { + "id": "138039988", + "displayName": "Lunarell", + "name": "lunarell", + "__typename": "Channel" + }, + { + "id": "609774191", + "displayName": "FourStarMan", + "name": "fourstarman", + "__typename": "Channel" + }, + { + "id": "113898381", + "displayName": "Wighamm", + "name": "wighamm", + "__typename": "Channel" + }, + { + "id": "227572735", + "displayName": "ItsWrenn", + "name": "itswrenn", + "__typename": "Channel" + }, + { + "id": "117379932", + "displayName": "KingGeorge", + "name": "kinggeorge", + "__typename": "Channel" + }, + { + "id": "471194363", + "displayName": "\u3048\u30fc\u3073\u541b\u306f\u6b7b\u3093\u3060\u6d77\u8001", + "name": "dead_lob_ster", + "__typename": "Channel" + }, + { + "id": "79798872", + "displayName": "Witheball", + "name": "witheball", + "__typename": "Channel" + }, + { + "id": "107351053", + "displayName": "DonMiwell", + "name": "donmiwell", + "__typename": "Channel" + }, + { + "id": "278553104", + "displayName": "sh1rot4", + "name": "sh1rot4", + "__typename": "Channel" + }, + { + "id": "149773125", + "displayName": "JerichoFive", + "name": "jerichofive", + "__typename": "Channel" + }, + { + "id": "137915535", + "displayName": "TechDarius", + "name": "techdarius", + "__typename": "Channel" + }, + { + "id": "95238894", + "displayName": "Bluespooth", + "name": "bluespooth", + "__typename": "Channel" + }, + { + "id": "442495934", + "displayName": "Gr3eZy23", + "name": "gr3ezy23", + "__typename": "Channel" + }, + { + "id": "100662353", + "displayName": "iKi_", + "name": "iki_", + "__typename": "Channel" + }, + { + "id": "102626369", + "displayName": "eonDaddy", + "name": "eondaddy", + "__typename": "Channel" + }, + { + "id": "144424030", + "displayName": "Hithack_", + "name": "hithack_", + "__typename": "Channel" + }, + { + "id": "8963821", + "displayName": "chickdrummer88", + "name": "chickdrummer88", + "__typename": "Channel" + }, + { + "id": "417365058", + "displayName": "the__gd", + "name": "the__gd", + "__typename": "Channel" + }, + { + "id": "69624099", + "displayName": "manello_", + "name": "manello_", + "__typename": "Channel" + }, + { + "id": "94654818", + "displayName": "Vegaz23", + "name": "vegaz23", + "__typename": "Channel" + }, + { + "id": "136174490", + "displayName": "Jav0rs", + "name": "jav0rs", + "__typename": "Channel" + }, + { + "id": "666416399", + "displayName": "11Bravo4Gaming", + "name": "11bravo4gaming", + "__typename": "Channel" + }, + { + "id": "128321470", + "displayName": "warth_gaming", + "name": "warth_gaming", + "__typename": "Channel" + }, + { + "id": "74513310", + "displayName": "Trafficriv", + "name": "trafficriv", + "__typename": "Channel" + }, + { + "id": "144098110", + "displayName": "hillarek", + "name": "hillarek", + "__typename": "Channel" + }, + { + "id": "20550803", + "displayName": "REDinFamy", + "name": "redinfamy", + "__typename": "Channel" + }, + { + "id": "274850329", + "displayName": "Soldierjojo", + "name": "soldierjojo", + "__typename": "Channel" + }, + { + "id": "160764005", + "displayName": "IIAteneaII", + "name": "iiateneaii", + "__typename": "Channel" + }, + { + "id": "135339543", + "displayName": "Palamidasr6", + "name": "palamidasr6", + "__typename": "Channel" + }, + { + "id": "5115151", + "displayName": "Thorrace", + "name": "thorrace", + "__typename": "Channel" + }, + { + "id": "595188561", + "displayName": "AndyeCanoV", + "name": "andyecanov", + "__typename": "Channel" + }, + { + "id": "478782297", + "displayName": "NathMazzoLi", + "name": "nathmazzoli", + "__typename": "Channel" + }, + { + "id": "48582405", + "displayName": "MobstrMatt", + "name": "mobstrmatt", + "__typename": "Channel" + }, + { + "id": "615476532", + "displayName": "Jim_Wolverine_", + "name": "jim_wolverine_", + "__typename": "Channel" + }, + { + "id": "144550101", + "displayName": "ZaladinGaming", + "name": "zaladingaming", + "__typename": "Channel" + }, + { + "id": "65700463", + "displayName": "A1phaChino", + "name": "a1phachino", + "__typename": "Channel" + }, + { + "id": "60672359", + "displayName": "EdenFPS", + "name": "edenfps", + "__typename": "Channel" + }, + { + "id": "62663168", + "displayName": "astonish2k", + "name": "astonish2k", + "__typename": "Channel" + }, + { + "id": "173608741", + "displayName": "kirin_twitch", + "name": "kirin_twitch", + "__typename": "Channel" + }, + { + "id": "100071629", + "displayName": "Cryptelo", + "name": "cryptelo", + "__typename": "Channel" + }, + { + "id": "611054521", + "displayName": "braduk1", + "name": "braduk1", + "__typename": "Channel" + }, + { + "id": "122000285", + "displayName": "MagGamerINC", + "name": "maggamerinc", + "__typename": "Channel" + }, + { + "id": "665060225", + "displayName": "\u30ca\u30ba\u30ed\u30e0", + "name": "nazurom", + "__typename": "Channel" + }, + { + "id": "42702467", + "displayName": "HolmesInFive", + "name": "holmesinfive", + "__typename": "Channel" + }, + { + "id": "463502588", + "displayName": "faweljarrin", + "name": "faweljarrin", + "__typename": "Channel" + }, + { + "id": "667600873", + "displayName": "metalgaming29", + "name": "metalgaming29", + "__typename": "Channel" + }, + { + "id": "104101154", + "displayName": "Rexhun999", + "name": "rexhun999", + "__typename": "Channel" + }, + { + "id": "40777129", + "displayName": "LeonGids", + "name": "leongids", + "__typename": "Channel" + }, + { + "id": "53813686", + "displayName": "DogeFather_", + "name": "dogefather_", + "__typename": "Channel" + }, + { + "id": "184678049", + "displayName": "\u308c\u3063\u3069\u3057\u3087\u3046", + "name": "redsyou", + "__typename": "Channel" + }, + { + "id": "229885347", + "displayName": "reviewsito", + "name": "reviewsito", + "__typename": "Channel" + }, + { + "id": "126926398", + "displayName": "crashsmash01", + "name": "crashsmash01", + "__typename": "Channel" + }, + { + "id": "741723258", + "displayName": "Giyuzk", + "name": "giyuzk", + "__typename": "Channel" + }, + { + "id": "451607292", + "displayName": "Smylce_Gaming", + "name": "smylce_gaming", + "__typename": "Channel" + }, + { + "id": "11623093", + "displayName": "DuckHugh", + "name": "duckhugh", + "__typename": "Channel" + }, + { + "id": "70790624", + "displayName": "tez_13", + "name": "tez_13", + "__typename": "Channel" + }, + { + "id": "149030309", + "displayName": "\u795e\u61f6\u6d0b\u6d0b", + "name": "kfh861104", + "__typename": "Channel" + }, + { + "id": "28500401", + "displayName": "rafalsony", + "name": "rafalsony", + "__typename": "Channel" + }, + { + "id": "71041701", + "displayName": "Typischkevv", + "name": "typischkevv", + "__typename": "Channel" + }, + { + "id": "175651641", + "displayName": "lalor89", + "name": "lalor89", + "__typename": "Channel" + }, + { + "id": "75835047", + "displayName": "JRols", + "name": "jrols", + "__typename": "Channel" + }, + { + "id": "77632202", + "displayName": "ProRebornLive", + "name": "prorebornlive", + "__typename": "Channel" + }, + { + "id": "40966840", + "displayName": "Cannibals", + "name": "cannibals", + "__typename": "Channel" + }, + { + "id": "60803136", + "displayName": "bunnyxo", + "name": "bunnyxo", + "__typename": "Channel" + }, + { + "id": "208359273", + "displayName": "Fraxured_Plays", + "name": "fraxured_plays", + "__typename": "Channel" + }, + { + "id": "731894062", + "displayName": "Boesschen", + "name": "boesschen", + "__typename": "Channel" + }, + { + "id": "147736740", + "displayName": "ReeceHendrix", + "name": "reecehendrix", + "__typename": "Channel" + }, + { + "id": "453713629", + "displayName": "Nerween_", + "name": "nerween_", + "__typename": "Channel" + }, + { + "id": "467492087", + "displayName": "nsgSkye", + "name": "nsgskye", + "__typename": "Channel" + }, + { + "id": "165873757", + "displayName": "ProfessorNerd", + "name": "professornerd", + "__typename": "Channel" + }, + { + "id": "262686341", + "displayName": "Mikaveli", + "name": "mikaveli", + "__typename": "Channel" + }, + { + "id": "62175180", + "displayName": "VibinSonic", + "name": "vibinsonic", + "__typename": "Channel" + }, + { + "id": "124568085", + "displayName": "Zhaiv", + "name": "zhaiv", + "__typename": "Channel" + }, + { + "id": "618795217", + "displayName": "rudobrody_gamer", + "name": "rudobrody_gamer", + "__typename": "Channel" + }, + { + "id": "117485499", + "displayName": "solved", + "name": "solved", + "__typename": "Channel" + }, + { + "id": "100198036", + "displayName": "ViP3R_76", + "name": "vip3r_76", + "__typename": "Channel" + }, + { + "id": "90155022", + "displayName": "Mikymalossi", + "name": "mikymalossi", + "__typename": "Channel" + }, + { + "id": "660271120", + "displayName": "Los2Player", + "name": "los2player", + "__typename": "Channel" + }, + { + "id": "95971260", + "displayName": "tbearswe", + "name": "tbearswe", + "__typename": "Channel" + }, + { + "id": "37522039", + "displayName": "Carpo31", + "name": "carpo31", + "__typename": "Channel" + }, + { + "id": "40428046", + "displayName": "Vladislay", + "name": "vladislay", + "__typename": "Channel" + }, + { + "id": "444348301", + "displayName": "R3N4Y", + "name": "r3n4y", + "__typename": "Channel" + }, + { + "id": "247742083", + "displayName": "ArianaJessica", + "name": "arianajessica", + "__typename": "Channel" + }, + { + "id": "185682732", + "displayName": "Miguileigra", + "name": "miguileigra", + "__typename": "Channel" + }, + { + "id": "247001800", + "displayName": "GuelSZN", + "name": "guelszn", + "__typename": "Channel" + }, + { + "id": "232822942", + "displayName": "KatieBedford", + "name": "katiebedford", + "__typename": "Channel" + }, + { + "id": "125165441", + "displayName": "OBLOGA_UA", + "name": "obloga_ua", + "__typename": "Channel" + }, + { + "id": "81088641", + "displayName": "iziarawr", + "name": "iziarawr", + "__typename": "Channel" + }, + { + "id": "39244215", + "displayName": "RaptyyTheLegend", + "name": "raptyythelegend", + "__typename": "Channel" + }, + { + "id": "127999938", + "displayName": "hamcheese", + "name": "hamcheese", + "__typename": "Channel" + }, + { + "id": "61956749", + "displayName": "SmokingBabe420", + "name": "smokingbabe420", + "__typename": "Channel" + }, + { + "id": "171260752", + "displayName": "LoccdWolf", + "name": "loccdwolf", + "__typename": "Channel" + }, + { + "id": "72341514", + "displayName": "Braders77UK", + "name": "braders77uk", + "__typename": "Channel" + }, + { + "id": "224581045", + "displayName": "Clue37", + "name": "clue37", + "__typename": "Channel" + }, + { + "id": "137214514", + "displayName": "h3r1cin", + "name": "h3r1cin", + "__typename": "Channel" + }, + { + "id": "27527467", + "displayName": "Cerventes", + "name": "cerventes", + "__typename": "Channel" + }, + { + "id": "14934618", + "displayName": "SporeRose", + "name": "sporerose", + "__typename": "Channel" + }, + { + "id": "95002962", + "displayName": "TheJayCreations", + "name": "thejaycreations", + "__typename": "Channel" + }, + { + "id": "80169255", + "displayName": "ThaSecondSonGamer", + "name": "thasecondsongamer", + "__typename": "Channel" + }, + { + "id": "210516690", + "displayName": "eldestro32", + "name": "eldestro32", + "__typename": "Channel" + }, + { + "id": "55523466", + "displayName": "iZN1337", + "name": "izn1337", + "__typename": "Channel" + }, + { + "id": "776808401", + "displayName": "ProGamersVe", + "name": "progamersve", + "__typename": "Channel" + }, + { + "id": "29810567", + "displayName": "AlphaSniper97", + "name": "alphasniper97", + "__typename": "Channel" + }, + { + "id": "171097407", + "displayName": "vdxpre__", + "name": "vdxpre__", + "__typename": "Channel" + }, + { + "id": "58431027", + "displayName": "BlackLotusLV", + "name": "blacklotuslv", + "__typename": "Channel" + }, + { + "id": "144036770", + "displayName": "White_Gandhi", + "name": "white_gandhi", + "__typename": "Channel" + }, + { + "id": "435713038", + "displayName": "peter97x", + "name": "peter97x", + "__typename": "Channel" + }, + { + "id": "417383642", + "displayName": "xFishanatorNL", + "name": "xfishanatornl", + "__typename": "Channel" + }, + { + "id": "194388817", + "displayName": "RenzoTap_", + "name": "renzotap_", + "__typename": "Channel" + }, + { + "id": "142884227", + "displayName": "LadyJanessa", + "name": "ladyjanessa", + "__typename": "Channel" + }, + { + "id": "141509239", + "displayName": "ClubChick", + "name": "clubchick", + "__typename": "Channel" + }, + { + "id": "32979657", + "displayName": "Miracle_AU", + "name": "miracle_au", + "__typename": "Channel" + }, + { + "id": "1065403044", + "displayName": "alldrops_tv", + "name": "alldrops_tv", + "__typename": "Channel" + }, + { + "id": "115778294", + "displayName": "Jonajoker", + "name": "jonajoker", + "__typename": "Channel" + }, + { + "id": "553881182", + "displayName": "Kush_Beaver", + "name": "kush_beaver", + "__typename": "Channel" + }, + { + "id": "152802694", + "displayName": "ghost_tea", + "name": "ghost_tea", + "__typename": "Channel" + }, + { + "id": "409386520", + "displayName": "MilanoGamezzYT", + "name": "milanogamezzyt", + "__typename": "Channel" + }, + { + "id": "493482720", + "displayName": "KOR_BLACKJO", + "name": "kor_blackjo", + "__typename": "Channel" + }, + { + "id": "58790637", + "displayName": "xBOOSE100x", + "name": "xboose100x", + "__typename": "Channel" + }, + { + "id": "51202192", + "displayName": "kirkthegamer", + "name": "kirkthegamer", + "__typename": "Channel" + }, + { + "id": "112741562", + "displayName": "PsiicoMoon", + "name": "psiicomoon", + "__typename": "Channel" + }, + { + "id": "129319188", + "displayName": "simuverserden", + "name": "simuverserden", + "__typename": "Channel" + }, + { + "id": "1117877254", + "displayName": "tunder_gtv", + "name": "tunder_gtv", + "__typename": "Channel" + }, + { + "id": "80692860", + "displayName": "ivanperez12", + "name": "ivanperez12", + "__typename": "Channel" + }, + { + "id": "139346717", + "displayName": "DMCT_ZeFriaNoTM", + "name": "dmct_zefrianotm", + "__typename": "Channel" + }, + { + "id": "73277859", + "displayName": "casegasPT", + "name": "casegaspt", + "__typename": "Channel" + }, + { + "id": "51851719", + "displayName": "NoxDiem", + "name": "noxdiem", + "__typename": "Channel" + }, + { + "id": "111011992", + "displayName": "Dubaderp", + "name": "dubaderp", + "__typename": "Channel" + }, + { + "id": "678280849", + "displayName": "SiegeDoubleShot", + "name": "siegedoubleshot", + "__typename": "Channel" + }, + { + "id": "473923645", + "displayName": "ScorchedDarrin", + "name": "scorcheddarrin", + "__typename": "Channel" + }, + { + "id": "82860001", + "displayName": "Fetered", + "name": "fetered", + "__typename": "Channel" + }, + { + "id": "85110713", + "displayName": "AmoreTori", + "name": "amoretori", + "__typename": "Channel" + }, + { + "id": "203612013", + "displayName": "Yous_DiiGa", + "name": "yous_diiga", + "__typename": "Channel" + }, + { + "id": "190784868", + "displayName": "RANDOM_gtv", + "name": "random_gtv", + "__typename": "Channel" + }, + { + "id": "215596608", + "displayName": "Ch0okii", + "name": "ch0okii", + "__typename": "Channel" + }, + { + "id": "185568284", + "displayName": "Haldoric", + "name": "haldoric", + "__typename": "Channel" + }, + { + "id": "252696914", + "displayName": "SimmaTV_", + "name": "simmatv_", + "__typename": "Channel" + }, + { + "id": "94725768", + "displayName": "szczurkowski", + "name": "szczurkowski", + "__typename": "Channel" + }, + { + "id": "1124193398", + "displayName": "rono183b", + "name": "rono183b", + "__typename": "Channel" + }, + { + "id": "408316635", + "displayName": "Itsbenjoni_", + "name": "itsbenjoni_", + "__typename": "Channel" + }, + { + "id": "143901611", + "displayName": "DaddyGamerFred", + "name": "daddygamerfred", + "__typename": "Channel" + }, + { + "id": "42965102", + "displayName": "Plasma43", + "name": "plasma43", + "__typename": "Channel" + }, + { + "id": "417943360", + "displayName": "DexAlmendeig", + "name": "dexalmendeig", + "__typename": "Channel" + }, + { + "id": "70081476", + "displayName": "Sixburn", + "name": "sixburn", + "__typename": "Channel" + }, + { + "id": "190706445", + "displayName": "tanksgaminghd", + "name": "tanksgaminghd", + "__typename": "Channel" + }, + { + "id": "196577021", + "displayName": "ChAbhi", + "name": "chabhi", + "__typename": "Channel" + }, + { + "id": "79224029", + "displayName": "H3z0", + "name": "h3z0", + "__typename": "Channel" + }, + { + "id": "58683351", + "displayName": "BIGJOE_TV", + "name": "bigjoe_tv", + "__typename": "Channel" + }, + { + "id": "93133342", + "displayName": "AnnWasauski", + "name": "annwasauski", + "__typename": "Channel" + }, + { + "id": "136939351", + "displayName": "FlankThomas", + "name": "flankthomas", + "__typename": "Channel" + }, + { + "id": "113168035", + "displayName": "ShockRizal", + "name": "shockrizal", + "__typename": "Channel" + }, + { + "id": "116267083", + "displayName": "TheMolarJason", + "name": "themolarjason", + "__typename": "Channel" + }, + { + "id": "117334714", + "displayName": "xReadyAimMissx", + "name": "xreadyaimmissx", + "__typename": "Channel" + }, + { + "id": "79315456", + "displayName": "Bramski27", + "name": "bramski27", + "__typename": "Channel" + }, + { + "id": "57374485", + "displayName": "elvisplaylive", + "name": "elvisplaylive", + "__typename": "Channel" + }, + { + "id": "246955137", + "displayName": "OGomer", + "name": "ogomer", + "__typename": "Channel" + }, + { + "id": "158412966", + "displayName": "Kreepers", + "name": "kreepers", + "__typename": "Channel" + }, + { + "id": "225217183", + "displayName": "eretz_", + "name": "eretz_", + "__typename": "Channel" + }, + { + "id": "463893177", + "displayName": "ZQueenOfRandom", + "name": "zqueenofrandom", + "__typename": "Channel" + }, + { + "id": "32071927", + "displayName": "NghtmrTV", + "name": "nghtmrtv", + "__typename": "Channel" + }, + { + "id": "497340874", + "displayName": "RusticmoonVR", + "name": "rusticmoonvr", + "__typename": "Channel" + }, + { + "id": "554278419", + "displayName": "BlueTough", + "name": "bluetough", + "__typename": "Channel" + }, + { + "id": "69983924", + "displayName": "Thorgal006", + "name": "thorgal006", + "__typename": "Channel" + }, + { + "id": "61516122", + "displayName": "BoMightKnow", + "name": "bomightknow", + "__typename": "Channel" + }, + { + "id": "473153677", + "displayName": "Amberculees", + "name": "amberculees", + "__typename": "Channel" + }, + { + "id": "105968693", + "displayName": "akaMarci", + "name": "akamarci", + "__typename": "Channel" + }, + { + "id": "20762752", + "displayName": "NOVABRAND", + "name": "novabrand", + "__typename": "Channel" + }, + { + "id": "54184733", + "displayName": "BanBoyPolska", + "name": "banboypolska", + "__typename": "Channel" + }, + { + "id": "425330802", + "displayName": "Rubynavx", + "name": "rubynavx", + "__typename": "Channel" + }, + { + "id": "5114515", + "displayName": "AntDaGamerADG", + "name": "antdagameradg", + "__typename": "Channel" + }, + { + "id": "196632306", + "displayName": "codrin_gg_hs", + "name": "codrin_gg_hs", + "__typename": "Channel" + }, + { + "id": "119680154", + "displayName": "LuSTeRy", + "name": "lustery", + "__typename": "Channel" + }, + { + "id": "28635965", + "displayName": "BersGamer", + "name": "bersgamer", + "__typename": "Channel" + }, + { + "id": "758293991", + "displayName": "gr4yey4rdgh0ul", + "name": "gr4yey4rdgh0ul", + "__typename": "Channel" + }, + { + "id": "401839313", + "displayName": "KappaBone", + "name": "kappabone", + "__typename": "Channel" + }, + { + "id": "182029651", + "displayName": "mario_r6s", + "name": "mario_r6s", + "__typename": "Channel" + }, + { + "id": "804602175", + "displayName": "weekendEMO", + "name": "weekendemo", + "__typename": "Channel" + }, + { + "id": "206317967", + "displayName": "STAYlN_ALlVE", + "name": "stayln_allve", + "__typename": "Channel" + }, + { + "id": "208789603", + "displayName": "ThePandaleo", + "name": "thepandaleo", + "__typename": "Channel" + }, + { + "id": "160192620", + "displayName": "SPUDqueen", + "name": "spudqueen", + "__typename": "Channel" + }, + { + "id": "10693295", + "displayName": "Zeris", + "name": "zeris", + "__typename": "Channel" + }, + { + "id": "489185622", + "displayName": "Mogurogaming", + "name": "mogurogaming", + "__typename": "Channel" + }, + { + "id": "1149970169", + "displayName": "mooonwukong", + "name": "mooonwukong", + "__typename": "Channel" + }, + { + "id": "70666996", + "displayName": "WhippyXD", + "name": "whippyxd", + "__typename": "Channel" + }, + { + "id": "170322825", + "displayName": "brigadierliane", + "name": "brigadierliane", + "__typename": "Channel" + }, + { + "id": "472240584", + "displayName": "gauranga1st", + "name": "gauranga1st", + "__typename": "Channel" + }, + { + "id": "246433221", + "displayName": "xRicky_01", + "name": "xricky_01", + "__typename": "Channel" + }, + { + "id": "713588244", + "displayName": "mismayhemz", + "name": "mismayhemz", + "__typename": "Channel" + }, + { + "id": "124558358", + "displayName": "Ahmad_Tarmizi", + "name": "ahmad_tarmizi", + "__typename": "Channel" + }, + { + "id": "274854866", + "displayName": "XpectoGO", + "name": "xpectogo", + "__typename": "Channel" + }, + { + "id": "69973563", + "displayName": "Ebiisan", + "name": "ebiisan", + "__typename": "Channel" + }, + { + "id": "26882275", + "displayName": "weskeRRRR", + "name": "weskerrrr", + "__typename": "Channel" + }, + { + "id": "272086928", + "displayName": "tanasroom", + "name": "tanasroom", + "__typename": "Channel" + }, + { + "id": "134855374", + "displayName": "Bevans1221", + "name": "bevans1221", + "__typename": "Channel" + }, + { + "id": "63639499", + "displayName": "angelofdeathWHV", + "name": "angelofdeathwhv", + "__typename": "Channel" + }, + { + "id": "115904657", + "displayName": "HoTPoTaToisLive", + "name": "hotpotatoislive", + "__typename": "Channel" + }, + { + "id": "111897951", + "displayName": "DizzyOnline", + "name": "dizzyonline", + "__typename": "Channel" + }, + { + "id": "438706486", + "displayName": "zilentnoize", + "name": "zilentnoize", + "__typename": "Channel" + }, + { + "id": "64524498", + "displayName": "ChaseBeyond", + "name": "chasebeyond", + "__typename": "Channel" + }, + { + "id": "692834358", + "displayName": "PEANUTibok", + "name": "peanutibok", + "__typename": "Channel" + }, + { + "id": "137921359", + "displayName": "wascho84", + "name": "wascho84", + "__typename": "Channel" + }, + { + "id": "73106866", + "displayName": "Janickkay", + "name": "janickkay", + "__typename": "Channel" + }, + { + "id": "474073232", + "displayName": "N3BST4R", + "name": "n3bst4r", + "__typename": "Channel" + }, + { + "id": "799780149", + "displayName": "TheOneMagic_", + "name": "theonemagic_", + "__typename": "Channel" + }, + { + "id": "140527470", + "displayName": "Maarcxss", + "name": "maarcxss", + "__typename": "Channel" + }, + { + "id": "233475638", + "displayName": "0MITT", + "name": "0mitt", + "__typename": "Channel" + }, + { + "id": "137444030", + "displayName": "lMurii", + "name": "lmurii", + "__typename": "Channel" + }, + { + "id": "893892949", + "displayName": "JustBlasteX", + "name": "justblastex", + "__typename": "Channel" + }, + { + "id": "531991246", + "displayName": "zeta_org", + "name": "zeta_org", + "__typename": "Channel" + }, + { + "id": "529266857", + "displayName": "Pandara_TV", + "name": "pandara_tv", + "__typename": "Channel" + }, + { + "id": "678116401", + "displayName": "happydays564", + "name": "happydays564", + "__typename": "Channel" + }, + { + "id": "117866366", + "displayName": "jeypiti_", + "name": "jeypiti_", + "__typename": "Channel" + }, + { + "id": "566328259", + "displayName": "SoraMusicR6", + "name": "soramusicr6", + "__typename": "Channel" + }, + { + "id": "603380228", + "displayName": "bellabein", + "name": "bellabein", + "__typename": "Channel" + }, + { + "id": "484804859", + "displayName": "RosesOverrated", + "name": "rosesoverrated", + "__typename": "Channel" + }, + { + "id": "122054008", + "displayName": "MoxieLuu", + "name": "moxieluu", + "__typename": "Channel" + }, + { + "id": "180395656", + "displayName": "tellybeans", + "name": "tellybeans", + "__typename": "Channel" + }, + { + "id": "684264790", + "displayName": "Xlord_D", + "name": "xlord_d", + "__typename": "Channel" + }, + { + "id": "44084871", + "displayName": "PWN_hubx", + "name": "pwn_hubx", + "__typename": "Channel" + }, + { + "id": "419631570", + "displayName": "FunyGreenMan", + "name": "funygreenman", + "__typename": "Channel" + }, + { + "id": "229065034", + "displayName": "odocerato", + "name": "odocerato", + "__typename": "Channel" + }, + { + "id": "124391031", + "displayName": "TwitchThisGuy", + "name": "twitchthisguy", + "__typename": "Channel" + }, + { + "id": "157721989", + "displayName": "ElLuchador535", + "name": "elluchador535", + "__typename": "Channel" + }, + { + "id": "207520340", + "displayName": "mrsoldierman", + "name": "mrsoldierman", + "__typename": "Channel" + }, + { + "id": "61715844", + "displayName": "NiRox_Gaming", + "name": "nirox_gaming", + "__typename": "Channel" + }, + { + "id": "51108317", + "displayName": "Nikooo_Guti", + "name": "nikooo_guti", + "__typename": "Channel" + }, + { + "id": "62404360", + "displayName": "mrogueagent", + "name": "mrogueagent", + "__typename": "Channel" + }, + { + "id": "198735183", + "displayName": "igor_with_skillz", + "name": "igor_with_skillz", + "__typename": "Channel" + }, + { + "id": "162323285", + "displayName": "supremesvm", + "name": "supremesvm", + "__typename": "Channel" + }, + { + "id": "42326540", + "displayName": "insanegamer52", + "name": "insanegamer52", + "__typename": "Channel" + }, + { + "id": "179643344", + "displayName": "brudalhappy", + "name": "brudalhappy", + "__typename": "Channel" + }, + { + "id": "79082867", + "displayName": "ZavPaul", + "name": "zavpaul", + "__typename": "Channel" + }, + { + "id": "199018402", + "displayName": "JoeToGoTV", + "name": "joetogotv", + "__typename": "Channel" + }, + { + "id": "223575498", + "displayName": "MrsKrysia", + "name": "mrskrysia", + "__typename": "Channel" + }, + { + "id": "23292368", + "displayName": "uebertreiBEAR", + "name": "uebertreibear", + "__typename": "Channel" + }, + { + "id": "155655511", + "displayName": "Flaviocee", + "name": "flaviocee", + "__typename": "Channel" + }, + { + "id": "493252162", + "displayName": "FailChildJo", + "name": "failchildjo", + "__typename": "Channel" + }, + { + "id": "270320864", + "displayName": "NukeyHD", + "name": "nukeyhd", + "__typename": "Channel" + }, + { + "id": "194185760", + "displayName": "NitroXBS", + "name": "nitroxbs", + "__typename": "Channel" + }, + { + "id": "154407217", + "displayName": "Ddirectt", + "name": "ddirectt", + "__typename": "Channel" + }, + { + "id": "211131735", + "displayName": "MarkGGaming", + "name": "markggaming", + "__typename": "Channel" + }, + { + "id": "910816753", + "displayName": "elisiummm", + "name": "elisiummm", + "__typename": "Channel" + }, + { + "id": "150386497", + "displayName": "haruchicken", + "name": "haruchicken", + "__typename": "Channel" + }, + { + "id": "685410139", + "displayName": "AlpacaButSerious", + "name": "alpacabutserious", + "__typename": "Channel" + }, + { + "id": "136983752", + "displayName": "Vikoca", + "name": "vikoca", + "__typename": "Channel" + }, + { + "id": "46007972", + "displayName": "Raptor", + "name": "raptor", + "__typename": "Channel" + }, + { + "id": "91607625", + "displayName": "8BitRise", + "name": "8bitrise", + "__typename": "Channel" + }, + { + "id": "734027746", + "displayName": "Droppedoutofsite", + "name": "droppedoutofsite", + "__typename": "Channel" + }, + { + "id": "819817126", + "displayName": "ShootnBodies", + "name": "shootnbodies", + "__typename": "Channel" + }, + { + "id": "94950810", + "displayName": "Energy_ZC", + "name": "energy_zc", + "__typename": "Channel" + }, + { + "id": "117509283", + "displayName": "BlazingJacob", + "name": "blazingjacob", + "__typename": "Channel" + }, + { + "id": "509187416", + "displayName": "SeraphiaVT", + "name": "seraphiavt", + "__typename": "Channel" + }, + { + "id": "207148857", + "displayName": "MAKKIA", + "name": "makkia", + "__typename": "Channel" + }, + { + "id": "798640648", + "displayName": "\u3042\u308a\u3059\u3058\u3083\u3071\u3093", + "name": "alice_japan08", + "__typename": "Channel" + }, + { + "id": "246504445", + "displayName": "annucciaax", + "name": "annucciaax", + "__typename": "Channel" + }, + { + "id": "202409592", + "displayName": "holygrailrose", + "name": "holygrailrose", + "__typename": "Channel" + }, + { + "id": "38206304", + "displayName": "Koalaphin", + "name": "koalaphin", + "__typename": "Channel" + }, + { + "id": "64834714", + "displayName": "girly_gamer_xo", + "name": "girly_gamer_xo", + "__typename": "Channel" + }, + { + "id": "207853907", + "displayName": "Roariey", + "name": "roariey", + "__typename": "Channel" + }, + { + "id": "193230313", + "displayName": "Supereloy77", + "name": "supereloy77", + "__typename": "Channel" + }, + { + "id": "504553897", + "displayName": "Selfmade0711", + "name": "selfmade0711", + "__typename": "Channel" + }, + { + "id": "29817227", + "displayName": "PikAHiMoViC", + "name": "pikahimovic", + "__typename": "Channel" + }, + { + "id": "31565647", + "displayName": "BlameTruthOC", + "name": "blametruthoc", + "__typename": "Channel" + }, + { + "id": "53627794", + "displayName": "ExpertTerminal", + "name": "expertterminal", + "__typename": "Channel" + }, + { + "id": "532624861", + "displayName": "SlowReflexes1", + "name": "slowreflexes1", + "__typename": "Channel" + }, + { + "id": "404204992", + "displayName": "Qrayzy", + "name": "qrayzy", + "__typename": "Channel" + }, + { + "id": "140356169", + "displayName": "yaNasTy_LIVE", + "name": "yanasty_live", + "__typename": "Channel" + }, + { + "id": "190811717", + "displayName": "GHCBOSS", + "name": "ghcboss", + "__typename": "Channel" + }, + { + "id": "641972760", + "displayName": "lilrairu", + "name": "lilrairu", + "__typename": "Channel" + }, + { + "id": "710324537", + "displayName": "AriadneVenus", + "name": "ariadnevenus", + "__typename": "Channel" + }, + { + "id": "83288705", + "displayName": "InfernoAbyssGaming", + "name": "infernoabyssgaming", + "__typename": "Channel" + }, + { + "id": "102870198", + "displayName": "Ranakkl", + "name": "ranakkl", + "__typename": "Channel" + }, + { + "id": "39661462", + "displayName": "UkaszGra", + "name": "ukaszgra", + "__typename": "Channel" + }, + { + "id": "234056177", + "displayName": "BaldoneTV", + "name": "baldonetv", + "__typename": "Channel" + }, + { + "id": "101926473", + "displayName": "AngelQueenWolf", + "name": "angelqueenwolf", + "__typename": "Channel" + }, + { + "id": "169055001", + "displayName": "xZaGaxx", + "name": "xzagaxx", + "__typename": "Channel" + }, + { + "id": "52232293", + "displayName": "Ludens_Live", + "name": "ludens_live", + "__typename": "Channel" + }, + { + "id": "67079512", + "displayName": "Raines_of_Onyx", + "name": "raines_of_onyx", + "__typename": "Channel" + }, + { + "id": "146065899", + "displayName": "axzanar", + "name": "axzanar", + "__typename": "Channel" + }, + { + "id": "167735048", + "displayName": "makcikdon", + "name": "makcikdon", + "__typename": "Channel" + }, + { + "id": "226094842", + "displayName": "FriendlyLoserFN", + "name": "friendlyloserfn", + "__typename": "Channel" + }, + { + "id": "197475544", + "displayName": "NeisAmStiel", + "name": "neisamstiel", + "__typename": "Channel" + }, + { + "id": "172641052", + "displayName": "DYLAN009008", + "name": "dylan009008", + "__typename": "Channel" + }, + { + "id": "482980384", + "displayName": "freddy2301", + "name": "freddy2301", + "__typename": "Channel" + }, + { + "id": "119527358", + "displayName": "ROWMEISTER", + "name": "rowmeister", + "__typename": "Channel" + }, + { + "id": "59448927", + "displayName": "XadLive", + "name": "xadlive", + "__typename": "Channel" + }, + { + "id": "197247188", + "displayName": "daltonshuset", + "name": "daltonshuset", + "__typename": "Channel" + }, + { + "id": "87416222", + "displayName": "THECROSS11", + "name": "thecross11", + "__typename": "Channel" + }, + { + "id": "519700051", + "displayName": "boy50n_300", + "name": "boy50n_300", + "__typename": "Channel" + }, + { + "id": "27408992", + "displayName": "RaiumyVT", + "name": "raiumyvt", + "__typename": "Channel" + }, + { + "id": "1076594922", + "displayName": "SharkDudeTTV", + "name": "sharkdudettv", + "__typename": "Channel" + }, + { + "id": "530575273", + "displayName": "WittyWitterson", + "name": "wittywitterson", + "__typename": "Channel" + }, + { + "id": "44803385", + "displayName": "SkullAngel0013", + "name": "skullangel0013", + "__typename": "Channel" + }, + { + "id": "84028725", + "displayName": "TheHomieMiggs", + "name": "thehomiemiggs", + "__typename": "Channel" + }, + { + "id": "254526253", + "displayName": "lepandalf", + "name": "lepandalf", + "__typename": "Channel" + }, + { + "id": "96739524", + "displayName": "FUJ__06", + "name": "fuj__06", + "__typename": "Channel" + }, + { + "id": "695303602", + "displayName": "Mandced", + "name": "mandced", + "__typename": "Channel" + }, + { + "id": "472492018", + "displayName": "LaryOnAir", + "name": "laryonair", + "__typename": "Channel" + }, + { + "id": "582267580", + "displayName": "guarisan", + "name": "guarisan", + "__typename": "Channel" + }, + { + "id": "969910318", + "displayName": "matchababe00", + "name": "matchababe00", + "__typename": "Channel" + }, + { + "id": "738486322", + "displayName": "GewoonSarah", + "name": "gewoonsarah", + "__typename": "Channel" + }, + { + "id": "467715298", + "displayName": "Mr_DarkWitcher", + "name": "mr_darkwitcher", + "__typename": "Channel" + }, + { + "id": "559804072", + "displayName": "ru_rumiiiin", + "name": "ru_rumiiiin", + "__typename": "Channel" + }, + { + "id": "160013064", + "displayName": "\u99ac\u4eba\u3046\u307e\u3093\u3061\u3085", + "name": "umanchu", + "__typename": "Channel" + }, + { + "id": "188875291", + "displayName": "\u91ce\u3005\u5bae\u30df\u30ab", + "name": "nonomiyamika", + "__typename": "Channel" + }, + { + "id": "480526865", + "displayName": "\u307f\u3064\u3070\u3061\u306f\u306b\u3061\u3083\u3093", + "name": "888hanichan", + "__typename": "Channel" + }, + { + "id": "168729548", + "displayName": "PaladinAmber", + "name": "paladinamber", + "__typename": "Channel" + }, + { + "id": "410322055", + "displayName": "madisongordonx", + "name": "madisongordonx", + "__typename": "Channel" + }, + { + "id": "21646144", + "displayName": "angelysaras", + "name": "angelysaras", + "__typename": "Channel" + }, + { + "id": "27772699", + "displayName": "Apathy", + "name": "apathy", + "__typename": "Channel" + }, + { + "id": "95695525", + "displayName": "Barra", + "name": "barra", + "__typename": "Channel" + }, + { + "id": "24147592", + "displayName": "Gotaga", + "name": "gotaga", + "__typename": "Channel" + }, + { + "id": "30709418", + "displayName": "Mickalow", + "name": "mickalow", + "__typename": "Channel" + }, + { + "id": "110545504", + "displayName": "pixuy", + "name": "pixuy", + "__typename": "Channel" + }, + { + "id": "8818585", + "displayName": "rxysurfchic", + "name": "rxysurfchic", + "__typename": "Channel" + }, + { + "id": "13240194", + "displayName": "scump", + "name": "scump", + "__typename": "Channel" + }, + { + "id": "274625", + "displayName": "Swiftor", + "name": "swiftor", + "__typename": "Channel" + }, + { + "id": "23844396", + "displayName": "TeePee", + "name": "teepee", + "__typename": "Channel" + }, + { + "id": "13326547", + "displayName": "Parasite", + "name": "parasite", + "__typename": "Channel" + }, + { + "id": "47517789", + "displayName": "Slacked", + "name": "slacked", + "__typename": "Channel" + }, + { + "id": "73381100", + "displayName": "aSmoogl", + "name": "asmoogl", + "__typename": "Channel" + }, + { + "id": "42784672", + "displayName": "ATTURSSON", + "name": "attursson", + "__typename": "Channel" + }, + { + "id": "153400124", + "displayName": "Eaglex99", + "name": "eaglex99", + "__typename": "Channel" + }, + { + "id": "532838538", + "displayName": "Elvyn", + "name": "elvyn", + "__typename": "Channel" + }, + { + "id": "30458295", + "displayName": "frttt", + "name": "frttt", + "__typename": "Channel" + }, + { + "id": "45329736", + "displayName": "HITBOXKING", + "name": "hitboxking", + "__typename": "Channel" + }, + { + "id": "39862675", + "displayName": "Jackbuzza", + "name": "jackbuzza", + "__typename": "Channel" + }, + { + "id": "782243179", + "displayName": "MarkMyWordsOfficial", + "name": "markmywordsofficial", + "__typename": "Channel" + }, + { + "id": "188875291", + "displayName": "\u91ce\u3005\u5bae\u30df\u30ab", + "name": "nonomiyamika", + "__typename": "Channel" + }, + { + "id": "54507525", + "displayName": "Pisty", + "name": "pisty", + "__typename": "Channel" + }, + { + "id": "47909109", + "displayName": "POGstream", + "name": "pogstream", + "__typename": "Channel" + }, + { + "id": "46812116", + "displayName": "ReiZIV", + "name": "reiziv", + "__typename": "Channel" + }, + { + "id": "64546560", + "displayName": "Riskin", + "name": "riskin", + "__typename": "Channel" + }, + { + "id": "25684280", + "displayName": "\u9054\u54e5", + "name": "underground_dv", + "__typename": "Channel" + }, + { + "id": "41790550", + "displayName": "Winghaven", + "name": "winghaven", + "__typename": "Channel" + }, + { + "id": "48870826", + "displayName": "xHankyy", + "name": "xhankyy", + "__typename": "Channel" + }, + { + "id": "32171655", + "displayName": "ziGueira", + "name": "zigueira", + "__typename": "Channel" + }, + { + "id": "79031633", + "displayName": "SinapsisYT", + "name": "sinapsisyt", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://drops-register.ubi.com/#/en-US", + "description": "XDefiant - Partners Only, S3 Month 3", + "detailsURL": "https://www.ubisoft.com/fr-fr/help/gameplay/article/information-about-twitch-drops-for-ubisoft-games/000065532", + "endAt": "2024-12-18T16:58:59.998Z", + "eventBasedDrops": [], + "game": { + "id": "780302568", + "slug": "xdefiant", + "displayName": "XDefiant", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/8423e52d-de37-4090-8f7d-d64374baca97.png", + "name": "XDefiant Partners S2 M3", + "owner": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "startAt": "2024-11-20T17:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "e3348dea-a1c1-11ef-9209-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_partners_graphite", + "createdAt": "2024-11-13T12:47:37.402Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/40d36cb9-4e8b-4265-9a9b-f7ca3c4ffecc.jpeg", + "isIosAvailable": false, + "name": "Graphite ACR Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r1", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "f05cac07-a1c1-11ef-89ac-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_partners_backflash", + "createdAt": "2024-11-13T12:48:38.636Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/bff6396c-94f2-4055-985b-599c57211dab.png", + "isIosAvailable": false, + "name": "Backflash Li'l T Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r2", + "preconditionDrops": null, + "requiredMinutesWatched": 180, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "f9b850dd-a1c1-11ef-ad30-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b_CUSTOM_ID_xdef_s2m3_partners_backflash_rafa", + "createdAt": "2024-11-13T12:49:37.635Z", + "entitlementLimit": 1, + "game": { + "id": "780302568", + "name": "XDefiant", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/65067b02-8676-4daf-9c9e-df3d03ca8cc7.png", + "isIosAvailable": false, + "name": "Backflash Rafa Skin", + "ownerOrganization": { + "id": "59d4f6c2-36bc-4c3f-83c8-f8d9936dc75b", + "name": "Ubisoft", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-18T16:58:59.998Z", + "name": "r3", + "preconditionDrops": null, + "requiredMinutesWatched": 300, + "startAt": "2024-11-20T17:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 123, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "745f953a-af1e-11ef-8b3e-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "43573173", + "displayName": "pashavvp", + "name": "pashavvp", + "__typename": "Channel" + }, + { + "id": "40377849", + "displayName": "Gorezones", + "name": "gorezones", + "__typename": "Channel" + }, + { + "id": "109230600", + "displayName": "LettleEnot", + "name": "lettleenot", + "__typename": "Channel" + }, + { + "id": "251232257", + "displayName": "CTAPUKTV", + "name": "ctapuktv", + "__typename": "Channel" + }, + { + "id": "238185752", + "displayName": "EndorphinEw", + "name": "endorphinew", + "__typename": "Channel" + }, + { + "id": "1058899729", + "displayName": "qrazh_", + "name": "qrazh_", + "__typename": "Channel" + }, + { + "id": "417474153", + "displayName": "AnikroNx", + "name": "anikronx", + "__typename": "Channel" + }, + { + "id": "853052242", + "displayName": "archi_l2", + "name": "archi_l2", + "__typename": "Channel" + }, + { + "id": "49435579", + "displayName": "Axterial", + "name": "axterial", + "__typename": "Channel" + }, + { + "id": "871563431", + "displayName": "Bonic_TV", + "name": "bonic_tv", + "__typename": "Channel" + }, + { + "id": "437344219", + "displayName": "dushoymolodoy", + "name": "dushoymolodoy", + "__typename": "Channel" + }, + { + "id": "192721384", + "displayName": "i888jambo888", + "name": "i888jambo888", + "__typename": "Channel" + }, + { + "id": "47352023", + "displayName": "4r4m", + "name": "4r4m", + "__typename": "Channel" + }, + { + "id": "1051758301", + "displayName": "IceSniperLuck", + "name": "icesniperluck", + "__typename": "Channel" + }, + { + "id": "682152848", + "displayName": "8IDLive", + "name": "8idlive", + "__typename": "Channel" + }, + { + "id": "152081294", + "displayName": "iLevvvy", + "name": "ilevvvy", + "__typename": "Channel" + }, + { + "id": "900819385", + "displayName": "iUndertakerTV", + "name": "iundertakertv", + "__typename": "Channel" + }, + { + "id": "152726523", + "displayName": "izshrek", + "name": "izshrek", + "__typename": "Channel" + }, + { + "id": "45603190", + "displayName": "Kolya_Nikolaj", + "name": "kolya_nikolaj", + "__typename": "Channel" + }, + { + "id": "163751362", + "displayName": "legalfarm", + "name": "legalfarm", + "__typename": "Channel" + }, + { + "id": "63627673", + "displayName": "LibreViento", + "name": "libreviento", + "__typename": "Channel" + }, + { + "id": "109678298", + "displayName": "merlan2015", + "name": "merlan2015", + "__typename": "Channel" + }, + { + "id": "569435719", + "displayName": "Natalie_Play", + "name": "natalie_play", + "__typename": "Channel" + }, + { + "id": "126036371", + "displayName": "TyNiashka", + "name": "tyniashka", + "__typename": "Channel" + }, + { + "id": "743140496", + "displayName": "POZHIDAY_TV", + "name": "pozhiday_tv", + "__typename": "Channel" + }, + { + "id": "52918490", + "displayName": "PVEfun", + "name": "pvefun", + "__typename": "Channel" + }, + { + "id": "754278534", + "displayName": "remorse2021", + "name": "remorse2021", + "__typename": "Channel" + }, + { + "id": "195693107", + "displayName": "1ScreamTV", + "name": "1screamtv", + "__typename": "Channel" + }, + { + "id": "463230524", + "displayName": "S_M_S_ka", + "name": "s_m_s_ka", + "__typename": "Channel" + }, + { + "id": "654544202", + "displayName": "Studzenb", + "name": "studzenb", + "__typename": "Channel" + }, + { + "id": "130570260", + "displayName": "TiReyGT", + "name": "tireygt", + "__typename": "Channel" + }, + { + "id": "721426196", + "displayName": "WaralinnPlay", + "name": "waralinnplay", + "__typename": "Channel" + }, + { + "id": "31649100", + "displayName": "smart_boxy", + "name": "smart_boxy", + "__typename": "Channel" + }, + { + "id": "894386569", + "displayName": "TagankaWGB", + "name": "tagankawgb", + "__typename": "Channel" + }, + { + "id": "111027119", + "displayName": "MyasnayaZabava", + "name": "myasnayazabava", + "__typename": "Channel" + }, + { + "id": "46976085", + "displayName": "alekcl2", + "name": "alekcl2", + "__typename": "Channel" + }, + { + "id": "450114896", + "displayName": "xSTARSxx", + "name": "xstarsxx", + "__typename": "Channel" + }, + { + "id": "885809446", + "displayName": "aeoreheal", + "name": "aeoreheal", + "__typename": "Channel" + }, + { + "id": "265940345", + "displayName": "TpaBoMaH", + "name": "tpabomah", + "__typename": "Channel" + }, + { + "id": "43899589", + "displayName": "C_a_k_e", + "name": "c_a_k_e", + "__typename": "Channel" + }, + { + "id": "44162266", + "displayName": "orkpod", + "name": "orkpod", + "__typename": "Channel" + }, + { + "id": "130313947", + "displayName": "DMITRY_BALE", + "name": "dmitry_bale", + "__typename": "Channel" + }, + { + "id": "159782005", + "displayName": "GuDDummit", + "name": "guddummit", + "__typename": "Channel" + }, + { + "id": "184634287", + "displayName": "Terablade", + "name": "terablade", + "__typename": "Channel" + }, + { + "id": "189795522", + "displayName": "limitlessqt", + "name": "limitlessqt", + "__typename": "Channel" + }, + { + "id": "609266064", + "displayName": "advocate_hs", + "name": "advocate_hs", + "__typename": "Channel" + }, + { + "id": "87481167", + "displayName": "VooDooSh", + "name": "voodoosh", + "__typename": "Channel" + }, + { + "id": "748826098", + "displayName": "RaMMeRttv", + "name": "rammerttv", + "__typename": "Channel" + }, + { + "id": "448235850", + "displayName": "SFDays_twitch", + "name": "sfdays_twitch", + "__typename": "Channel" + }, + { + "id": "408034330", + "displayName": "mrderelict", + "name": "mrderelict", + "__typename": "Channel" + }, + { + "id": "908667071", + "displayName": "barmich2007", + "name": "barmich2007", + "__typename": "Channel" + }, + { + "id": "146626484", + "displayName": "succub_", + "name": "succub_", + "__typename": "Channel" + }, + { + "id": "100945731", + "displayName": "inorthan", + "name": "inorthan", + "__typename": "Channel" + }, + { + "id": "435628946", + "displayName": "lDofman", + "name": "ldofman", + "__typename": "Channel" + }, + { + "id": "800427138", + "displayName": "3apu4", + "name": "3apu4", + "__typename": "Channel" + }, + { + "id": "728443537", + "displayName": "VoditelPoGybam", + "name": "voditelpogybam", + "__typename": "Channel" + }, + { + "id": "139452276", + "displayName": "Greatestparn", + "name": "greatestparn", + "__typename": "Channel" + }, + { + "id": "897073473", + "displayName": "Demonic_Player_", + "name": "demonic_player_", + "__typename": "Channel" + }, + { + "id": "190889800", + "displayName": "Lineage2Russia", + "name": "lineage2russia", + "__typename": "Channel" + }, + { + "id": "145651113", + "displayName": "bardugun1993", + "name": "bardugun1993", + "__typename": "Channel" + }, + { + "id": "1211324292", + "displayName": "isay_1992", + "name": "isay_1992", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://ru.4game.com/drops/twitch/", + "description": "\u041d\u0430\u0433\u0440\u0430\u0434\u0430 \u0432 \u0447\u0435\u0441\u0442\u044c \u0433\u043e\u0434\u043e\u0432\u0449\u0438\u043d\u044b Lineage 2.", + "detailsURL": "https://l2central.info/classic/notices/2887.html?lang=ru", + "endAt": "2024-12-20T20:59:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "515349", + "slug": "lineage-ii", + "displayName": "Lineage II", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/96fb893d-f6c7-46d9-8a97-9bd515faa056.png", + "name": "Anniversary Drops", + "owner": { + "id": "9997a4e8-c43f-42fe-93fa-0c3ed88eecb0", + "name": "Innova", + "__typename": "Organization" + }, + "startAt": "2024-12-01T08:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "9c6f9143-af1e-11ef-a790-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "9997a4e8-c43f-42fe-93fa-0c3ed88eecb0_CUSTOM_ID_10115835", + "createdAt": "2024-11-30T13:12:45.87Z", + "entitlementLimit": 1, + "game": { + "id": "515349", + "name": "Lineage II", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/fc704eb1-174e-4307-864a-87beda38832e.png", + "isIosAvailable": false, + "name": "Anniversary Legacy Drops", + "ownerOrganization": { + "id": "9997a4e8-c43f-42fe-93fa-0c3ed88eecb0", + "name": "Innova", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "9997a4e8-c43f-42fe-93fa-0c3ed88eecb0_CUSTOM_ID_10116225", + "createdAt": "2024-11-30T23:27:40.287Z", + "entitlementLimit": 1, + "game": { + "id": "515349", + "name": "Lineage II", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/50d167d2-4198-4458-87df-e2c6d62806d3.png", + "isIosAvailable": false, + "name": "Anniversary Lineage Drops", + "ownerOrganization": { + "id": "9997a4e8-c43f-42fe-93fa-0c3ed88eecb0", + "name": "Innova", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-20T20:59:59.999Z", + "name": "Lineage 2 Legacy Drops", + "preconditionDrops": null, + "requiredMinutesWatched": 120, + "startAt": "2024-12-01T08:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 73, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "81d1f942-abd8-11ef-b6e9-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "26615579", + "displayName": "NBA2K", + "name": "nba2k", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://nba.2k.com/twitch-drops/", + "description": "Watch NBA 2K25 and complete this Twitch Drops campaign to earn a Locker Code, containing a MyTEAM Super Pack (Unauctionable), MyTEAM 1 Hour 2XP Coin, MyCAREER Skill Boosts - 10x All Categories, and MyCAREER 1 Hour 2XP Coin for NBA 2K25!", + "detailsURL": "https://nba.2k.com/twitch-drops/", + "endAt": "2024-12-21T03:59:59.994Z", + "eventBasedDrops": [], + "game": { + "id": "2068583461", + "slug": "nba-2k25", + "displayName": "NBA 2K25", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/ad7b1fb4-5531-433b-8cca-f5272641c0a2.png", + "name": "Season 3 Locker Code", + "owner": { + "id": "e91851f4-7a94-4f97-a9f8-eb4c93bf7616", + "name": "2K Games", + "__typename": "Organization" + }, + "startAt": "2024-11-29T15:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "f6ab9bf3-abd8-11ef-b168-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "242d066b-abd9-11ef-8538-0a58a9feac02", + "createdAt": "2024-11-26T09:30:57.495Z", + "entitlementLimit": 1, + "game": { + "id": "2068583461", + "name": "NBA 2K25", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/9a0a112d-4d49-47d6-adc0-e2523831e1c1.png", + "isIosAvailable": false, + "name": "Season 3 Locker Code", + "ownerOrganization": { + "id": "e91851f4-7a94-4f97-a9f8-eb4c93bf7616", + "name": "2K Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-21T03:59:59.994Z", + "name": "Season 3 Locker Code", + "preconditionDrops": null, + "requiredMinutesWatched": 240, + "startAt": "2024-11-29T15:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 72, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "ed3c8790-a67f-11ef-a449-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://www.seaofthieves.com/twitch-drops", + "description": "Starting Friday 6th December and running until Sunday 22nd December, Sea of Thieves is partnering with Twitch for Support A Streamer!\n\nViewers who purchase or gift two qualifying subscriptions will receive the Celestial Steed ship cosmetics, while those who purchase or gift three qualifying subscriptions will also receive the Obsidian Capstan. Keep an eye on the Sea of Thieves social channels for more details and news on other Festival of Giving events!\n\nWant to take part? Don't forget to link your Twitch and Sea of Thieves accounts by following the steps here: https://www.seaofthieves.com/twitch-drops\n\nFor terms and conditions check out the Support A Streamer page here: https://www.seaofthieves.com/support-a-streamer", + "detailsURL": "https://www.seaofthieves.com/support-a-streamer", + "endAt": "2024-12-22T09:59:59.994Z", + "eventBasedDrops": [], + "game": { + "id": "490377", + "slug": "sea-of-thieves", + "displayName": "Sea of Thieves", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/4131f623-c860-4cb1-b7bf-b070f14f230b.jpeg", + "name": "S14: Support A Streamer", + "owner": { + "id": "c959c359-eeb7-4aa0-81ab-c4cecd6c0efb", + "name": "Rare", + "__typename": "Organization" + }, + "startAt": "2024-12-06T10:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "b4958a7d-a683-11ef-821f-0a58a9feac02", + "requiredSubs": 2, + "benefitEdges": [ + { + "benefit": { + "id": "c959c359-eeb7-4aa0-81ab-c4cecd6c0efb_CUSTOM_ID_sot_party_ship_cosmetics", + "createdAt": "2024-12-05T12:12:50.448Z", + "entitlementLimit": 1, + "game": { + "id": "490377", + "name": "Sea of Thieves", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/4f234cde-38c1-435e-8cae-0c40ba895787.png", + "isIosAvailable": false, + "name": "Celestial Steed Ship Set", + "ownerOrganization": { + "id": "c959c359-eeb7-4aa0-81ab-c4cecd6c0efb", + "name": "Rare", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-22T09:59:59.994Z", + "name": "Celestial Steed Ship Cosmetics", + "preconditionDrops": null, + "requiredMinutesWatched": 0, + "startAt": "2024-12-06T10:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "bfa352b4-a683-11ef-8e11-0a58a9feac02", + "requiredSubs": 3, + "benefitEdges": [ + { + "benefit": { + "id": "c959c359-eeb7-4aa0-81ab-c4cecd6c0efb_CUSTOM_ID_sot_capstan_blackdog_01_CustomizationDesc_C", + "createdAt": "2024-12-05T12:13:12.43Z", + "entitlementLimit": 1, + "game": { + "id": "490377", + "name": "Sea of Thieves", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/4b280d00-0b2d-48d0-b4f3-a12614ec7b4b.png", + "isIosAvailable": false, + "name": "Obsidian Capstan", + "ownerOrganization": { + "id": "c959c359-eeb7-4aa0-81ab-c4cecd6c0efb", + "name": "Rare", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-22T09:59:59.994Z", + "name": "The Obsidian Capstan", + "preconditionDrops": null, + "requiredMinutesWatched": 0, + "startAt": "2024-12-06T10:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "08834f51-a00d-11ef-a5e0-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://r.qoolandgames.com/671f4f012c06e1112e98fccc/index", + "description": "Twitch Drops are an easy way to earn special in-game rewards by watching selected livestreams for a certain period of time.", + "detailsURL": "https://r.qoolandgames.com/671f4f012c06e1112e98fccc/index", + "endAt": "2024-12-22T17:59:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "1462834331", + "slug": "mystery-mask-the-immortal-soul", + "displayName": "Soulmask", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/default.png", + "name": "Soulmask ", + "owner": { + "id": "423069ae-a2c4-4bf4-9ed9-f6b62031fe0d", + "name": "Qoolandgames", + "__typename": "Organization" + }, + "startAt": "2024-11-25T08:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "0b3f5c77-a014-11ef-b087-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "423069ae-a2c4-4bf4-9ed9-f6b62031fe0d_CUSTOM_ID_GliderSkinWC", + "createdAt": "2024-11-11T10:00:49.421Z", + "entitlementLimit": 1, + "game": { + "id": "1462834331", + "name": "Soulmask", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/1bdf2e13-5fdd-48fa-bee1-3c03f84857f7.png", + "isIosAvailable": false, + "name": "Wind Commander", + "ownerOrganization": { + "id": "423069ae-a2c4-4bf4-9ed9-f6b62031fe0d", + "name": "Qoolandgames", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-22T17:59:59.999Z", + "name": "Wind Commander", + "preconditionDrops": null, + "requiredMinutesWatched": 90, + "startAt": "2024-11-25T08:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "247425cf-a014-11ef-a2ba-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "423069ae-a2c4-4bf4-9ed9-f6b62031fe0d_CUSTOM_ID_SledSkinAG", + "createdAt": "2024-11-11T09:55:03.105Z", + "entitlementLimit": 1, + "game": { + "id": "1462834331", + "name": "Soulmask", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/06bac5d1-e74a-47d4-8d4f-affa97d5b926.png", + "isIosAvailable": false, + "name": "Azure Ghost", + "ownerOrganization": { + "id": "423069ae-a2c4-4bf4-9ed9-f6b62031fe0d", + "name": "Qoolandgames", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-22T17:59:59.999Z", + "name": "Azure Ghost", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-25T08:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "475a936b-af41-11ef-9343-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://id.twitch.tv/oauth2/authorize?response_type=token&client_id=qkxawi9g89zrh5p6kyzzxsysgq7g3h&redirect_uri=https%3A%2F%2Fwww.playcoryphaeus.com/twitch-drops&scope=channel%3Amanage%3Aredemptions+channel%3Aread%3Aredemptions+channel%3Aread%3Asubscriptions+moderator%3Aread%3Achatters+channel%3Aread%3Ahype_train+bits%3Aread", + "description": "\u2744\ufe0fCoryphaeus Winter Drops", + "detailsURL": "https://www.playcoryphaeus.com/twitch-drops-info", + "endAt": "2024-12-25T17:32:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "707002701", + "slug": "coryphaeus-championships", + "displayName": "Coryphaeus Championships", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/39112ac8-69d4-4d89-a377-5f3fcb4830c9.png", + "name": "\u2744\ufe0fCoryphaeus Winter Drops", + "owner": { + "id": "e3d13beb-c006-481b-af2e-b818ba77ebc3", + "name": "Coryphaeus Corp", + "__typename": "Organization" + }, + "startAt": "2024-11-30T17:33:31Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "5a87eaf8-af41-11ef-88b4-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "e3d13beb-c006-481b-af2e-b818ba77ebc3_CUSTOM_ID_500coins", + "createdAt": "2024-03-01T12:44:56.987Z", + "entitlementLimit": 1, + "game": { + "id": "707002701", + "name": "Coryphaeus Championships", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/08aec75b-fc8a-4460-8929-1a9f49a0ad0c.png", + "isIosAvailable": false, + "name": "\ud83d\udcb0 500 C-Coins ", + "ownerOrganization": { + "id": "e3d13beb-c006-481b-af2e-b818ba77ebc3", + "name": "Coryphaeus Corp", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-25T17:32:59.999Z", + "name": "\ud83d\udcb0 500 C-Coins", + "preconditionDrops": null, + "requiredMinutesWatched": 150, + "startAt": "2024-11-30T17:33:31Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "65a7b59a-af41-11ef-9c16-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "e3d13beb-c006-481b-af2e-b818ba77ebc3_CUSTOM_ID_DanceEmotePack", + "createdAt": "2024-06-02T21:37:19.232Z", + "entitlementLimit": 1, + "game": { + "id": "707002701", + "name": "Coryphaeus Championships", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/22dfcd0b-4ca8-44a2-b123-627f01a04a8a.png", + "isIosAvailable": false, + "name": "\ud83e\udd38 Pack of Dance Emotes! ", + "ownerOrganization": { + "id": "e3d13beb-c006-481b-af2e-b818ba77ebc3", + "name": "Coryphaeus Corp", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-25T17:32:59.999Z", + "name": "\ud83e\udd38 Pack of Dance Emotes!", + "preconditionDrops": null, + "requiredMinutesWatched": 90, + "startAt": "2024-11-30T17:33:31Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "1f080613-ad01-11ef-9769-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://parallel.life/settings/account", + "description": "Watch Parallel streams. 30 minutes of watch time for a Base Set Pack, 1 hour of watch time for a Planetfall Pack, and 2 hours of watch time for a Premium Pack.", + "detailsURL": "https://x.com/ParallelTCG", + "endAt": "2024-12-25T20:47:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "1931912067", + "slug": "parallel-3", + "displayName": "Parallel", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/0ba959d9-3141-4f6a-be4a-283056ed2bea.jpeg", + "name": "Parallel Holidays", + "owner": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406", + "name": "Parallel Studios", + "__typename": "Organization" + }, + "startAt": "2024-11-27T20:48:18Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "0a20d2a8-ad02-11ef-aaa7-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406_CUSTOM_ID_premium_pack_1", + "createdAt": "2024-11-19T02:03:31.346Z", + "entitlementLimit": 1, + "game": { + "id": "1931912067", + "name": "Parallel", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/7a90d679-4bb4-4ff4-b640-3fc116609874.png", + "isIosAvailable": false, + "name": "1 Premium Pack", + "ownerOrganization": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406", + "name": "Parallel Studios", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-25T20:47:59.999Z", + "name": "1 Premium Pack", + "preconditionDrops": null, + "requiredMinutesWatched": 120, + "startAt": "2024-11-27T20:48:18Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "ce976cd6-ad01-11ef-ba28-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406_CUSTOM_ID_premium_pack_1", + "createdAt": "2024-11-19T02:03:31.346Z", + "entitlementLimit": 1, + "game": { + "id": "1931912067", + "name": "Parallel", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/7a90d679-4bb4-4ff4-b640-3fc116609874.png", + "isIosAvailable": false, + "name": "1 Premium Pack", + "ownerOrganization": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406", + "name": "Parallel Studios", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-25T20:47:59.999Z", + "name": "1 Planetfall Pack", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-27T20:48:18Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "e818ad98-ad01-11ef-af83-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406_CUSTOM_ID_baseset_pack_1", + "createdAt": "2024-11-18T22:06:36.791Z", + "entitlementLimit": 1, + "game": { + "id": "1931912067", + "name": "Parallel", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/c9596293-7273-4320-a1ce-9fefed67bbb9.png", + "isIosAvailable": false, + "name": "1 Base Set Pack", + "ownerOrganization": { + "id": "d9a36789-3c7f-46db-b1c1-e1baf4033406", + "name": "Parallel Studios", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-25T20:47:59.999Z", + "name": "1 Base Set Pack", + "preconditionDrops": null, + "requiredMinutesWatched": 30, + "startAt": "2024-11-27T20:48:18Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "2aa993ab-a6f8-11ef-bcfa-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://act.hoyoverse.com/puzzle/bh3/pz_gg2nWmyfbo/index.html?game_biz=bh3_global&utm_source=web&utm_medium=twitchdrops", + "description": "Honkai Impact 3rd Drops", + "detailsURL": "https://act.hoyoverse.com/puzzle/bh3/pz_gg2nWmyfbo/index.html?game_biz=bh3_global&utm_source=web&utm_medium=twitchdrops", + "endAt": "2024-12-26T09:59:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "506230", + "slug": "honkai-impact-3rd", + "displayName": "Honkai Impact 3rd", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/7988589d-883e-4f26-9ff6-774a4b056f24.png", + "name": "V7.9 Special Drops", + "owner": { + "id": "4523e84a-450a-4ef5-8c6a-5f78706d1f0d", + "name": "Cognosphere", + "__typename": "Organization" + }, + "startAt": "2024-11-28T10:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "169a5b1d-a6fa-11ef-9a11-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "9f52cde0-6722-11ee-b4dd-0a58a9feac02", + "createdAt": "2023-10-10T04:08:09.461Z", + "entitlementLimit": 1, + "game": { + "id": "506230", + "name": "Honkai Impact 3rd", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/3bb9c19d-4d85-4cbb-b6c1-7f5cd0f120e2.jpeg", + "isIosAvailable": true, + "name": "Phase Shifter*1", + "ownerOrganization": { + "id": "4523e84a-450a-4ef5-8c6a-5f78706d1f0d", + "name": "Cognosphere", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-26T09:59:59.999Z", + "name": "2. Phase Shifter*1", + "preconditionDrops": null, + "requiredMinutesWatched": 30, + "startAt": "2024-11-28T10:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "25f3f768-a6fa-11ef-8a1d-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "ad3633c1-6722-11ee-a7e2-0a58a9feac02", + "createdAt": "2023-10-10T04:08:32.762Z", + "entitlementLimit": 1, + "game": { + "id": "506230", + "name": "Honkai Impact 3rd", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/7fd1b062-a6cf-4a95-a8bb-4c3e01e0661c.jpeg", + "isIosAvailable": true, + "name": "Asterite*1500", + "ownerOrganization": { + "id": "4523e84a-450a-4ef5-8c6a-5f78706d1f0d", + "name": "Cognosphere", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-26T09:59:59.999Z", + "name": "3. Asterite*1500", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-11-28T10:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "4e333570-a6fa-11ef-ab06-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "c106c1a4-be92-11ee-98b4-0a58a9feac02", + "createdAt": "2024-01-29T10:40:00.801Z", + "entitlementLimit": 1, + "game": { + "id": "506230", + "name": "Honkai Impact 3rd", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/59d90596-0bb4-4b35-8eca-73c1dda58212.jpeg", + "isIosAvailable": true, + "name": "Crystal*120", + "ownerOrganization": { + "id": "4523e84a-450a-4ef5-8c6a-5f78706d1f0d", + "name": "Cognosphere", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-26T09:59:59.999Z", + "name": "4. Crystal*120", + "preconditionDrops": null, + "requiredMinutesWatched": 180, + "startAt": "2024-11-28T10:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "7e24af93-a6f9-11ef-a2d5-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "94493555-6722-11ee-b2cb-0a58a9feac02", + "createdAt": "2023-10-10T04:07:50.943Z", + "entitlementLimit": 1, + "game": { + "id": "506230", + "name": "Honkai Impact 3rd", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/dcdebbe1-2c09-4831-a713-4c3fdbe512ad.jpeg", + "isIosAvailable": true, + "name": "Stamina Potion*1", + "ownerOrganization": { + "id": "4523e84a-450a-4ef5-8c6a-5f78706d1f0d", + "name": "Cognosphere", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-26T09:59:59.999Z", + "name": "1. Stamina Potion*1", + "preconditionDrops": null, + "requiredMinutesWatched": 15, + "startAt": "2024-11-28T10:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "59fe5410-e1e5-11ee-b407-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "1137681037", + "displayName": "fantasywrldddx", + "name": "fantasywrldddx", + "__typename": "Channel" + }, + { + "id": "950951506", + "displayName": "LouMieToons", + "name": "loumietoons", + "__typename": "Channel" + }, + { + "id": "171567729", + "displayName": "MiaGz", + "name": "miagz", + "__typename": "Channel" + }, + { + "id": "1000250474", + "displayName": "MISANTHROPE_TTV", + "name": "misanthrope_ttv", + "__typename": "Channel" + }, + { + "id": "189664311", + "displayName": "SEISHIRO_FPS", + "name": "seishiro_fps", + "__typename": "Channel" + }, + { + "id": "820946106", + "displayName": "budaliciouspeach", + "name": "budaliciouspeach", + "__typename": "Channel" + }, + { + "id": "641305102", + "displayName": "xRiqSBD", + "name": "xriqsbd", + "__typename": "Channel" + }, + { + "id": "627062267", + "displayName": "AlucardJay", + "name": "alucardjay", + "__typename": "Channel" + }, + { + "id": "109520178", + "displayName": "stubbornsnow", + "name": "stubbornsnow", + "__typename": "Channel" + }, + { + "id": "801604738", + "displayName": "SkeeznSteevn", + "name": "skeeznsteevn", + "__typename": "Channel" + }, + { + "id": "578624346", + "displayName": "Eto_Tony322", + "name": "eto_tony322", + "__typename": "Channel" + }, + { + "id": "119225647", + "displayName": "Jellyfinesse", + "name": "jellyfinesse", + "__typename": "Channel" + }, + { + "id": "443630582", + "displayName": "Fahr_Avayana", + "name": "fahr_avayana", + "__typename": "Channel" + }, + { + "id": "678526918", + "displayName": "JustH3rGaming", + "name": "justh3rgaming", + "__typename": "Channel" + }, + { + "id": "637647701", + "displayName": "at_iotam", + "name": "at_iotam", + "__typename": "Channel" + }, + { + "id": "245272404", + "displayName": "Vivid_k_", + "name": "vivid_k_", + "__typename": "Channel" + }, + { + "id": "1081595811", + "displayName": "toxiktweet", + "name": "toxiktweet", + "__typename": "Channel" + }, + { + "id": "799206912", + "displayName": "prettiopp", + "name": "prettiopp", + "__typename": "Channel" + }, + { + "id": "936990735", + "displayName": "vampIol", + "name": "vampiol", + "__typename": "Channel" + }, + { + "id": "1009845301", + "displayName": "kaazdreamthekid", + "name": "kaazdreamthekid", + "__typename": "Channel" + }, + { + "id": "902235463", + "displayName": "meow___x", + "name": "meow___x", + "__typename": "Channel" + }, + { + "id": "539098050", + "displayName": "Rikmeyzter_TTV", + "name": "rikmeyzter_ttv", + "__typename": "Channel" + }, + { + "id": "609412030", + "displayName": "CxMink", + "name": "cxmink", + "__typename": "Channel" + }, + { + "id": "45166786", + "displayName": "ThaWoundedFoxTTV", + "name": "thawoundedfoxttv", + "__typename": "Channel" + }, + { + "id": "29224841", + "displayName": "Khalior", + "name": "khalior", + "__typename": "Channel" + }, + { + "id": "1167030893", + "displayName": "snipehunt97", + "name": "snipehunt97", + "__typename": "Channel" + }, + { + "id": "518646412", + "displayName": "inferno_playttv", + "name": "inferno_playttv", + "__typename": "Channel" + }, + { + "id": "738309846", + "displayName": "DubzKitty", + "name": "dubzkitty", + "__typename": "Channel" + }, + { + "id": "1136410627", + "displayName": "MaMaMari_VT", + "name": "mamamari_vt", + "__typename": "Channel" + }, + { + "id": "541487375", + "displayName": "miro_miiii", + "name": "miro_miiii", + "__typename": "Channel" + }, + { + "id": "870739106", + "displayName": "WestSideeTae_TV", + "name": "westsideetae_tv", + "__typename": "Channel" + }, + { + "id": "513745984", + "displayName": "pocketpixxi", + "name": "pocketpixxi", + "__typename": "Channel" + }, + { + "id": "584267195", + "displayName": "jaborii", + "name": "jaborii", + "__typename": "Channel" + }, + { + "id": "616527522", + "displayName": "srirachaxprincess", + "name": "srirachaxprincess", + "__typename": "Channel" + }, + { + "id": "148834299", + "displayName": "Diliugan", + "name": "diliugan", + "__typename": "Channel" + }, + { + "id": "89199463", + "displayName": "JackTheTOY", + "name": "jackthetoy", + "__typename": "Channel" + }, + { + "id": "436434090", + "displayName": "perrceo11", + "name": "perrceo11", + "__typename": "Channel" + }, + { + "id": "425622022", + "displayName": "DirtyShiestyMan", + "name": "dirtyshiestyman", + "__typename": "Channel" + }, + { + "id": "923639736", + "displayName": "triada25", + "name": "triada25", + "__typename": "Channel" + }, + { + "id": "148061961", + "displayName": "unc1eimp", + "name": "unc1eimp", + "__typename": "Channel" + }, + { + "id": "531834726", + "displayName": "MedusaIV", + "name": "medusaiv", + "__typename": "Channel" + }, + { + "id": "214957492", + "displayName": "blackwitchtv", + "name": "blackwitchtv", + "__typename": "Channel" + }, + { + "id": "143846730", + "displayName": "CrystalShipTV", + "name": "crystalshiptv", + "__typename": "Channel" + }, + { + "id": "823454876", + "displayName": "jacofytb", + "name": "jacofytb", + "__typename": "Channel" + }, + { + "id": "541120636", + "displayName": "Blakthunda_Sama", + "name": "blakthunda_sama", + "__typename": "Channel" + }, + { + "id": "756824468", + "displayName": "EL3CTRiCWzRD", + "name": "el3ctricwzrd", + "__typename": "Channel" + }, + { + "id": "62620281", + "displayName": "EightEigths", + "name": "eighteigths", + "__typename": "Channel" + }, + { + "id": "688287094", + "displayName": "nvtrippy", + "name": "nvtrippy", + "__typename": "Channel" + }, + { + "id": "722155243", + "displayName": "TiiGwen", + "name": "tiigwen", + "__typename": "Channel" + }, + { + "id": "512549025", + "displayName": "MO7TES", + "name": "mo7tes", + "__typename": "Channel" + }, + { + "id": "146540394", + "displayName": "TheBrightSkull", + "name": "thebrightskull", + "__typename": "Channel" + }, + { + "id": "53579350", + "displayName": "Atrokinox", + "name": "atrokinox", + "__typename": "Channel" + }, + { + "id": "225824136", + "displayName": "OneMoorePlss", + "name": "onemooreplss", + "__typename": "Channel" + }, + { + "id": "211926069", + "displayName": "Shelbae", + "name": "shelbae", + "__typename": "Channel" + }, + { + "id": "148559372", + "displayName": "Yunie_tv", + "name": "yunie_tv", + "__typename": "Channel" + }, + { + "id": "162813004", + "displayName": "movementbuff", + "name": "movementbuff", + "__typename": "Channel" + }, + { + "id": "154391344", + "displayName": "conflores_tv", + "name": "conflores_tv", + "__typename": "Channel" + }, + { + "id": "168724647", + "displayName": "Unr3dyPlayerZer0", + "name": "unr3dyplayerzer0", + "__typename": "Channel" + }, + { + "id": "906737242", + "displayName": "yuttaris", + "name": "yuttaris", + "__typename": "Channel" + }, + { + "id": "616845081", + "displayName": "Slimbeezy86", + "name": "slimbeezy86", + "__typename": "Channel" + }, + { + "id": "556377257", + "displayName": "woodyo", + "name": "woodyo", + "__typename": "Channel" + }, + { + "id": "889186680", + "displayName": "tontonbenny76", + "name": "tontonbenny76", + "__typename": "Channel" + }, + { + "id": "661341193", + "displayName": "GhostofGotham1989", + "name": "ghostofgotham1989", + "__typename": "Channel" + }, + { + "id": "77217780", + "displayName": "Kaiizoru", + "name": "kaiizoru", + "__typename": "Channel" + }, + { + "id": "137216782", + "displayName": "D3adlySnake", + "name": "d3adlysnake", + "__typename": "Channel" + }, + { + "id": "479250524", + "displayName": "OweBiggs", + "name": "owebiggs", + "__typename": "Channel" + }, + { + "id": "691109063", + "displayName": "Bloodhuntgame", + "name": "bloodhuntgame", + "__typename": "Channel" + }, + { + "id": "187308665", + "displayName": "BlckGoddess", + "name": "blckgoddess", + "__typename": "Channel" + }, + { + "id": "1154778504", + "displayName": "icyTRIADA", + "name": "icytriada", + "__typename": "Channel" + }, + { + "id": "145981780", + "displayName": "sockzy", + "name": "sockzy", + "__typename": "Channel" + }, + { + "id": "479131227", + "displayName": "allloveandhate", + "name": "allloveandhate", + "__typename": "Channel" + }, + { + "id": "533019341", + "displayName": "t3uchman", + "name": "t3uchman", + "__typename": "Channel" + }, + { + "id": "566485454", + "displayName": "cam_u_toxic", + "name": "cam_u_toxic", + "__typename": "Channel" + }, + { + "id": "667601205", + "displayName": "Belasha2148", + "name": "belasha2148", + "__typename": "Channel" + }, + { + "id": "1028527041", + "displayName": "a_l_u_c_4_r_d1", + "name": "a_l_u_c_4_r_d1", + "__typename": "Channel" + }, + { + "id": "1013425686", + "displayName": "BalenciagaBat", + "name": "balenciagabat", + "__typename": "Channel" + }, + { + "id": "883091285", + "displayName": "Drooooooooooopy", + "name": "drooooooooooopy", + "__typename": "Channel" + }, + { + "id": "107040743", + "displayName": "xSwipeyx", + "name": "xswipeyx", + "__typename": "Channel" + }, + { + "id": "723607612", + "displayName": "captainhallamore", + "name": "captainhallamore", + "__typename": "Channel" + }, + { + "id": "745246075", + "displayName": "l0wes92", + "name": "l0wes92", + "__typename": "Channel" + }, + { + "id": "852590261", + "displayName": "Lukeup__", + "name": "lukeup__", + "__typename": "Channel" + }, + { + "id": "107851553", + "displayName": "RealAchion", + "name": "realachion", + "__typename": "Channel" + }, + { + "id": "670057393", + "displayName": "hooligan610", + "name": "hooligan610", + "__typename": "Channel" + }, + { + "id": "644078982", + "displayName": "AnxiousEva", + "name": "anxiouseva", + "__typename": "Channel" + }, + { + "id": "789691231", + "displayName": "etoilerougetv", + "name": "etoilerougetv", + "__typename": "Channel" + }, + { + "id": "502539273", + "displayName": "queenb267", + "name": "queenb267", + "__typename": "Channel" + }, + { + "id": "1031562126", + "displayName": "wiska___", + "name": "wiska___", + "__typename": "Channel" + }, + { + "id": "425720818", + "displayName": "chaosenti", + "name": "chaosenti", + "__typename": "Channel" + }, + { + "id": "545119891", + "displayName": "cocomielpro", + "name": "cocomielpro", + "__typename": "Channel" + }, + { + "id": "658968159", + "displayName": "AslinShenanigans", + "name": "aslinshenanigans", + "__typename": "Channel" + }, + { + "id": "73185672", + "displayName": "De_Irish", + "name": "de_irish", + "__typename": "Channel" + }, + { + "id": "219000737", + "displayName": "DBIGFOOT89", + "name": "dbigfoot89", + "__typename": "Channel" + }, + { + "id": "721016585", + "displayName": "szr730", + "name": "szr730", + "__typename": "Channel" + }, + { + "id": "139069623", + "displayName": "Neevee_o7", + "name": "neevee_o7", + "__typename": "Channel" + }, + { + "id": "1025474868", + "displayName": "vermilionn_ttv", + "name": "vermilionn_ttv", + "__typename": "Channel" + }, + { + "id": "30513577", + "displayName": "KitKait", + "name": "kitkait", + "__typename": "Channel" + }, + { + "id": "277116916", + "displayName": "Personne_143", + "name": "personne_143", + "__typename": "Channel" + }, + { + "id": "421058852", + "displayName": "SCARECRQ", + "name": "scarecrq", + "__typename": "Channel" + }, + { + "id": "793383071", + "displayName": "dimka_pollkillo_tv", + "name": "dimka_pollkillo_tv", + "__typename": "Channel" + }, + { + "id": "756504271", + "displayName": "treyster1991", + "name": "treyster1991", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://bloodhunt.com/sign-in", + "description": "Bloodhunt December Drops", + "detailsURL": "https://bloodhunt.com/twitchdrops", + "endAt": "2024-12-27T07:58:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "1411398523", + "slug": "vampire-the-masquerade-bloodhunt", + "displayName": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/99c28d49-27b8-4911-a3a0-a1f358a5f5bb.png", + "name": "Bloodhunt December Drops", + "owner": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "startAt": "2024-11-29T08:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "7c5d26ae-9b87-11ef-89b6-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100286", + "createdAt": "2023-09-20T14:09:56.123Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/befbdab6-bab9-4ae6-8034-b88ea6c9599a.png", + "isIosAvailable": false, + "name": "King", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100283", + "createdAt": "2023-09-20T14:17:32.44Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/bdade394-9d8c-41ef-bf33-5466a897a4e1.png", + "isIosAvailable": false, + "name": "Serpent", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100287", + "createdAt": "2023-09-20T14:20:08.682Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/c706ead9-4feb-42bf-97c2-7614e73ea0c5.png", + "isIosAvailable": false, + "name": "Renaissance", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100284", + "createdAt": "2023-09-20T14:24:16.359Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/75fc9b56-b07d-4419-9f80-d16880433f69.png", + "isIosAvailable": false, + "name": "Snake n bones", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100291", + "createdAt": "2023-09-20T14:22:03.385Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/e3f85671-e0e7-4a84-9541-107a953657e3.png", + "isIosAvailable": false, + "name": "Blue Margin", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100289", + "createdAt": "2023-09-20T13:45:17.57Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/9d8fe194-e142-44db-854c-af79f969d037.png", + "isIosAvailable": false, + "name": "Anti-Zen", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100277", + "createdAt": "2023-09-20T14:20:58.745Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/d6ce9484-e82d-453d-8b65-863891c2cd24.png", + "isIosAvailable": false, + "name": "Mercy", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100278", + "createdAt": "2023-09-20T14:07:10.531Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/13e34110-0d44-4b81-a8e9-6cb9778a0c52.png", + "isIosAvailable": false, + "name": "Desert Night", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_100267", + "createdAt": "2023-09-20T13:42:44.427Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/c6a2624f-7916-41a7-a4d9-dd09dfa5b60b.png", + "isIosAvailable": false, + "name": "Winter Zen", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + }, + { + "benefit": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea_CUSTOM_ID_release_20022", + "createdAt": "2023-09-20T14:01:27.62Z", + "entitlementLimit": 1, + "game": { + "id": "1411398523", + "name": "Vampire: The Masquerade - Bloodhunt", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/feab3b6f-fa13-4e0f-a851-453332a02e04.png", + "isIosAvailable": false, + "name": "Onyx Tears", + "ownerOrganization": { + "id": "a321e9d3-98dc-4c7a-9c72-c6e9627ad4ea", + "name": "Sharkmob", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-27T07:58:59.999Z", + "name": "December Drops", + "preconditionDrops": null, + "requiredMinutesWatched": 240, + "startAt": "2024-11-29T08:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 73, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "1a8f863d-a922-11ef-a552-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://rewards.pokemon.com/", + "description": "Watch any channel with Drops enabled streaming to the Pok\u00e9mon UNITE category on Twitch for 15 minutes and earn two special gifts: Holowear Selection Box (Holiday) and a free Gift Pack! Redeem in-game by 2025/1/1 23:59 UTC. The promotion will continue until the end of December on a separate campaign due to Twitch's limitations on Drops campaign length (max 28 days). FAQ: pkmn.news/PokemonDrops", + "detailsURL": "https://rewards.pokemon.com/", + "endAt": "2024-12-29T07:58:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "518379", + "slug": "pokemon-unite", + "displayName": "Pok\u00e9mon UNITE", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/4a8a55ae-0a1f-4391-9c5c-4ef7a5613ed2.png", + "name": "Pok\u00e9mon Unite Holiday #1", + "owner": { + "id": "36c4e21d-bdf3-410c-97c3-5a5a4bf1399b", + "name": "The Pok\u00e9mon Company", + "__typename": "Organization" + }, + "startAt": "2024-12-01T08:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "361ea09f-a922-11ef-bc1d-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "d2d6dcdc-a91d-11ef-a778-0a58a9feac02", + "createdAt": "2024-11-22T22:05:02.821Z", + "entitlementLimit": 1, + "game": { + "id": "518379", + "name": "Pok\u00e9mon UNITE", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/15ce55a0-45d9-4b05-914c-e3c86e0db79e.png", + "isIosAvailable": false, + "name": "Holowear Selection Box", + "ownerOrganization": { + "id": "36c4e21d-bdf3-410c-97c3-5a5a4bf1399b", + "name": "The Pok\u00e9mon Company", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-29T07:58:59.999Z", + "name": "Holowear Selection Box (Holiday)", + "preconditionDrops": null, + "requiredMinutesWatched": 15, + "startAt": "2024-12-01T08:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 76, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "26498cbb-b104-11ef-8d06-0a58a9feac02", + "self": { + "isAccountConnected": false, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "28643168", + "displayName": "Razi_the_Insane", + "name": "razi_the_insane", + "__typename": "Channel" + }, + { + "id": "41690393", + "displayName": "Deepnausea", + "name": "deepnausea", + "__typename": "Channel" + }, + { + "id": "561745365", + "displayName": "Hurrvs", + "name": "hurrvs", + "__typename": "Channel" + }, + { + "id": "403819305", + "displayName": "Azenev", + "name": "azenev", + "__typename": "Channel" + }, + { + "id": "759545195", + "displayName": "TaigaTigerVT", + "name": "taigatigervt", + "__typename": "Channel" + }, + { + "id": "430717907", + "displayName": "Combine03", + "name": "combine03", + "__typename": "Channel" + }, + { + "id": "28628646", + "displayName": "Daemoniic", + "name": "daemoniic", + "__typename": "Channel" + }, + { + "id": "144762948", + "displayName": "NewTypeBTW", + "name": "newtypebtw", + "__typename": "Channel" + }, + { + "id": "175684163", + "displayName": "ImJustJun", + "name": "imjustjun", + "__typename": "Channel" + }, + { + "id": "41376469", + "displayName": "Ferlinna", + "name": "ferlinna", + "__typename": "Channel" + }, + { + "id": "88910745", + "displayName": "Geruhn", + "name": "geruhn", + "__typename": "Channel" + }, + { + "id": "26047850", + "displayName": "Sequenss", + "name": "sequenss", + "__typename": "Channel" + }, + { + "id": "107921718", + "displayName": "KanakoVT", + "name": "kanakovt", + "__typename": "Channel" + }, + { + "id": "176866513", + "displayName": "DaveeBoy", + "name": "daveeboy", + "__typename": "Channel" + }, + { + "id": "95845964", + "displayName": "NerdrageFred", + "name": "nerdragefred", + "__typename": "Channel" + }, + { + "id": "112330991", + "displayName": "FuPlaayz", + "name": "fuplaayz", + "__typename": "Channel" + }, + { + "id": "190708734", + "displayName": "Altair", + "name": "altair", + "__typename": "Channel" + }, + { + "id": "837026145", + "displayName": "JamesAlexanderVA", + "name": "jamesalexanderva", + "__typename": "Channel" + }, + { + "id": "67024207", + "displayName": "MoopShark", + "name": "moopshark", + "__typename": "Channel" + }, + { + "id": "144657609", + "displayName": "Ollessa", + "name": "ollessa", + "__typename": "Channel" + }, + { + "id": "51815168", + "displayName": "FatsharkGames", + "name": "fatsharkgames", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://accounts.atoma.cloud/twitch-drops", + "description": "Twitch drops for the Protector of Tertium skins for the Spearhead Boltgun, Shock Maul, Combat Blade, and Twin-Linked Heavy Stubber. \nFollow the instructions below to unlock \n1. Go to https://accounts.atoma.cloud/twitch-drops and sign in to your Steam/PSN/ Windows PC/XBOX account. 2. Here please link your Darktide account with your Twitch account. \n3. Once linked, start watching a participating channel to unlock the rewards! ", + "detailsURL": "https://www.playdarktide.com/news/earn-twitch-drops", + "endAt": "2024-12-31T17:59:59.998Z", + "eventBasedDrops": [], + "game": { + "id": "518873", + "slug": "warhammer-40-000-darktide", + "displayName": "Warhammer 40,000: Darktide", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/bce02191-7c67-48a0-8945-ff6e8628c092.jpeg", + "name": "Protector of Tertium", + "owner": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4", + "name": "Fatshark", + "__typename": "Organization" + }, + "startAt": "2024-12-03T18:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "60831b9c-b188-11ef-a781-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4_CUSTOM_ID_584e92f0-3131-4e44-960f-aaf0c6d55b55_c2a9efa3-212a-4b98-acf5-77a6fa56c942", + "createdAt": "2024-12-03T15:05:35.969Z", + "entitlementLimit": 1, + "game": { + "id": "518873", + "name": "Warhammer 40,000: Darktide", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/f094b41a-102c-43f7-b9b5-e3d35725d84d.png", + "isIosAvailable": false, + "name": "Shock Maul", + "ownerOrganization": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4", + "name": "Fatshark", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.998Z", + "name": "Shock Maul", + "preconditionDrops": null, + "requiredMinutesWatched": 20, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "6db30c9a-b188-11ef-9065-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4_CUSTOM_ID_584e92f0-3131-4e44-960f-aaf0c6d55b55_ca51e175-8e02-4ddf-a744-88581de31382", + "createdAt": "2024-12-03T15:06:08.325Z", + "entitlementLimit": 1, + "game": { + "id": "518873", + "name": "Warhammer 40,000: Darktide", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/6bbc6c9d-e776-4e41-b27f-adc2e7034538.png", + "isIosAvailable": false, + "name": "Combat Blade", + "ownerOrganization": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4", + "name": "Fatshark", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.998Z", + "name": "Combat Blade", + "preconditionDrops": null, + "requiredMinutesWatched": 45, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "732e2592-b104-11ef-a25c-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4_CUSTOM_ID_584e92f0-3131-4e44-960f-aaf0c6d55b55_e21e7ed0-1c93-4ab0-8212-72058af302e6", + "createdAt": "2024-12-03T15:05:00.864Z", + "entitlementLimit": 1, + "game": { + "id": "518873", + "name": "Warhammer 40,000: Darktide", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/a68392e9-a005-4e6c-bd08-8b11d888f968.png", + "isIosAvailable": false, + "name": "Spearhead Boltgun", + "ownerOrganization": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4", + "name": "Fatshark", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.998Z", + "name": "Spearhead Boltgun", + "preconditionDrops": null, + "requiredMinutesWatched": 30, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "7d3d8cbe-b188-11ef-a43a-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4_CUSTOM_ID_584e92f0-3131-4e44-960f-aaf0c6d55b55_a2c9fdb7-de23-4774-b830-69a53f982160", + "createdAt": "2024-12-03T15:06:42.786Z", + "entitlementLimit": 1, + "game": { + "id": "518873", + "name": "Warhammer 40,000: Darktide", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/9417199a-914d-4779-9648-8d33f4521ed3.png", + "isIosAvailable": false, + "name": "Twin-Linked Heavy Stubber", + "ownerOrganization": { + "id": "8b65e332-9430-4b49-a064-b7c4913c82e4", + "name": "Fatshark", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.998Z", + "name": "Twin-Linked Heavy Stubber", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 72, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "80c82556-b0a4-11ef-9b21-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://twitch.frontierstore.net/elite", + "description": "Earn various Snowfall Holly paintjobs by watching any participating streams of Elite Dangerous!", + "detailsURL": "https://twitch.frontierstore.net/elite", + "endAt": "2024-12-31T17:59:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "80607", + "slug": "elite-dangerous", + "displayName": "Elite: Dangerous", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/dcbc733d-cc80-468f-bd9b-a50c547139ee.jpeg", + "name": "Festive Drops\t", + "owner": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "startAt": "2024-12-03T18:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "a7d9875b-b0a4-11ef-afcb-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2_CUSTOM_ID_FORC_FDEV_V_KRAIT_LITE_1224", + "createdAt": "2024-12-02T10:29:54.982Z", + "entitlementLimit": 1, + "game": { + "id": "80607", + "name": "Elite: Dangerous", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/c314e30c-2011-46ea-a4e7-4cf96564e895.jpeg", + "isIosAvailable": false, + "name": "Krait Snowfall Holly", + "ownerOrganization": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.999Z", + "name": "Krait Phantom Snowfall Holly", + "preconditionDrops": null, + "requiredMinutesWatched": 30, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "ae1f2bb7-b0a4-11ef-a790-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2_CUSTOM_ID_FORC_FDEV_V_TYPE9_1120", + "createdAt": "2024-12-02T10:30:09.222Z", + "entitlementLimit": 1, + "game": { + "id": "80607", + "name": "Elite: Dangerous", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/5c2d17c4-a69e-4920-8564-29a2b4c65c71.jpeg", + "isIosAvailable": false, + "name": "Type-9 Snowfall Holly", + "ownerOrganization": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.999Z", + "name": "Type-9 Snowfall Holly", + "preconditionDrops": null, + "requiredMinutesWatched": 90, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 62, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "b0ddc5e4-b09d-11ef-b012-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": [ + { + "id": "148936441", + "displayName": "BossLadyB", + "name": "bossladyb", + "__typename": "Channel" + }, + { + "id": "92779536", + "displayName": "Brother_Sabathius", + "name": "brother_sabathius", + "__typename": "Channel" + }, + { + "id": "218182870", + "displayName": "CaptainFlint", + "name": "captainflint", + "__typename": "Channel" + }, + { + "id": "146479118", + "displayName": "CMDRAscorbius", + "name": "cmdrascorbius", + "__typename": "Channel" + }, + { + "id": "238208253", + "displayName": "CmdrOrangePheonix", + "name": "cmdrorangepheonix", + "__typename": "Channel" + }, + { + "id": "113447505", + "displayName": "CrispyTaytortot", + "name": "crispytaytortot", + "__typename": "Channel" + }, + { + "id": "66535736", + "displayName": "Father_Bill", + "name": "father_bill", + "__typename": "Channel" + }, + { + "id": "137853262", + "displayName": "huttonorbitaltruckers", + "name": "huttonorbitaltruckers", + "__typename": "Channel" + }, + { + "id": "40760786", + "displayName": "Malic_VR", + "name": "malic_vr", + "__typename": "Channel" + }, + { + "id": "667089288", + "displayName": "NinjaSpaceUnicorn", + "name": "ninjaspaceunicorn", + "__typename": "Channel" + }, + { + "id": "42849214", + "displayName": "Psyche", + "name": "psyche", + "__typename": "Channel" + }, + { + "id": "61828658", + "displayName": "psykit", + "name": "psykit", + "__typename": "Channel" + }, + { + "id": "74485261", + "displayName": "roots_rat", + "name": "roots_rat", + "__typename": "Channel" + }, + { + "id": "177391075", + "displayName": "Super_Chicken", + "name": "super_chicken", + "__typename": "Channel" + }, + { + "id": "52849674", + "displayName": "UnusualCupcake", + "name": "unusualcupcake", + "__typename": "Channel" + }, + { + "id": "174815727", + "displayName": "Eralm_237", + "name": "eralm_237", + "__typename": "Channel" + }, + { + "id": "143096099", + "displayName": "SeleneStardragon", + "name": "selenestardragon", + "__typename": "Channel" + }, + { + "id": "75089244", + "displayName": "CMDRHatch", + "name": "cmdrhatch", + "__typename": "Channel" + }, + { + "id": "43229781", + "displayName": "FireyToad", + "name": "fireytoad", + "__typename": "Channel" + }, + { + "id": "80027592", + "displayName": "Barnardo7_", + "name": "barnardo7_", + "__typename": "Channel" + }, + { + "id": "432089628", + "displayName": "Nikki_Dangerous", + "name": "nikki_dangerous", + "__typename": "Channel" + }, + { + "id": "172568335", + "displayName": "Azghaaar", + "name": "azghaaar", + "__typename": "Channel" + }, + { + "id": "405125471", + "displayName": "OrbitalJeffo", + "name": "orbitaljeffo", + "__typename": "Channel" + }, + { + "id": "73565932", + "displayName": "LexLagger", + "name": "lexlagger", + "__typename": "Channel" + }, + { + "id": "122985926", + "displayName": "LtPsych", + "name": "ltpsych", + "__typename": "Channel" + }, + { + "id": "76946199", + "displayName": "LaveRadio", + "name": "laveradio", + "__typename": "Channel" + }, + { + "id": "59690386", + "displayName": "BCLV4", + "name": "bclv4", + "__typename": "Channel" + }, + { + "id": "86834020", + "displayName": "CashiotVR", + "name": "cashiotvr", + "__typename": "Channel" + }, + { + "id": "75774003", + "displayName": "RicardosGaming71", + "name": "ricardosgaming71", + "__typename": "Channel" + }, + { + "id": "106672398", + "displayName": "MiniCeleste", + "name": "miniceleste", + "__typename": "Channel" + }, + { + "id": "827820846", + "displayName": "StarGoid", + "name": "stargoid", + "__typename": "Channel" + }, + { + "id": "140868804", + "displayName": "TheStarCat70", + "name": "thestarcat70", + "__typename": "Channel" + }, + { + "id": "749128767", + "displayName": "Just_Mainer", + "name": "just_mainer", + "__typename": "Channel" + }, + { + "id": "622297286", + "displayName": "BristolBoyGaming", + "name": "bristolboygaming", + "__typename": "Channel" + }, + { + "id": "679086543", + "displayName": "TheOlderGamerAU", + "name": "theoldergamerau", + "__typename": "Channel" + }, + { + "id": "531930111", + "displayName": "RPGEmmaB", + "name": "rpgemmab", + "__typename": "Channel" + }, + { + "id": "649560653", + "displayName": "RainmanGames", + "name": "rainmangames", + "__typename": "Channel" + }, + { + "id": "32962934", + "displayName": "Elev8rMusic", + "name": "elev8rmusic", + "__typename": "Channel" + }, + { + "id": "160712175", + "displayName": "CmdrAndrewJohnson", + "name": "cmdrandrewjohnson", + "__typename": "Channel" + }, + { + "id": "733642671", + "displayName": "dss_lev", + "name": "dss_lev", + "__typename": "Channel" + }, + { + "id": "107378211", + "displayName": "MalForTheWin", + "name": "malforthewin", + "__typename": "Channel" + }, + { + "id": "179521052", + "displayName": "KayteeKhaos", + "name": "kayteekhaos", + "__typename": "Channel" + }, + { + "id": "184398905", + "displayName": "Sciencekeeper", + "name": "sciencekeeper", + "__typename": "Channel" + }, + { + "id": "42830295", + "displayName": "Stormseeker79", + "name": "stormseeker79", + "__typename": "Channel" + } + ], + "isEnabled": true, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://twitch.frontierstore.net/elite", + "description": "Earn various Snowfall Holly paintjobs by watching streams from members of the Elite Partner Program!", + "detailsURL": "https://twitch.frontierstore.net/elite", + "endAt": "2024-12-31T17:59:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "80607", + "slug": "elite-dangerous", + "displayName": "Elite: Dangerous", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/0a5720cc-334f-423d-8a49-c9338d06a197.jpeg", + "name": "EPP Festive Drops", + "owner": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "startAt": "2024-12-03T18:00:00Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "24ad2411-b0a3-11ef-9cb0-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2_CUSTOM_ID_FORC_FDEV_V_ANACONDA_1259", + "createdAt": "2024-12-02T10:28:50.479Z", + "entitlementLimit": 1, + "game": { + "id": "80607", + "name": "Elite: Dangerous", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/ee0168b4-3fb5-4b26-867d-a48b250941cf.jpeg", + "isIosAvailable": false, + "name": "Anaconda Snowfall Holly", + "ownerOrganization": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.999Z", + "name": "Anaconda Snowfall Holly", + "preconditionDrops": null, + "requiredMinutesWatched": 15, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + }, + { + "id": "2eaf1528-b0a3-11ef-afcb-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2_CUSTOM_ID_FORC_FDEV_V_DIAMOND_EXPLORER_1126", + "createdAt": "2024-12-02T10:29:25.12Z", + "entitlementLimit": 1, + "game": { + "id": "80607", + "name": "Elite: Dangerous", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/1182f2e4-b2c4-4e2a-8bf0-01c0eddbb676.jpeg", + "isIosAvailable": false, + "name": "DBX Snowfall Holly", + "ownerOrganization": { + "id": "209d1866-cf8e-429d-90b8-8349fdf4edd2", + "name": "Frontier Developments", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T17:59:59.999Z", + "name": "Diamondback Explorer Snowfall Holly", + "preconditionDrops": null, + "requiredMinutesWatched": 60, + "startAt": "2024-12-03T18:00:00Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + }, + "extensions": { + "durationMilliseconds": 73, + "operationName": "DropCampaignDetails", + "requestID": "01JEPA0B4H5P0G4APY532A0EYH" + } + }, + { + "data": { + "user": { + "id": "17658559", + "dropCampaign": { + "id": "a06e0cf9-b3f9-11ef-b32c-0a58a9feac02", + "self": { + "isAccountConnected": true, + "__typename": "DropCampaignSelfEdge" + }, + "allow": { + "channels": null, + "isEnabled": false, + "__typename": "DropCampaignACL" + }, + "accountLinkURL": "https://civilization.2k.com/twitch-drops/", + "description": "Watch Civ Streams from the Firaxis Twitch channel to earn rewards! Watch for 15 mins and claim the reward: Exploration Age Banner.", + "detailsURL": "https://civilization.2k.com/twitch-drops/", + "endAt": "2024-12-31T23:29:59.999Z", + "eventBasedDrops": [], + "game": { + "id": "414822821", + "slug": "sid-meiers-civilization-vii", + "displayName": "Sid Meier's Civilization VII", + "__typename": "Game" + }, + "imageURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/CAMPAIGN/ca880af1-7865-45e0-b6c1-99c2fe8f1462.png", + "name": "Exploration Age Banner", + "owner": { + "id": "e91851f4-7a94-4f97-a9f8-eb4c93bf7616", + "name": "2K Games", + "__typename": "Organization" + }, + "startAt": "2024-12-06T17:42:45Z", + "status": "ACTIVE", + "timeBasedDrops": [ + { + "id": "b98bb99e-b3f9-11ef-a86d-0a58a9feac02", + "requiredSubs": 0, + "benefitEdges": [ + { + "benefit": { + "id": "e91851f4-7a94-4f97-a9f8-eb4c93bf7616_CUSTOM_ID_7174b383242f4d63a0f7a311533096d1", + "createdAt": "2024-10-21T23:50:40.376Z", + "entitlementLimit": 1, + "game": { + "id": "414822821", + "name": "Sid Meier's Civilization VII", + "__typename": "Game" + }, + "imageAssetURL": "https://static-cdn.jtvnw.net/twitch-quests-assets/REWARD/7838774e-53b1-4b0d-b2c1-247cc36a7e7c.png", + "isIosAvailable": false, + "name": "Exploration Age Banner", + "ownerOrganization": { + "id": "e91851f4-7a94-4f97-a9f8-eb4c93bf7616", + "name": "2K Games", + "__typename": "Organization" + }, + "distributionType": "DIRECT_ENTITLEMENT", + "__typename": "DropBenefit" + }, + "entitlementLimit": 1, + "__typename": "DropBenefitEdge" + } + ], + "endAt": "2024-12-31T23:29:59.999Z", + "name": "Exploration Age Banner", + "preconditionDrops": null, + "requiredMinutesWatched": 15, + "startAt": "2024-12-06T17:42:45Z", + "__typename": "TimeBasedDrop" + } + ], + "__typename": "DropCampaign" + }, + "__typename": "User" + } + } + } +] diff --git a/core/tests/views_test.py b/core/tests/views_test.py index 547f895..214d107 100644 --- a/core/tests/views_test.py +++ b/core/tests/views_test.py @@ -1,13 +1,15 @@ """Tests for the views in the core app.""" +from __future__ import annotations + from typing import TYPE_CHECKING import pytest from django.http import HttpResponse -from django.test import Client from django.urls import reverse if TYPE_CHECKING: + from django.test import Client from django.test.client import _MonkeyPatchedWSGIResponse # type: ignore[import] diff --git a/core/urls.py b/core/urls.py index f952f96..62d722b 100644 --- a/core/urls.py +++ b/core/urls.py @@ -4,7 +4,7 @@ from debug_toolbar.toolbar import debug_toolbar_urls # type: ignore[import-unty from django.contrib import admin from django.urls import URLPattern, URLResolver, path -from core.views import game_view, games_view, index +from core.views import get_game, get_games, get_home, get_import app_name: str = "core" @@ -32,8 +32,9 @@ app_name: str = "core" # The URL patterns for the core app. urlpatterns: list[URLPattern | URLResolver] = [ path(route="admin/", view=admin.site.urls), - path(route="", view=index, name="index"), - path(route="game//", view=game_view, name="game"), - path(route="games/", view=games_view, name="games"), + path(route="", view=get_home, name="index"), + path(route="game//", view=get_game, name="game"), + path(route="games/", view=get_games, name="games"), + path(route="import/", view=get_import, name="import"), *debug_toolbar_urls(), ] diff --git a/core/views.py b/core/views.py index 7595c76..209ab39 100644 --- a/core/views.py +++ b/core/views.py @@ -1,13 +1,16 @@ from __future__ import annotations +import json import logging from typing import TYPE_CHECKING, Any from django.db.models import F, Prefetch -from django.http import HttpRequest, HttpResponse +from django.http import HttpRequest, HttpResponse, JsonResponse from django.template.response import TemplateResponse from django.utils import timezone +from django.views.decorators.http import require_http_methods +from core.import_json import import_data_from_view from core.models import Benefit, DropCampaign, Game, TimeBasedDrop if TYPE_CHECKING: @@ -47,7 +50,8 @@ def get_games_with_drops() -> QuerySet[Game]: ) -def index(request: HttpRequest) -> HttpResponse: +@require_http_methods(request_method_list=["GET", "HEAD"]) +def get_home(request: HttpRequest) -> HttpResponse: """Render the index page. Args: @@ -58,18 +62,16 @@ def index(request: HttpRequest) -> HttpResponse: """ try: games: QuerySet[Game] = get_games_with_drops() - except Exception: logger.exception("Error fetching reward campaigns or games.") return HttpResponse(status=500) - context: dict[str, Any] = { - "games": games, - } + context: dict[str, Any] = {"games": games} return TemplateResponse(request, "index.html", context) -def game_view(request: HttpRequest, twitch_id: int) -> HttpResponse: +@require_http_methods(request_method_list=["GET", "HEAD"]) +def get_game(request: HttpRequest, twitch_id: int) -> HttpResponse: """Render the game view page. Args: @@ -101,7 +103,8 @@ def game_view(request: HttpRequest, twitch_id: int) -> HttpResponse: return TemplateResponse(request=request, template="game.html", context=context) -def games_view(request: HttpRequest) -> HttpResponse: +@require_http_methods(request_method_list=["GET", "HEAD"]) +def get_games(request: HttpRequest) -> HttpResponse: """Render the game view page. Args: @@ -114,3 +117,25 @@ def games_view(request: HttpRequest) -> HttpResponse: context: dict[str, QuerySet[Game] | str] = {"games": games} return TemplateResponse(request=request, template="games.html", context=context) + + +@require_http_methods(request_method_list=["POST"]) +def get_import(request: HttpRequest) -> HttpResponse: + """Import data that are sent from Twitch Drop Miner. + + Args: + request (HttpRequest): The request object. + + Returns: + HttpResponse: The response object. + """ + try: + data = json.loads(request.body) + logger.info(data) + + # Import the data. + import_data_from_view(data) + + return JsonResponse({"status": "success"}, status=200) + except json.JSONDecodeError as e: + return JsonResponse({"status": "error", "message": str(e)}, status=400) diff --git a/core/wsgi.py b/core/wsgi.py index 374ccdb..fd272d2 100644 --- a/core/wsgi.py +++ b/core/wsgi.py @@ -1,8 +1,13 @@ -import os +from __future__ import annotations + +import os +from typing import TYPE_CHECKING -from django.core.handlers.wsgi import WSGIHandler from django.core.wsgi import get_wsgi_application +if TYPE_CHECKING: + from django.core.handlers.wsgi import WSGIHandler + os.environ.setdefault(key="DJANGO_SETTINGS_MODULE", value="core.settings") application: WSGIHandler = get_wsgi_application() diff --git a/manage.py b/manage.py index 389052f..9cb1533 100755 --- a/manage.py +++ b/manage.py @@ -1,6 +1,8 @@ #!/usr/bin/env python """Django's command-line utility for administrative tasks.""" +from __future__ import annotations + import os import sys diff --git a/pyproject.toml b/pyproject.toml index 6f7cba6..9f73b42 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -27,6 +27,9 @@ lint.select = ["ALL"] # https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_google.html lint.pydocstyle.convention = "google" +# Add "from __future__ import annotations" to all files +lint.isort.required-imports = ["from __future__ import annotations"] + # Ignore some rules lint.ignore = [ "CPY001", # Checks for the absence of copyright notices within Python files.