vysion 2.0.8__tar.gz → 2.0.10__tar.gz

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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: vysion
3
- Version: 2.0.8
3
+ Version: 2.0.10
4
4
  Summary: The official Python client library for Vysion
5
5
  Home-page: https://vysion.ai
6
6
  License: Apache-2.0
@@ -25,11 +25,11 @@ Description-Content-Type: text/markdown
25
25
 
26
26
  # Vysion-PY
27
27
 
28
- Welcome to the PyPi webpage for Vysion, our implementation as a Python library to use the Vysion tool. Vysion is a dark web intelligence tool that provides information collected from web pages from Tor, I2P, cybercrime forums on the clearnet, etc. Vysion API also provides a feed of information on ransomware attacks published by the various ransomware groups currently active.
28
+ Welcome to the open source repository for vysion-py, our implementation as a Python library to use the Vysion tool. Vysion is a dark web intelligence tool that provides information collected from web pages from Tor, I2P, cybercrime forums on the clearnet, etc. Vysion API also provides a feed of information on ransomware attacks published by the various ransomware groups currently active.
29
29
 
30
30
  You can request a demo for the web app or an API-key to use in this library at [vysion.ai](https://vysion.ai).
31
31
 
32
- Latest version: [2.0.8](https://pypi.org/project/vysion/)
32
+ Latest version: [2.0.10](https://pypi.org/project/vysion/)
33
33
 
34
34
  You can visit [the documentation](https://developers.vysion.ai/?python) for more information on the searches and requests performed with the library or directly on the API.
35
35
 
@@ -1,10 +1,10 @@
1
1
  # Vysion-PY
2
2
 
3
- Welcome to the PyPi webpage for Vysion, our implementation as a Python library to use the Vysion tool. Vysion is a dark web intelligence tool that provides information collected from web pages from Tor, I2P, cybercrime forums on the clearnet, etc. Vysion API also provides a feed of information on ransomware attacks published by the various ransomware groups currently active.
3
+ Welcome to the open source repository for vysion-py, our implementation as a Python library to use the Vysion tool. Vysion is a dark web intelligence tool that provides information collected from web pages from Tor, I2P, cybercrime forums on the clearnet, etc. Vysion API also provides a feed of information on ransomware attacks published by the various ransomware groups currently active.
4
4
 
5
5
  You can request a demo for the web app or an API-key to use in this library at [vysion.ai](https://vysion.ai).
6
6
 
7
- Latest version: [2.0.8](https://pypi.org/project/vysion/)
7
+ Latest version: [2.0.10](https://pypi.org/project/vysion/)
8
8
 
9
9
  You can visit [the documentation](https://developers.vysion.ai/?python) for more information on the searches and requests performed with the library or directly on the API.
10
10
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "vysion"
3
- version = "2.0.8"
3
+ version = "2.0.10"
4
4
  description = "The official Python client library for Vysion"
5
5
  homepage = "https://vysion.ai"
6
6
  repository = "https://github.com/ByronLabs/vysion-py"
@@ -205,27 +205,59 @@ class Client(BaseClient):
205
205
  self,
206
206
  url: str,
207
207
  page: int = 1,
208
+ page_size: int = 10,
208
209
  lte: datetime = None,
209
210
  gte: datetime = None,
210
211
  ) -> VysionResponse[DocumentHit]:
211
- url = self._build_api_url__("document/url", url, page=page, lte=lte, gte=gte)
212
+ url = self._build_api_url__(
213
+ "document/url",
214
+ url,
215
+ page=page,
216
+ page_size=page_size,
217
+ lte=lte,
218
+ gte=gte,
219
+ )
212
220
 
213
221
  result = VysionResponse[DocumentHit].model_validate(self._make_request(url))
214
222
  return result.data
215
223
 
216
224
  @vysion_error_manager
217
- def get_tag(self, tag: str) -> VysionResponse[DocumentHit]:
218
- url = self._build_api_url__("document/tag", tag)
225
+ def get_tag(
226
+ self,
227
+ tag: str,
228
+ gte: datetime = None,
229
+ lte: datetime = None,
230
+ page: int = 1,
231
+ page_size: int = 10,
232
+ ) -> VysionResponse[DocumentHit]:
233
+ url = self._build_api_url__(
234
+ "document/tag",
235
+ tag,
236
+ gte=gte,
237
+ lte=lte,
238
+ page=page,
239
+ page_size=page_size,
240
+ )
219
241
 
220
242
  result = VysionResponse[DocumentHit].model_validate(self._make_request(url))
221
243
  return result.data
222
244
 
223
245
  @vysion_error_manager
224
246
  def find_email(
225
- self, email: str, page: int = 1, lte: datetime = None, gte: datetime = None
247
+ self,
248
+ email: str,
249
+ page: int = 1,
250
+ page_size: int = 10,
251
+ lte: datetime = None,
252
+ gte: datetime = None
226
253
  ) -> VysionResponse[DocumentHit]:
227
254
  url = self._build_api_url__(
228
- "document/email", email, page=page, lte=lte, gte=gte
255
+ "document/email",
256
+ email,
257
+ page=page,
258
+ page_size=page_size,
259
+ lte=lte,
260
+ gte=gte
229
261
  )
230
262
 
231
263
  result = VysionResponse[DocumentHit].model_validate(self._make_request(url))
@@ -237,6 +269,7 @@ class Client(BaseClient):
237
269
  country_code: str,
238
270
  phone_number: str,
239
271
  page: int = 1,
272
+ page_size: int = 10,
240
273
  lte: datetime = None,
241
274
  gte: datetime = None,
242
275
  ) -> VysionResponse[DocumentHit]:
@@ -244,6 +277,7 @@ class Client(BaseClient):
244
277
  "document/phone/" + country_code,
245
278
  phone_number,
246
279
  page=page,
280
+ page_size=page_size,
247
281
  lte=lte,
248
282
  gte=gte,
249
283
  )
@@ -257,11 +291,17 @@ class Client(BaseClient):
257
291
  chain: str,
258
292
  address: str,
259
293
  page: int = 1,
294
+ page_size: int = 10,
260
295
  lte: datetime = None,
261
296
  gte: datetime = None,
262
297
  ) -> VysionResponse[DocumentHit]:
263
298
  url = self._build_api_url__(
264
- "document/wallet/" + chain, address, page=page, lte=lte, gte=gte
299
+ "document/wallet/" + chain,
300
+ address,
301
+ page=page,
302
+ page_size=page_size,
303
+ lte=lte,
304
+ gte=gte
265
305
  )
266
306
 
267
307
  result = VysionResponse[DocumentHit].model_validate(self._make_request(url))
@@ -440,4 +480,4 @@ class RansomwareFeed(DaylyFeed):
440
480
  yield self._make_request(url)
441
481
 
442
482
 
443
- # TODO /api/v1/feeds
483
+ # TODO /api/v1/feeds
@@ -212,6 +212,9 @@ class Page(BaseModel):
212
212
  ssdeep: Optional[str] = None
213
213
  detectionDate: datetime = None
214
214
  chunk: bool = False
215
+ htmlOversize: Optional[bool] = False
216
+ docType: Optional[str] = None
217
+
215
218
 
216
219
 
217
220
  class RansomwareHit(BaseModel):
@@ -223,7 +226,6 @@ class RansomwareHit(BaseModel):
223
226
  companyLink: Optional[str] = None
224
227
  country: Optional[str] = None
225
228
 
226
-
227
229
  class DocumentHit(BaseModel):
228
230
  page: Page
229
231
  tag: List[Tag] = Field(default_factory=lambda: [])
@@ -296,6 +298,28 @@ class ImMessageHit(BaseModel):
296
298
  sha256sum: Optional[str] = None
297
299
  media: Optional[str] = Field(default_factory=lambda: None)
298
300
  detectionDate: datetime
301
+ serverId: Optional[int] = Field(default_factory=lambda: None) #Discord Exclusive
302
+ serverTitle: Optional[str] = Field(default_factory=lambda: None) #Discord Exclusive
303
+ platform: Optional[str] = Field(default_factory=lambda: None) #Discord Exclusive
304
+
305
+ @field_validator("messageId")
306
+ def validate_messageId(cls, v: int) -> int:
307
+ if not v:
308
+ raise ValueError("MessageId field cannot be empty")
309
+ return v
310
+
311
+ class ImMessageCardHit(BaseModel):
312
+ userId: Optional[int] = Field(default_factory=lambda: None)
313
+ username: Optional[str] = Field(default_factory=lambda: None)
314
+ channelId: Optional[int] = Field(default_factory=lambda: None)
315
+ messageId: str
316
+ message: Optional[str] = Field(default_factory=lambda: None)
317
+ channelTitle: Optional[str] = Field(default_factory=lambda: None)
318
+ languages: Optional[List[LanguagePair]] = Field(default_factory=lambda: None)
319
+ detectionDate: datetime
320
+ serverId: Optional[int] = Field(default_factory=lambda: None) #Discord Exclusive
321
+ serverTitle: Optional[str] = Field(default_factory=lambda: None) #Discord Exclusive
322
+ platform: Optional[str] = Field(default_factory=lambda: None)
299
323
 
300
324
  @field_validator("messageId")
301
325
  def validate_messageId(cls, v: int) -> int:
@@ -311,7 +335,10 @@ class ImProfileHit(BaseModel):
311
335
  lastName: Optional[List[str]] = Field(default_factory=lambda: None)
312
336
  detectionDate: datetime
313
337
  profilePhoto: Optional[List[str]] = Field(default_factory=lambda: None)
314
-
338
+ bot: Optional[bool] = Field(default_factory=lambda: None) #Discord Exclusive
339
+ discordLink: Optional[List[str]] = Field(default_factory=lambda: None) #Discord Exclusive
340
+ discriminator: Optional[List[int]] = Field(default_factory=lambda: None) #Discord Exclusive
341
+
315
342
  @field_validator("userId")
316
343
  def validate_userId(cls, v: int) -> int:
317
344
  if not v:
@@ -330,7 +357,9 @@ class ImChannelHit(BaseModel):
330
357
  channelTitles: Optional[List[str]] = Field(default_factory=lambda: None)
331
358
  detectionDate: datetime
332
359
  creationDate: datetime
333
- channelPhoto: Optional[List[str]] = Field(default_factory=lambda: None)
360
+ channelPhoto: Optional[List[str]] = Field(default_factory=lambda: None) #Telegram Exclusive
361
+ serverId: Optional[int] = Field(default_factory=lambda: None) #Discord Exclusive
362
+ serverTitle: Optional[List[str]] = Field(default_factory=lambda: None) #Discord Exclusive
334
363
 
335
364
  @field_validator("channelId")
336
365
  def validate_channelId(cls, v: int) -> int:
@@ -350,6 +379,32 @@ class ImChannelHit(BaseModel):
350
379
  raise ValueError("creationDate field cannot be empty")
351
380
  return v
352
381
 
382
+ class ImServerHit(BaseModel):
383
+ serverId: int
384
+ serverTitles: Optional[List[str]] = Field(default_factory=lambda: None)
385
+ detectionDate: datetime
386
+ creationDate: datetime
387
+ serverPhoto: Optional[List[str]] = Field(default_factory=lambda: None)
388
+ memberCount: Optional[int] = Field(default_factory=lambda: None)
389
+ discordLink: Optional[List[str]] = Field(default_factory=lambda: None)
390
+
391
+ @field_validator("serverId")
392
+ def validate_channelId(cls, v: int) -> int:
393
+ if not v:
394
+ raise ValueError("serverId field cannot be empty")
395
+ return v
396
+
397
+ @field_validator("detectionDate")
398
+ def validate_detectionDate(cls, v: datetime) -> datetime:
399
+ if not v:
400
+ raise ValueError("DetectionDate field cannot be empty")
401
+ return v
402
+
403
+ @field_validator("creationDate")
404
+ def validate_creationDate(cls, v: datetime) -> datetime:
405
+ if not v:
406
+ raise ValueError("creationDate field cannot be empty")
407
+ return v
353
408
 
354
409
  class ImFeedHit(BaseModel):
355
410
  id: str
@@ -15,4 +15,4 @@ See the License for the specific language governing permissions and
15
15
  limitations under the License.
16
16
  """
17
17
 
18
- __version__ = "2.0.8"
18
+ __version__ = "2.0.10"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes