Skip to content

Commit 0689799

Browse files
committed
Fix cookies
1 parent fbc7b4f commit 0689799

File tree

4 files changed

+189
-302
lines changed

4 files changed

+189
-302
lines changed

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

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@ namespace SmartImage.Lib.Engines.Impl.Search;
2424

2525
/// <summary>
2626
/// <see cref="SearchEngineOptions.EHentai" />
27-
/// Handles both ExHentai and E-Hentai
2827
/// </summary>
28+
/// <remarks>Handles both ExHentai and E-Hentai</remarks>
2929
public sealed class EHentaiEngine : WebSearchEngine, IConfig, INotifyPropertyChanged
3030
{
3131

@@ -45,7 +45,7 @@ public sealed class EHentaiEngine : WebSearchEngine, IConfig, INotifyPropertyCha
4545
CookieContainer = new() { },
4646

4747
};
48-
48+
4949
public override Url BaseUrl => IsLoggedIn ? ExHentaiBase : EHentaiBase;
5050

5151
private Url LookupUrl => IsLoggedIn ? ExHentaiLookup : EHentaiLookup;
@@ -69,10 +69,13 @@ public sealed class EHentaiEngine : WebSearchEngine, IConfig, INotifyPropertyCha
6969

7070
static EHentaiEngine() { }
7171

72+
private readonly CookieCollection m_cookies;
73+
7274
public EHentaiEngine() : base(EHentaiBase)
7375
{
7476
m_client = new HttpClient(m_clientHandler);
7577
IsLoggedIn = false;
78+
m_cookies = new ();
7679
}
7780

7881
/*
@@ -165,13 +168,20 @@ public async Task<bool> LoginAsync(bool useEx = false)
165168
.PostAsync(content);*/
166169

167170
foreach (var cookie in fcc) {
168-
m_clientHandler.CookieContainer.Add(cookie.AsCookie());
171+
m_cookies.Add(cookie.AsCookie());
169172
}
170173

171174
// foreach (var fc in fcc) { }
172175

173-
var res2 = await GetSessionAsync();
176+
var res2 = await GetSessionAsync(useEx);
174177

178+
/*var res2 = await EHentaiBase.WithCookies(m_clientHandler.CookieContainer)
179+
.WithHeaders(new
180+
{
181+
User_Agent = HttpUtilities.UserAgent
182+
})
183+
.WithAutoRedirect(true)
184+
.GetAsync();*/
175185
return IsLoggedIn = res2.ResponseMessage.IsSuccessStatusCode;
176186
}
177187

@@ -219,8 +229,8 @@ protected override async Task<IDocument> GetDocumentAsync(SearchResult sr, Searc
219229
// data.Add(new FileContent(f.FullName), "sfile", "a.jpg");
220230

221231
//todo
222-
/*m_clientHandler.CookieContainer.Add(Cookies);
223-
232+
m_clientHandler.CookieContainer.Add(m_cookies);
233+
224234
Debug.WriteLine($"{LookupUrl}", nameof(GetDocumentAsync));
225235

226236
var req = new HttpRequestMessage(HttpMethod.Post, LookupUrl)
@@ -236,23 +246,25 @@ protected override async Task<IDocument> GetDocumentAsync(SearchResult sr, Searc
236246

237247
var content = await res.Content.ReadAsStringAsync(token);
238248

239-
sr.RawUrl = res.RequestMessage.RequestUri;*/
249+
sr.RawUrl = res.RequestMessage.RequestUri;
250+
251+
// m_clientHandler.CookieContainer.Add(m_cookies);
240252

241-
var req = new FlurlRequest(LookupUrl)
253+
/*var req = new FlurlRequest(LookupUrl)
242254
{
243-
Content = data,
255+
Content = data,
244256
Headers =
245257
{
246258
{ "User-Agent", HttpUtilities.UserAgent }
247259
},
248260
Verb = HttpMethod.Post,
249-
261+
250262
};
251263
252264
var res = await Client.SendAsync(req, cancellationToken: token);
253265
var content = await res.GetStringAsync();
254-
255-
sr.RawUrl = res.ResponseMessage.RequestMessage.RequestUri;
266+
267+
sr.RawUrl = res.ResponseMessage.RequestMessage.RequestUri;*/
256268

257269
if (content.Contains("Please wait a bit longer between each file search.")) {
258270
Debug.WriteLine($"cooldown", Name);
@@ -264,9 +276,9 @@ protected override async Task<IDocument> GetDocumentAsync(SearchResult sr, Searc
264276
return await parser.ParseDocumentAsync(content, token);
265277
}
266278

267-
private Task<IFlurlResponse> GetSessionAsync()
279+
private Task<IFlurlResponse> GetSessionAsync(bool useEx = false)
268280
{
269-
return ExHentaiBase.WithCookies(m_clientHandler.CookieContainer)
281+
return (useEx ? ExHentaiBase : EHentaiBase).WithCookies(m_cookies)
270282
.WithHeaders(new
271283
{
272284
User_Agent = HttpUtilities.UserAgent
@@ -317,7 +329,7 @@ public override void Dispose()
317329
{
318330
m_client.Dispose();
319331
m_clientHandler.Dispose();
320-
332+
321333
IsLoggedIn = false;
322334
}
323335

SmartImage.Lib 3/Utilities/CookiesManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ namespace SmartImage.Lib.Utilities;
99

1010
public static class CookiesManager
1111
{
12-
[DebuggerHidden]
12+
// [DebuggerHidden]
1313
public static async Task<List<IBrowserCookie>> ReadCookiesAsync()
1414
{
1515
using var ff = new FirefoxCookieReader();

SmartImage.Rdx/ResultModel.cs

Lines changed: 0 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,26 @@
11
// Deci SmartImage.Rdx ResultModel.cs
22
// $File.CreatedYear-$File.CreatedMonth-26 @ 0:50
33

4-
using Flurl;
54
using SmartImage.Lib.Results;
6-
using SmartImage.Rdx.Shell;
75
using Spectre.Console;
8-
using Spectre.Console.Rendering;
96

107
namespace SmartImage.Rdx;
118

129
public class ResultModel : IDisposable
1310
{
14-
1511
public SearchResult Result { get; }
1612

1713
// public STable Table { get; }
1814

1915
public int Id { get; }
2016

21-
public Grid Grid { get; private set; }
22-
2317
public ResultModel(SearchResult result)
2418
: this(result, Interlocked.Increment(ref Count)) { }
2519

2620
public ResultModel(SearchResult result, int id)
2721
{
2822
Result = result;
2923
Id = id;
30-
Grid = CreateGrid();
3124

3225
// Table = Create();
3326
}
@@ -39,130 +32,4 @@ public void Dispose()
3932
Result.Dispose();
4033
}
4134

42-
private static Grid CreateGrid()
43-
{
44-
var gr = new Grid();
45-
gr.AddColumns(2);
46-
gr.AddRow("Name", "Details");
47-
return gr;
48-
}
49-
50-
/*public STable Create()
51-
{
52-
var table = CreateTable();
53-
54-
int i = 0;
55-
56-
foreach (SearchResultItem sri in Result.Results) {
57-
table.Rows.Add([
58-
new Text($"{i + 1}"),
59-
Markup.FromInterpolated($"[link={sri.Url}]{sri.Root.Engine.Name} #{i + 1}[/]"),
60-
Markup.FromInterpolated($"{sri.Similarity}"),
61-
Markup.FromInterpolated($"{sri.Artist}"),
62-
Markup.FromInterpolated($"{sri.Description}"),
63-
Markup.FromInterpolated($"{sri.Character}")
64-
]);
65-
66-
i++;
67-
}
68-
69-
return table;
70-
}
71-
72-
private static STable CreateTable()
73-
{
74-
var table = new STable()
75-
{
76-
Border = TableBorder.Heavy,
77-
Title = new($"Results"),
78-
ShowFooters = false,
79-
ShowHeaders = false,
80-
Expand = false,
81-
};
82-
83-
table.AddColumns(new TableColumn("#"),
84-
new TableColumn("Name"),
85-
new TableColumn("Similarity"),
86-
new TableColumn("Artist"),
87-
new TableColumn("Description"),
88-
new TableColumn("Character")
89-
);
90-
91-
return table;
92-
}*/
93-
94-
internal Grid UpdateGrid(int ix = -1, bool clear = false)
95-
{
96-
if (clear) {
97-
Grid = CreateGrid();
98-
}
99-
100-
var allRes = Result.Results;
101-
int i = 0;
102-
103-
var gr2 = new Grid();
104-
105-
foreach (var item in allRes) {
106-
Style? style = null;
107-
if (ix == i++) {
108-
style = new Style(Color.Yellow);
109-
gr2.AddColumns(new[] { new GridColumn(), new GridColumn() });
110-
gr2.AddRow(nameof(SearchResultItem.Url), $"{item.Url}");
111-
112-
}
113-
114-
Grid.AddRow(new Text($"{Result.Engine.Name} #{i}", style), new Text($"{item.Score}"));
115-
}
116-
117-
return gr2;
118-
}
119-
120-
internal static IRenderable[] GetRowsForFormat(SearchResultItem s, int i, OutputFields format)
121-
{
122-
var ls = new List<IRenderable>();
123-
124-
Url? url = s.Url;
125-
string host = url?.Host ?? CliFormat.STR_DEFAULT;
126-
127-
Color c = CliFormat.GetEngineColor(s.Root.Engine.EngineOption);
128-
129-
if (format.HasFlag(OutputFields.Name)) {
130-
ls.Add(new Text($"{s.Root.Engine.Name} #{i + 1}", CliFormat.Sty_Name.Foreground(c)));
131-
}
132-
133-
if (format.HasFlag(OutputFields.Similarity)) {
134-
ls.Add(new Text($"{s.Similarity / 100f:P}", CliFormat.Sty_Sim));
135-
}
136-
137-
if (format.HasFlag(OutputFields.Url)) {
138-
ls.Add(new Text(host, CliFormat.Sty_Url.Link(url)));
139-
}
140-
141-
return ls.ToArray();
142-
}
143-
144-
internal IRenderable[] GetRowsForFormat(OutputFields format)
145-
{
146-
var ls = new List<IRenderable>();
147-
148-
Url? url = Result.RawUrl;
149-
string host = url?.Host ?? CliFormat.STR_DEFAULT;
150-
151-
Color c = CliFormat.GetEngineColor(Result.Engine.EngineOption);
152-
153-
if (format.HasFlag(OutputFields.Name)) {
154-
ls.Add(new Text($"{Result.Engine.Name}", CliFormat.Sty_Name.Foreground(c)));
155-
}
156-
157-
if (format.HasFlag(OutputFields.Similarity)) {
158-
ls.Add(new Text(CliFormat.STR_DEFAULT, CliFormat.Sty_Sim));
159-
}
160-
161-
if (format.HasFlag(OutputFields.Url)) {
162-
ls.Add(new Text(host, CliFormat.Sty_Url.Link(url)));
163-
}
164-
165-
return ls.ToArray();
166-
}
167-
16835
}

0 commit comments

Comments
 (0)