MCPcopy Create free account
hub / github.com/C3ting/ARL / GithubSearch

Class GithubSearch

app/services/githubSearch.py:149–208  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

147
148
149class GithubSearch(object):
150 def __init__(self, query):
151 self.results = []
152 self.query = query
153 language_query = "language:Dockerfile " \
154 "language:\"Java Properties\" language:\"Protocol Buffer\" " \
155 "language:Gradle language:\"Maven POM\""
156
157 language_query_2 = "language:Python language:\"Git Config\" " \
158 "language:INI language:Shell language:\"SSH Config\""
159
160 extension_query = "extension:java extension:js extension:json " \
161 "extension:sql extension:yaml extension:yml extension:conf extension:config " \
162 "extension:jsp"
163
164 extension_query_2 = "extension:php extension:py extension:go extension:bat extension:cfg " \
165 "extension:env extension:exs extension:ini " \
166 "extension:pem extension:ppk extension:cs"
167
168 self.built_in_rules = [language_query, language_query_2, extension_query, extension_query_2]
169
170 self.max_page = 3 # 最大翻页数目
171 self.per_page = 100 # 每页数目
172 self.total_count = 0 # 保存搜索结果总数
173
174 def search(self):
175 try:
176 search_cnt = 0
177 total_search_cnt = len(self.built_in_rules)
178 for build_in in self.built_in_rules:
179 search_cnt += 1
180 build_in = build_in.strip()
181 if not build_in:
182 continue
183
184 curr_page = 1
185 query = "{} {}".format(self.query, build_in)
186 results, total_count = github_search_code(query=query, per_page=self.per_page, page=curr_page)
187 logger.info("[{}/{}] page:1 keyword:{} total:{}".format(search_cnt,
188 total_search_cnt, self.query, total_count))
189
190 self.total_count += total_count
191
192 # 对于根据文件来查的,应该只跑一页
193 if "filename:" not in build_in:
194 while (total_count / 100) > curr_page and curr_page < self.max_page:
195 curr_page += 1
196 next_results, total_count = github_search_code(query=query, per_page=self.per_page, page=curr_page)
197 logger.info("page:{} keyword:{} total:{}".format(curr_page, self.query, total_count))
198 results.extend(next_results)
199
200 for result in results:
201 if result not in self.results:
202 self.results.append(result)
203 except Exception as e:
204 logger.info("Error on {} {}".format(self.query, e))
205 logger.exception(e)
206

Callers 1

github_searchFunction · 0.70

Calls

no outgoing calls

Tested by

no test coverage detected