Skip to content

Commit 0445235

Browse files
committed
Additional Yandex parsing #2
1 parent 5320b32 commit 0445235

File tree

4 files changed

+28
-7
lines changed

4 files changed

+28
-7
lines changed

SmartImage.Lib 3/Engines/Impl/Search/YandexEngine.cs

Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ SearchResultItem Parse(INode siz)
8585

8686
private static (int? w, int? h) ParseResolution(string resText)
8787
{
88+
8889
string[] resFull = resText.Split(Strings.Constants.MUL_SIGN);
8990

9091
int? w = null, h = null;
@@ -157,7 +158,8 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
157158
var otherImages = GetOtherImages(doc, sr);
158159
sr.Results.AddRange(otherImages);
159160

160-
await ParseExternalInfo(doc,sr);
161+
var ext = await ParseExternalInfo(doc, sr);
162+
sr.Results.AddRange(ext);
161163

162164
//
163165

@@ -186,27 +188,34 @@ public override async Task<SearchResult> GetResultAsync(SearchQuery query, Cance
186188
/// <summary>
187189
/// Parses <em>sites containing information about the image</em>
188190
/// </summary>
189-
private static async ValueTask ParseExternalInfo(IDocument doc, SearchResult r)
191+
private static async ValueTask<IEnumerable<SearchResultItem>> ParseExternalInfo(IDocument doc, SearchResult r)
190192
{
191-
var items = doc.Body.SelectNodes("//li[contains(@class,'CbirSites-Item')]");
193+
var items = doc.Body.SelectNodes(Serialization.S_Yandex_ExtInfo);
194+
var rg = new List<SearchResultItem>(items.Count);
192195

193196
foreach (INode item in items) {
194197
// var thumb = item.ChildNodes[0];
195198
var info = item.ChildNodes[1];
196199
var title = info.ChildNodes[0].TextContent;
197200
var href = info.ChildNodes[0].ChildNodes[0].TryGetAttribute(Serialization.Atr_href);
198-
var thumb = item.ChildNodes[0].ChildNodes[0].TryGetAttribute(Serialization.Atr_href);
201+
var n = item.ChildNodes[0].ChildNodes[0];
202+
var thumb = n.TryGetAttribute(Serialization.Atr_href);
203+
var res = n.ChildNodes[1].TextContent;
199204

200205
var sri = new SearchResultItem(r)
201206
{
202207
Title = title,
203-
Url = href
208+
Url = href,
204209
};
205210

211+
(sri.Width, sri.Height) = ParseResolution(res);
212+
206213
sri.Metadata.thumb = thumb;
207214

208-
r.Results.Add(sri);
215+
rg.Add(sri);
209216
}
217+
218+
return rg;
210219
}
211220

212221
public override void Dispose() { }

SmartImage.Lib 3/Results/SearchResultItem.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public async Task<bool> GetUniAsync()
164164

165165
public override string ToString()
166166
{
167-
return $"{Url} {Similarity / 100:P} {Artist} {Description} {Site} {Source} {Title} {Character} {Time}";
167+
return $"{Url} {Similarity / 100:P} {Artist} {Description} {Site} {Source} {Title} {Character} {Time} {Width}x{Height}";
168168
}
169169

170170
public void Dispose()

SmartImage.Lib 3/Serialization.Designer.cs

Lines changed: 9 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

SmartImage.Lib 3/Serialization.resx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,4 +153,7 @@
153153
<data name="Tag_a" xml:space="preserve">
154154
<value>a</value>
155155
</data>
156+
<data name="S_Yandex_ExtInfo" xml:space="preserve">
157+
<value>//li[contains(@class,'CbirSites-Item')]</value>
158+
</data>
156159
</root>

0 commit comments

Comments
 (0)