Ivan000 commited on
Commit
33f6f2c
·
verified ·
1 Parent(s): 7ada18c

Update main.py

Browse files
Files changed (1) hide show
  1. main.py +24 -9
main.py CHANGED
@@ -62,13 +62,27 @@ def generate_root_feed():
62
  ET.SubElement(feed, "title").text = "DuckDuckGo OPDS Catalog"
63
  ET.SubElement(feed, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
64
 
65
- # Relative search link (OpenSearch template)
66
- feed.append(ET.Element("link", {
67
- "rel": "search",
68
- "type": "application/atom+xml;profile=opds-catalog;kind=acquisition",
69
- "href": "/opds/search?q={searchTerms}",
70
- "templated": "true"
71
- }))
 
 
 
 
 
 
 
 
 
 
 
 
 
 
72
 
73
  return ET.tostring(feed, encoding="utf-8", xml_declaration=True)
74
 
@@ -83,8 +97,8 @@ def generate_search_feed(query: str, results):
83
 
84
  for title, url in results:
85
  entry = ET.SubElement(feed, "entry")
86
- ET.SubElement(entry, "title").text = title
87
  ET.SubElement(entry, "id").text = url
 
88
  ET.SubElement(entry, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
89
  ET.SubElement(entry, "link", {
90
  "rel": "http://opds-spec.org/acquisition",
@@ -108,7 +122,7 @@ def opds_search(
108
  q: str = Query(..., description="Search query"),
109
  searchType: str = Query(None, alias="searchType")
110
  ) -> Response:
111
- # Ignoring searchType parameter
112
  results = duckduckgo_search(q)
113
  xml_data = generate_search_feed(q, results)
114
  return Response(
@@ -130,3 +144,4 @@ def download_fb2(url: str) -> Response:
130
  media_type="application/fb2+xml",
131
  headers={"Content-Disposition": f"attachment; filename={filename}"}
132
  )
 
 
62
  ET.SubElement(feed, "title").text = "DuckDuckGo OPDS Catalog"
63
  ET.SubElement(feed, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
64
 
65
+ # Entry for search subsection
66
+ entry_search = ET.SubElement(feed, "entry")
67
+ ET.SubElement(entry_search, "id").text = "urn:uuid:duckopds-search-section"
68
+ ET.SubElement(entry_search, "title").text = "Search"
69
+ ET.SubElement(entry_search, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
70
+ ET.SubElement(entry_search, "link", {
71
+ "rel": "subsection",
72
+ "href": "/opds/search",
73
+ "type": "application/atom+xml;profile=opds-catalog;kind=acquisition"
74
+ })
75
+
76
+ # Entry for cached subsection (placeholder)
77
+ entry_cached = ET.SubElement(feed, "entry")
78
+ ET.SubElement(entry_cached, "id").text = "urn:uuid:duckopds-cached-section"
79
+ ET.SubElement(entry_cached, "title").text = "Cached"
80
+ ET.SubElement(entry_cached, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
81
+ ET.SubElement(entry_cached, "link", {
82
+ "rel": "subsection",
83
+ "href": "/opds/cached",
84
+ "type": "application/atom+xml;profile=opds-catalog;kind=navigation"
85
+ })
86
 
87
  return ET.tostring(feed, encoding="utf-8", xml_declaration=True)
88
 
 
97
 
98
  for title, url in results:
99
  entry = ET.SubElement(feed, "entry")
 
100
  ET.SubElement(entry, "id").text = url
101
+ ET.SubElement(entry, "title").text = title
102
  ET.SubElement(entry, "updated").text = datetime.utcnow().strftime("%Y-%m-%dT%H:%M:%SZ")
103
  ET.SubElement(entry, "link", {
104
  "rel": "http://opds-spec.org/acquisition",
 
122
  q: str = Query(..., description="Search query"),
123
  searchType: str = Query(None, alias="searchType")
124
  ) -> Response:
125
+ # Ignore searchType parameter
126
  results = duckduckgo_search(q)
127
  xml_data = generate_search_feed(q, results)
128
  return Response(
 
144
  media_type="application/fb2+xml",
145
  headers={"Content-Disposition": f"attachment; filename={filename}"}
146
  )
147
+