diff --git a/paddle_hub/commands/__init__.py b/paddle_hub/commands/__init__.py index 923c6c6da8580e6b74ee6442b3f8eac3283748fa..eacb38f0f9fd59bdd9e7eec1d32fedbbfc130f3c 100644 --- a/paddle_hub/commands/__init__.py +++ b/paddle_hub/commands/__init__.py @@ -20,4 +20,5 @@ from . import version from . import list from . import install from . import uninstall +from . import search from . import help diff --git a/paddle_hub/commands/search.py b/paddle_hub/commands/search.py new file mode 100644 index 0000000000000000000000000000000000000000..7fc649630ae0cec32beada152a4b797bcaf48bfe --- /dev/null +++ b/paddle_hub/commands/search.py @@ -0,0 +1,44 @@ +# Copyright (c) 2019 PaddlePaddle Authors. All Rights Reserved. +# +# Licensed under the Apache License, Version 2.0 (the "License" +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +from __future__ import absolute_import +from __future__ import division +from __future__ import print_function +from paddle_hub.tools.logger import logger +from paddle_hub.commands.base_command import BaseCommand +from paddle_hub.tools import utils +from paddle_hub.tools.downloader import default_downloader +from paddle_hub.module.manager import default_manager + + +class SearchCommand(BaseCommand): + name = "search" + + def __init__(self, name): + super(SearchCommand, self).__init__(name) + self.show_in_help = True + self.description = "Search a paddle hub module with keyword." + + def exec(self, argv): + module_name = argv[0] + module_list = default_downloader.search_module(module_name) + text = "\n" + text += " %-20s\t\t%s\n" % ("ModuleName", "ModuleVersion") + text += " %-20s\t\t%s\n" % ("--", "--") + for module_name, module_version in module_list: + text += " %-20s\t\t%s\n" % (module_name, module_version) + print(text) + + +command = SearchCommand.instance() diff --git a/paddle_hub/tools/downloader.py b/paddle_hub/tools/downloader.py index 21984f4752d79de90d20961e595f32c80d9c0ff3..2884791a09ae2283361901150e99c7e8d99e27b4 100644 --- a/paddle_hub/tools/downloader.py +++ b/paddle_hub/tools/downloader.py @@ -131,6 +131,23 @@ class Downloader: retry_limit=retry_limit) return self.uncompress(file, delete_file=delete_file) + def search_module(self, module_name): + if not self.module_list_file: + #TODO(wuzewu): download file in tmp directory + self.module_list_file = self.download_file( + url="https://paddlehub.bj.bcebos.com/module_file_list.csv") + self.module_list_file = csv_reader.read(self.module_list_file) + + match_module_index_list = [ + index + for index, module in enumerate(self.module_list_file['module_name']) + if module_name in module + ] + + return [(self.module_list_file['module_name'][index], + self.module_list_file['version'][index]) + for index in match_module_index_list] + def get_module_url(self, module_name, version=None): if not self.module_list_file: #TODO(wuzewu): download file in tmp directory