pypetkitapi 0.2.1__py3-none-any.whl → 0.4.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
pypetkitapi/client.py CHANGED
@@ -101,18 +101,24 @@ class PetKitClient:
101
101
  await self._get_api_server_list()
102
102
  _LOGGER.debug("Finding region server for region: %s", self.region)
103
103
 
104
+ # TODO : Improve this
105
+ if self.region == "china":
106
+ self._base_url = PetkitURL.CHINA_SRV
107
+ return
108
+
104
109
  regional_server = next(
105
110
  (
106
111
  server
107
112
  for server in self._servers_list
108
113
  if server.name.lower() == self.region
114
+ or server.id.lower() == self.region
109
115
  ),
110
116
  None,
111
117
  )
112
118
 
113
119
  if regional_server:
114
120
  _LOGGER.debug(
115
- "Found server %s for region : %s", regional_server, self.region
121
+ "Using server %s for region : %s", regional_server, self.region
116
122
  )
117
123
  self._base_url = regional_server.gateway
118
124
  return
pypetkitapi/command.py CHANGED
@@ -160,10 +160,10 @@ class CmdData:
160
160
  def get_endpoint_manual_feed(device):
161
161
  """Get the endpoint for the device"""
162
162
  if device.device_type == FEEDER_MINI:
163
- return PetkitEndpoint.MINI_MANUAL_FEED
163
+ return PetkitEndpoint.MANUAL_FEED_MINI
164
164
  if device.device_type == FEEDER:
165
- return PetkitEndpoint.FRESH_ELEMENT_MANUAL_FEED
166
- return PetkitEndpoint.MANUAL_FEED
165
+ return PetkitEndpoint.MANUAL_FEED_FRESH_ELEMENT
166
+ return PetkitEndpoint.MANUAL_FEED_DUAL
167
167
 
168
168
 
169
169
  def get_endpoint_reset_desiccant(device):
@@ -195,7 +195,7 @@ ACTIONS_MAP = {
195
195
  supported_device=DEVICES_FEEDER, # TODO: Check if this is correct
196
196
  ),
197
197
  FeederCommand.MANUAL_FEED_DUAL: CmdData(
198
- endpoint=PetkitEndpoint.UPDATE_SETTING,
198
+ endpoint=PetkitEndpoint.MANUAL_FEED_DUAL,
199
199
  params=lambda device, setting: {
200
200
  "day": datetime.datetime.now().strftime("%Y%m%d"),
201
201
  "deviceId": device.id,
@@ -203,7 +203,7 @@ ACTIONS_MAP = {
203
203
  "time": "-1",
204
204
  **setting,
205
205
  },
206
- supported_device=ALL_DEVICES,
206
+ supported_device=[D4S, D4SH],
207
207
  ),
208
208
  FeederCommand.CANCEL_MANUAL_FEED: CmdData(
209
209
  endpoint=lambda device: (
pypetkitapi/const.py CHANGED
@@ -35,6 +35,7 @@ class PetkitURL(StrEnum):
35
35
  """Petkit URL constants"""
36
36
 
37
37
  REGION_SRV = "https://passport.petkt.com/v1/regionservers"
38
+ CHINA_SRV = "https://api.petkit.cn/6/"
38
39
 
39
40
 
40
41
  class Client(StrEnum):
@@ -107,6 +108,6 @@ class PetkitEndpoint(StrEnum):
107
108
  FRESH_ELEMENT_DESICCANT_RESET = "feeder/desiccant_reset"
108
109
  CALL_PET = "callPet"
109
110
  CANCEL_FEED = "cancelRealtimeFeed"
110
- MINI_MANUAL_FEED = "feedermini/save_dailyfeed"
111
- FRESH_ELEMENT_MANUAL_FEED = "feeder/save_dailyfeed"
112
- MANUAL_FEED = "saveDailyFeed"
111
+ MANUAL_FEED_MINI = "feedermini/save_dailyfeed"
112
+ MANUAL_FEED_FRESH_ELEMENT = "feeder/save_dailyfeed"
113
+ MANUAL_FEED_DUAL = "saveDailyFeed"
pypetkitapi/containers.py CHANGED
@@ -26,7 +26,7 @@ class SessionInfo(BaseModel):
26
26
  id: str
27
27
  user_id: str = Field(alias="userId")
28
28
  expires_in: int = Field(alias="expiresIn")
29
- region: str
29
+ region: str | None = None
30
30
  created_at: str = Field(alias="createdAt")
31
31
 
32
32
 
pypetkitapi/exceptions.py CHANGED
@@ -22,8 +22,8 @@ class PetkitRegionalServerNotFoundError(PypetkitError):
22
22
  """Initialize the exception."""
23
23
  self.region = region
24
24
  self.message = (
25
- f"Region you provided: '{region}' was not found in the server list. "
26
- f"Are you sure you provided the correct region?"
25
+ f"Region you provided: '{region}' was not found in the Petkit's server list. "
26
+ f"Are you sure you provided the correct region ?"
27
27
  )
28
28
  super().__init__(self.message)
29
29
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pypetkitapi
3
- Version: 0.2.1
3
+ Version: 0.4.0
4
4
  Summary: Python client for PetKit API
5
5
  Home-page: https://github.com/Jezza34000/pypetkit
6
6
  License: MIT
@@ -19,10 +19,6 @@ Description-Content-Type: text/markdown
19
19
 
20
20
  ---
21
21
 
22
- # WIP - UNDER DEVELOPMENT
23
-
24
- ---
25
-
26
22
  [![PyPI](https://img.shields.io/pypi/v/pypetkitapi.svg)][pypi_]
27
23
  [![Python Version](https://img.shields.io/pypi/pyversions/pypetkitapi)][python version]
28
24
 
@@ -72,29 +68,29 @@ logging.basicConfig(level=logging.DEBUG)
72
68
 
73
69
  async def main():
74
70
  client = PetKitClient(
75
- username="username", # Your PetKit account username
71
+ username="username", # Your PetKit account username or id
76
72
  password="password", # Your PetKit account password
77
- region="France", # Your region
73
+ region="France", # Your region or country code (e.g. FR, US, etc.)
78
74
  timezone="Europe/Paris", # Your timezone
79
75
  )
80
76
 
81
77
  # To get the account and devices data attached to the account
82
78
  await client.get_devices_data()
79
+
83
80
  # Read the account data
84
81
  print(client.account_data)
82
+
85
83
  # Read the devices data
86
84
  print(client.device_list)
87
85
 
88
- # client.device_list[0] is the first device in the list in this example it's a Feeder
89
- # Get the Feeder from the device list
90
- my_feeder = client.device_list[0]
91
-
92
86
  # Send command to the devices
93
87
  ### Example 1 : Turn on the indicator light
94
- await client.send_api_request(my_feeder, DeviceCommand.UPDATE_SETTING, {"lightMode": 1})
88
+ ### Device_ID, Command, Payload
89
+ await client.send_api_request(012346789, DeviceCommand.UPDATE_SETTING, {"lightMode": 1})
95
90
 
96
91
  ### Example 2 : Feed the pet
97
- await client.send_api_request(my_feeder, FeederCommand.MANUAL_FEED, {"amount": 1})
92
+ ### Device_ID, Command, Payload
93
+ await client.send_api_request(0123467, FeederCommand.MANUAL_FEED, {"amount": 1})
98
94
 
99
95
 
100
96
  if __name__ == "__main__":
@@ -0,0 +1,13 @@
1
+ pypetkitapi/__init__.py,sha256=eVpyGMD3tkYtiHUkdKEeNSZhQlZ4woI2Y5oVoV7CwXM,61
2
+ pypetkitapi/client.py,sha256=iamSdR-rYfi3MqvqlyCbO2k-z6BF407flrM_SAczVi8,14821
3
+ pypetkitapi/command.py,sha256=5SdCVRWJl1t9sMIZqQ5XVc1CAyY9B5sF2vJvwlNXj6E,9289
4
+ pypetkitapi/const.py,sha256=Abhrs1cS0a2G_7eFHoOA3somw5HCC0gEq7AoNjuEDbY,2993
5
+ pypetkitapi/containers.py,sha256=XhNbRUztnBpIr9cypDoyE3MHojic831G5GSisK9B7kU,3123
6
+ pypetkitapi/exceptions.py,sha256=NWmpsI2ewC4HaIeu_uFwCeuPIHIJxZBzjoCP7aNwvhs,1139
7
+ pypetkitapi/feeder_container.py,sha256=IGXeAEbLkZhOTCzF2MhwqadIAKXg6jHbfU037dt6byY,10985
8
+ pypetkitapi/litter_container.py,sha256=aLAvcB8K_nx7iBRkAarZs-48HAj2NkG7XjJFonWMuME,8948
9
+ pypetkitapi/water_fountain_container.py,sha256=LcCTDjk7eSbnF7e38xev3D5mCv5wwJ6go8WGGBv-CaU,5278
10
+ pypetkitapi-0.4.0.dist-info/LICENSE,sha256=4FWnKolNLc1e3w6cVlT61YxfPh0DQNeQLN1CepKKSBg,1067
11
+ pypetkitapi-0.4.0.dist-info/METADATA,sha256=eKhZ3gI8UghjrUZZpz2NsBhQTqwKi1SMvjVI31G1cYs,3611
12
+ pypetkitapi-0.4.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
13
+ pypetkitapi-0.4.0.dist-info/RECORD,,
@@ -1,13 +0,0 @@
1
- pypetkitapi/__init__.py,sha256=eVpyGMD3tkYtiHUkdKEeNSZhQlZ4woI2Y5oVoV7CwXM,61
2
- pypetkitapi/client.py,sha256=xfdhNAW3jsq9xQWgnEZTc2fAH7z4GHA3jtZlwDlmgCc,14635
3
- pypetkitapi/command.py,sha256=ibJ0zenONy-FBvUvyIA_IvUnYEUezLpPxhC_9XZ6SwM,9282
4
- pypetkitapi/const.py,sha256=49NMRaCGok20P-qfzlL6PH7QN9-QDuAsPh2Fejqf2iE,2945
5
- pypetkitapi/containers.py,sha256=GQqZKaDgemQM4UDnugWYDP7N01anpJwO4VjQy2Gla3E,3109
6
- pypetkitapi/exceptions.py,sha256=f9QY1EME9ha_vJJx4DuL_OBNpoynYVdtMFtVZbdfook,1129
7
- pypetkitapi/feeder_container.py,sha256=IGXeAEbLkZhOTCzF2MhwqadIAKXg6jHbfU037dt6byY,10985
8
- pypetkitapi/litter_container.py,sha256=aLAvcB8K_nx7iBRkAarZs-48HAj2NkG7XjJFonWMuME,8948
9
- pypetkitapi/water_fountain_container.py,sha256=LcCTDjk7eSbnF7e38xev3D5mCv5wwJ6go8WGGBv-CaU,5278
10
- pypetkitapi-0.2.1.dist-info/LICENSE,sha256=4FWnKolNLc1e3w6cVlT61YxfPh0DQNeQLN1CepKKSBg,1067
11
- pypetkitapi-0.2.1.dist-info/METADATA,sha256=mb2SmQx9J0Vx-N5ukYHAlUodTLrU0M1TYc0psdIb57E,3700
12
- pypetkitapi-0.2.1.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
13
- pypetkitapi-0.2.1.dist-info/RECORD,,