Skip to content

Commit e93810d

Browse files
committed
SauceNao stuff
1 parent d5bbec1 commit e93810d

File tree

8 files changed

+157
-111
lines changed

8 files changed

+157
-111
lines changed

SmartImage/Engines/Imgur/ImgurClient.cs

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -23,17 +23,6 @@ private ImgurClient(string apiKey)
2323

2424
public ImgurClient() : this(SearchConfig.Config.ImgurAuth) { }
2525

26-
27-
private static string PhotoStreamToBase64(Stream stream)
28-
{
29-
using var ms = new MemoryStream();
30-
31-
stream.CopyTo(ms);
32-
33-
var result = ms.ToArray();
34-
return Convert.ToBase64String(result);
35-
}
36-
3726
public string Upload(string path)
3827
{
3928

SmartImage/Engines/Other/ImgOpsEngine.cs

Lines changed: 2 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public sealed class ImgOpsEngine : BasicSearchEngine, IUploadEngine
1313
public ImgOpsEngine() : base("http://imgops.com/") { }
1414

1515
public override string Name => "ImgOps";
16+
1617
public override Color Color => Color.Pink;
1718

1819
public override SearchEngineOptions Engine => SearchEngineOptions.ImgOps;
@@ -51,37 +52,9 @@ public string UploadImage(string path)
5152

5253
string imgOpsUrl = UploadImage(img);
5354

54-
// var imgOpsPageUrl = imgOpsUrl;
55-
56-
// string html = Network.GetString(imgOpsUrl);
57-
//
58-
// const string HREF_REGEX = "href=\"(.*)\"";
59-
//
60-
// var match = Regex.Matches(html, HREF_REGEX);
61-
/*string link = null;
62-
63-
64-
foreach (Match match1 in match) {
65-
foreach (Group @group in match1.Groups) {
66-
var v = group.Value;
67-
68-
if (v.StartsWith("http://imgops.com/") && v.Contains("userUploadTempCache")) {
69-
link = v;
70-
break;
71-
}
72-
}
73-
}*/
74-
75-
// May change in the future
76-
// const int HREF_N = 7;
77-
//
78-
// string link = match[HREF_N].Groups[1].Value;
79-
80-
var link = imgOpsUrl;
55+
string? link = imgOpsUrl;
8156
link = "http://" + link.SubstringAfter(BaseUrl);
8257

83-
//Debug.WriteLine("> " + link);
84-
8558
return link;
8659
}
8760
}

SmartImage/Engines/Other/IqdbEngine.cs

Lines changed: 7 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -50,14 +50,6 @@ public IqdbResult(string caption, string source, string url, int width, int heig
5050
Similarity = similarity;
5151
Filter = false; // set later
5252
}
53-
54-
public override string ToString()
55-
{
56-
return
57-
$"{nameof(Caption)}: {Caption}, {nameof(Source)}: " +
58-
$"{Source}, {nameof(Width)}: {Width}, {nameof(Height)}: " +
59-
$"{Height}, {nameof(Url)}: {Url}, {nameof(Similarity)}: {Similarity}";
60-
}
6153
}
6254

6355
private IqdbResult ParseResult(HtmlNodeCollection tr)
@@ -84,11 +76,13 @@ private IqdbResult ParseResult(HtmlNodeCollection tr)
8476
url = origUrl;
8577
}
8678

79+
8780
int w = 0, h = 0;
8881

8982
if (tr.Count >= 4) {
9083
var res = tr[3];
91-
var wh = res.InnerText.Split("×");
84+
85+
var wh = res.InnerText.Split(Formatting.MUL_SIGN);
9286

9387
var wStr = wh[0].SelectOnlyDigits();
9488
w = int.Parse(wStr);
@@ -147,16 +141,10 @@ public override FullSearchResult GetResult(string url)
147141
return sr;
148142
}
149143

150-
var images = new List<ISearchResult>();
151-
152-
foreach (var table in tables) {
153-
154-
var tr = table.SelectNodes("tr");
155-
156-
var i = ParseResult(tr);
157-
158-
images.Add(i);
159-
}
144+
var images = tables.Select(table => table.SelectNodes("tr"))
145+
.Select(ParseResult)
146+
.Cast<ISearchResult>()
147+
.ToList();
160148

161149
// First is original image
162150
images.RemoveAt(0);

SmartImage/Engines/Other/YandexEngine.cs

Lines changed: 28 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public YandexEngine() : base("https://yandex.com/images/search?rpt=imageview&url
2323

2424
private struct YandexResult : ISearchResult
2525
{
26-
public bool Filter { get; set; }
26+
public bool Filter { get; set; }
2727
public float? Similarity { get; set; }
2828

2929
public int? Width { get; set; }
@@ -47,7 +47,7 @@ internal YandexResult(int width, int height, string url)
4747

4848
public override string ToString()
4949
{
50-
return String.Format("{0}x{1} {2} [{3:N}]", Width, Height, Url, ((ISearchResult) this).FullResolution);
50+
return $"{Width}x{Height} {Url} [{((ISearchResult) this).FullResolution:N}]";
5151
}
5252
}
5353

@@ -66,33 +66,42 @@ private static ISearchResult[] FilterAndSelectBestImages(List<ISearchResult> rg)
6666

6767
private static string GetYandexAnalysis(HtmlDocument doc)
6868
{
69-
var nodes = doc.DocumentNode.SelectNodes("//div[contains(@class, 'Tags_type_simple')]/*");
69+
const string TAGS_XP = "//div[contains(@class, 'Tags_type_simple')]/*";
7070

71+
var nodes = doc.DocumentNode.SelectNodes(TAGS_XP);
7172

72-
var appearsToContain = nodes.Select(n=>n.InnerText).QuickJoin();
73-
73+
string? appearsToContain = nodes.Select(n => n.InnerText).QuickJoin();
7474

7575
return appearsToContain;
7676
}
7777

78+
7879
private static List<ISearchResult> GetYandexImages(HtmlDocument doc)
7980
{
80-
var tagsItem = doc.DocumentNode.SelectNodes("//a[contains(@class, 'Tags-Item')]");
81+
const string TAGS_ITEM_XP = "//a[contains(@class, 'Tags-Item')]";
82+
83+
const string CBIR_ITEM = "CbirItem";
84+
85+
86+
var tagsItem = doc.DocumentNode.SelectNodes(TAGS_ITEM_XP);
8187

8288
var sizeTags = tagsItem.Where(sx =>
83-
!sx.ParentNode.ParentNode.Attributes["class"].Value.Contains("CbirItem"));
89+
!sx.ParentNode.ParentNode.Attributes["class"].Value.Contains(CBIR_ITEM));
8490

91+
8592

8693
var images = new List<ISearchResult>();
8794

8895
foreach (var siz in sizeTags) {
89-
var link = siz.Attributes["href"].Value;
96+
string? link = siz.Attributes["href"].Value;
9097

91-
var resText = siz.FirstChild.InnerText;
92-
var resFull = resText.Split('×');
93-
var w = Int32.Parse(resFull[0]);
94-
var h = Int32.Parse(resFull[1]);
95-
var totalRes = w * h;
98+
string? resText = siz.FirstChild.InnerText;
99+
100+
string[]? resFull = resText.Split(Formatting.MUL_SIGN);
101+
102+
int w = Int32.Parse(resFull[0]);
103+
int h = Int32.Parse(resFull[1]);
104+
int totalRes = w * h;
96105

97106
if (totalRes >= TOTAL_RES_MIN) {
98107
var restRes = Network.GetSimpleResponse(link);
@@ -103,9 +112,6 @@ private static List<ISearchResult> GetYandexImages(HtmlDocument doc)
103112
images.Add(yi);
104113
}
105114
}
106-
107-
108-
// todo
109115
}
110116

111117
return images;
@@ -116,20 +122,20 @@ public override FullSearchResult GetResult(string url)
116122
// todo: slow
117123

118124
var sr = base.GetResult(url);
119-
125+
120126
try {
121127

122128
// Get more info from Yandex
123129

124-
var html = Network.GetString(sr.RawUrl);
125-
var doc = new HtmlDocument();
130+
string? html = Network.GetString(sr.RawUrl);
131+
var doc = new HtmlDocument();
126132
doc.LoadHtml(html);
127133

128134
/*
129135
* Parse what the image looks like
130136
*/
131137

132-
var looksLike = GetYandexAnalysis(doc);
138+
string? looksLike = GetYandexAnalysis(doc);
133139
sr.Caption = looksLike;
134140

135141

@@ -143,9 +149,9 @@ public override FullSearchResult GetResult(string url)
143149

144150
//
145151
var best = images[0];
146-
sr.Width = best.Width;
152+
sr.Width = best.Width;
147153
sr.Height = best.Height;
148-
sr.Url = best.Url;
154+
sr.Url = best.Url;
149155

150156

151157
sr.AddExtendedResults(bestImages);

SmartImage/Engines/SauceNao/SauceNaoDataResult.cs

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
using System;
2+
using System.ComponentModel;
23
using System.Runtime.Serialization;
4+
using JetBrains.Annotations;
35

46
namespace SmartImage.Engines.SauceNao
57
{
@@ -42,10 +44,21 @@ public class SauceNaoDataResult
4244
[IgnoreDataMember]
4345
public float Rating { get; internal set; }
4446

45-
4647
[IgnoreDataMember]
4748
public string WebsiteTitle { get; set; }
4849

50+
[IgnoreDataMember]
51+
public string Character { get; internal set; }
52+
53+
[IgnoreDataMember]
54+
55+
public string Material { get; internal set; }
56+
57+
[IgnoreDataMember]
58+
59+
public string Creator { get; internal set; }
60+
61+
4962
public override string ToString()
5063
{
5164
string firstUrl = Url != null ? Url[0] : "-";

0 commit comments

Comments
 (0)