blob: 9ecad6073c71563d11afdaec78bb886e5c07f330 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
from webapi.web_api import WebAPI
class HolodexAPI(WebAPI):
"""
Class for interacting with the Holodex API
"""
def __init__(self, api_key: str = None, member_count: int = 300,
organization: str = "Nijisanji"):
super().__init__(api_key = api_key, base_url = "https://holodex.net/api/v2/")
self.member_count = member_count
self.organization = organization
self._inactive_channels = []
def get_data_all_channels(self) -> list:
"""
Gets data for all channels in a particular organization
"""
members = self.member_count
data = []
filtered_data = []
offset = 0
while members > 0:
data += self._download_url(
f"channels?type=vtuber&offset={offset}&limit=100&org={self.organization}")
members -= 100
offset += 100
for channel in data:
if channel['inactive'] is False:
channel['description'] = self.get_channel_description(channel['id'])
filtered_data.append(channel)
else:
self._inactive_channels.append(channel['id'])
return filtered_data
def get_exclude_channels(self) -> list:
"""
Gets the list of excluded channels
"""
return self._inactive_channels
def get_view_count(self, channel_id: str) -> int:
"""
Gets the view count for a particular channel
"""
data = self._download_url(f"channels/{channel_id}")
return data['view_count']
def get_channel_description(self, channel_id: str) -> str:
"""
Gets the description for a particular channel
"""
data = self._download_url(f"channels/{channel_id}")
return data['description']
|