[mod] update package template

This commit is contained in:
Daniel Kukula 2024-05-06 07:33:24 +01:00
parent ac430a9eaf
commit baf5a446ce
4 changed files with 47 additions and 43 deletions

View file

@ -33,10 +33,10 @@ def response(resp):
results = []
for package in resp.json():
meta = package["meta"]
publishedDate = package.get("inserted_at")
if publishedDate:
publishedDate = parser.parse(publishedDate)
tags = meta.get("licenses", [])
published_date = package.get("inserted_at")
published_date = parser.parse(published_date)
links = {"documentation_url": package["docs_html_url"]}
links = {**links, **meta.get("links", {})}
results.append(
{
"template": "packages.html",
@ -46,10 +46,9 @@ def response(resp):
"content": meta.get("description", ""),
"version": meta.get("latest_version"),
"maintainer": ", ".join(meta.get("maintainers", [])),
"publishedDate": publishedDate,
"tags": tags,
"homepage": meta.get("links", {}).get("homepage"),
"source_code_url": meta.get("links", {}).get("github"),
"published_date": published_date,
"license_name": ", ".join(meta.get("licenses", [])),
"links": links,
}
)

View file

@ -1,7 +1,5 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""npms.io
"""
"""npms.io"""
from urllib.parse import urlencode
from dateutil import parser
@ -16,7 +14,7 @@ about = {
"results": "JSON",
}
categories = ['it', 'packages']
categories = ["it", "packages"]
# engine dependent config
@ -26,15 +24,14 @@ search_api = "https://api.npms.io/v2/search?"
def request(query: str, params):
args = urlencode(
{
'from': (params["pageno"] - 1) * page_size,
'q': query,
'size': page_size,
"from": (params["pageno"] - 1) * page_size,
"q": query,
"size": page_size,
}
)
params['url'] = search_api + args
params["url"] = search_api + args
return params
@ -43,23 +40,26 @@ def response(resp):
content = resp.json()
for entry in content["results"]:
package = entry["package"]
publishedDate = package.get("date")
if publishedDate:
publishedDate = parser.parse(publishedDate)
published_date = package.get("date")
if published_date:
published_date = parser.parse(published_date)
tags = list(entry.get("flags", {}).keys()) + package.get("keywords", [])
links = {
"homepage": package["links"].get("homepage"),
"source_code_url": package["links"].get("repository"),
}
results.append(
{
"template": "packages.html",
"url": package["links"]["npm"],
"title": package["name"],
'package_name': package["name"],
"package_name": package["name"],
"content": package.get("description", ""),
"version": package.get("version"),
"maintainer": package.get("author", {}).get("name"),
'publishedDate': publishedDate,
"published_date": published_date,
"tags": tags,
"homepage": package["links"].get("homepage"),
"source_code_url": package["links"].get("repository"),
"links": links,
}
)

View file

@ -1,7 +1,5 @@
# SPDX-License-Identifier: AGPL-3.0-or-later
"""pypi.org
"""
"""pypi.org"""
from urllib.parse import urlencode
from dateutil import parser
@ -23,21 +21,21 @@ about = {
"results": "HTML",
}
categories = ['it', 'packages']
categories = ["it", "packages"]
# engine dependent config
first_page_num = 1
base_url = "https://pypi.org"
search_url = base_url + '/search/?{query}'
search_url = base_url + "/search/?{query}"
def request(query, params):
args = {
"q": query,
"page": params['pageno'],
"page": params["pageno"],
}
params['url'] = search_url.format(query=urlencode(args))
params["url"] = search_url.format(query=urlencode(args))
return params
@ -45,22 +43,22 @@ def response(resp):
results = []
dom = html.fromstring(resp.text)
for entry in eval_xpath_list(dom, '/html/body/main/div/div/div/form/div/ul/li/a[@class="package-snippet"]'):
url = base_url + extract_text(eval_xpath_getindex(entry, './@href', 0)) # type: ignore
url = base_url + extract_text(eval_xpath_getindex(entry, "./@href", 0)) # type: ignore
title = extract_text(eval_xpath_getindex(entry, './h3/span[@class="package-snippet__name"]', 0))
version = extract_text(eval_xpath_getindex(entry, './h3/span[@class="package-snippet__version"]', 0))
created_at = extract_text(
eval_xpath_getindex(entry, './h3/span[@class="package-snippet__created"]/time/@datetime', 0)
)
content = extract_text(eval_xpath_getindex(entry, './p', 0))
content = extract_text(eval_xpath_getindex(entry, "./p", 0))
results.append(
{
"template": "packages.html",
"url": url,
"title": title,
'package_name': title,
"package_name": title,
"content": content,
"version": version,
'publishedDate': parser.parse(created_at), # type: ignore
"published_date": parser.parse(created_at), # type: ignore
}
)

View file

@ -47,17 +47,24 @@
{%- endif -%}
</div>
{%- endif -%}
{%- if result.homepage or result.source_code_url -%}
{%- if result.links -%}
<div class="result_project">{{- '' -}}
<span>{{ _('Project') }}</span>
<span>{{- '' -}}
{%- if result.homepage -%}
<a href="{{ result.homepage }}" target="_blank">{{ _('Project homepage') }}</a>
{%- endif -%}
{%- if result.homepage and result.source_code_url %} | {% endif -%}
{%- if result.source_code_url -%}
<a href="{{ result.source_code_url }}" target="_blank">{{ _('Source code') }}</a>
{%- endif -%}
{% for name, link in result.links.items() %}
{% if not loop.first %} | {% endif %}
<a href="{{ link }}" target="_blank">
{% if name == 'homepage' %}
{{ _('Project homepage') }}
{% elif name == 'documentation_url' %}
{{ _('Documenation') }}
{% elif name == 'source_code_url' %}
{{ _('Source code') }}
{% else %}
{{ name }}
{% endif %}
</a>
{% endfor %}
</span>{{- '' -}}
</div>
{%- endif -%}