Skip to content

Commit 778310c

Browse files
committed
accept more flexible input when downloading
1 parent 83fc1f9 commit 778310c

File tree

3 files changed

+30
-7
lines changed

3 files changed

+30
-7
lines changed

roboflow/roboflowpy.py

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/usr/bin/env python3
22
import argparse
3-
3+
import re
44
import roboflow
55
from roboflow.config import DEFAULT_BATCH_NAME
66

@@ -9,13 +9,33 @@ def login(args):
99
roboflow.login()
1010

1111

12+
def _parse_url(url):
13+
regex = r"(?:https?://)?(?:universe|app)\.roboflow\.(?:com|one)/([^/]+)/([^/]+)(?:/dataset)?(?:/(\d+))?|([^/]+)/([^/]+)(?:/(\d+))?"
14+
match = re.match(regex, url)
15+
if match:
16+
organization = match.group(1) or match.group(4)
17+
dataset = match.group(2) or match.group(5)
18+
version = match.group(3) or match.group(
19+
6
20+
) # This can be None if not present in the URL
21+
return organization, dataset, version
22+
return None, None, None
23+
24+
1225
def download(args):
1326
rf = roboflow.Roboflow()
14-
w, p, v = args.datasetUrl.split("/")
27+
w, p, v = _parse_url(args.datasetUrl)
1528
project = rf.workspace(w).project(p)
16-
project.version(int(v)).download(
17-
args.format, location=args.location, overwrite=True
18-
)
29+
if not v:
30+
versions = project.versions()
31+
if not versions:
32+
print(f"project {p} does not have any version. exiting")
33+
exit(1)
34+
version = versions[-1]
35+
print(f"Version not provided. Downloading last one ({version.version})")
36+
else:
37+
version = project.version(int(v))
38+
version.download(args.format, location=args.location, overwrite=True)
1939

2040

2141
def import_dataset(args):
@@ -66,6 +86,7 @@ def _add_download_parser(subparsers):
6686
download_parser.add_argument(
6787
"-f",
6888
dest="format",
89+
default="voc",
6990
help="Specify the format to download the version. Available options: [coco, yolov5pytorch, yolov7pytorch, my-yolov6, darknet, voc, tfrecord, createml, clip, multiclass, coco-segmentation, yolo5-obb, png-mask-semantic, yolov8]",
7091
)
7192
download_parser.add_argument(

tests/manual/debugme.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,8 @@
1717
# args = parser.parse_args(["login"])
1818
# args = parser.parse_args(f"upload {thisdir}/../datasets/chess -w wolfodorpythontests -p chess -f auto".split())
1919
args = parser.parse_args(
20-
f"import {thisdir}/data/cultura-pepino-voc -w wolfodorpythontests -p cultura-pepino-voc -f auto -c 50".split()
20+
f"download https://universe.roboflow.com/gdit/aerial-airport".split()
21+
# f"import {thisdir}/data/cultura-pepino-voc -w wolfodorpythontests -p cultura-pepino-voc -f auto -c 50".split()
2122
# f"import {thisdir}/data/cultura-pepino-darknet -w wolfodorpythontests -p cultura-pepino-darknet -f auto -c 100".split()
2223
# f"import {thisdir}/data/0311fisheye -w wolfodorpythontests -p 0311fisheye -f auto -c 50".split()
2324
# f"upload {thisdir}/data/cultura-pepino-darknet/train/10_jpg.rf.2b3a401b0ffd8482e52137ad22faa14f.jpg -a {thisdir}/data/cultura-pepino-darknet/train/10_jpg.rf.2b3a401b0ffd8482e52137ad22faa14f.txt -m {thisdir}/data/cultura-pepino-darknet/train/_darknet.labels -w wolfodorpythontests -p cultura-pepino-darknet -r 3".split()

tests/manual/download.sh

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,6 @@ export ROBOFLOW_CONFIG_DIR=./data/.config
1111
# python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f multiclass -l ./data/cultura-pepino-multiclass
1212
# python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f coco-segmentation -l ./data/cultura-pepino-coco-segmentation
1313
# python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f yolo5-obb -l ./data/cultura-pepino-yolo5-obb
14-
python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f yolov8 -l ./data/cultura-pepino-yolov8
14+
# python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f yolov8 -l ./data/cultura-pepino-yolov8
1515
# python ../../roboflow/roboflowpy.py download motusbots/cultura-pepino/2 -f png-mask-semantic -l ./data/cultura-pepino-png-mask-semantic
16+
python ../../roboflow/roboflowpy.py download gdit/aerial-airport/1 -f voc

0 commit comments

Comments
 (0)