Skip to content

Commit 781c553

Browse files
Merge pull request #151 from roboflow/add-search
Add search and search_all attributes
2 parents 35f38a4 + b61b3cb commit 781c553

File tree

2 files changed

+92
-1
lines changed

2 files changed

+92
-1
lines changed

roboflow/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
from roboflow.core.workspace import Workspace
1313
from roboflow.util.general import write_line
1414

15-
__version__ = "1.1.0"
15+
__version__ = "1.1.1"
1616

1717

1818
def check_key(api_key, model, notebook, num_retries=0):

roboflow/core/project.py

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -617,6 +617,97 @@ def single_upload(
617617
overall_success = success and annotation_success
618618
return overall_success
619619

620+
def search(
621+
self,
622+
like_image: str = None,
623+
prompt: str = None,
624+
offset: int = 0,
625+
limit: int = 100,
626+
tag: str = None,
627+
class_name: str = None,
628+
in_dataset: str = None,
629+
batch: bool = False,
630+
batch_id: str = None,
631+
fields: list = ["id", "created", "name", "labels"],
632+
):
633+
payload = {}
634+
635+
if like_image is not None:
636+
payload["like_image"] = like_image
637+
638+
if prompt is not None:
639+
payload["prompt"] = prompt
640+
641+
if offset is not None:
642+
payload["offset"] = offset
643+
644+
if limit is not None:
645+
payload["limit"] = limit
646+
647+
if tag is not None:
648+
payload["tag"] = tag
649+
650+
if class_name is not None:
651+
payload["class_name"] = class_name
652+
653+
if in_dataset is not None:
654+
payload["in_dataset"] = in_dataset
655+
656+
if batch is not None:
657+
payload["batch"] = batch
658+
659+
if batch_id is not None:
660+
payload["batch_id"] = batch_id
661+
662+
payload["fields"] = fields
663+
664+
data = requests.post(
665+
API_URL
666+
+ "/"
667+
+ self.__workspace
668+
+ "/"
669+
+ self.__project_name
670+
+ "/search?api_key="
671+
+ self.__api_key,
672+
json=payload,
673+
)
674+
675+
return data.json()["results"]
676+
677+
def search_all(
678+
self,
679+
like_image: str = None,
680+
prompt: str = None,
681+
offset: int = 0,
682+
limit: int = 100,
683+
tag: str = None,
684+
class_name: str = None,
685+
in_dataset: str = None,
686+
batch: bool = False,
687+
batch_id: str = None,
688+
fields: list = ["id", "created"],
689+
):
690+
while True:
691+
data = self.search(
692+
like_image=like_image,
693+
prompt=prompt,
694+
offset=offset,
695+
limit=limit,
696+
tag=tag,
697+
class_name=class_name,
698+
in_dataset=in_dataset,
699+
batch=batch,
700+
batch_id=batch_id,
701+
fields=fields,
702+
)
703+
704+
yield data
705+
706+
if len(data) < limit:
707+
break
708+
709+
offset += limit
710+
620711
def __str__(self):
621712
# String representation of project
622713
json_str = {"name": self.name, "type": self.type, "workspace": self.__workspace}

0 commit comments

Comments
 (0)