temu客户端程序
This commit is contained in:
commit
4aaf264e89
694 files changed
+263780
No files matched your search
@@ -0,0 +1,370 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using AllBase;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading;
|
||||
|
||||
namespace Work.CollectClass
|
||||
{
|
||||
public class ServerTemp
|
||||
{
|
||||
/// <summary>
|
||||
/// 获取服务器缓存
|
||||
/// </summary>
|
||||
/// <param name="siteId">来源网站</param>
|
||||
/// <param name="pid">商品ID</param>
|
||||
/// <param name="canUse">缓存是否可用</param>
|
||||
/// <returns></returns>
|
||||
public static string Get(int siteId, string pid, out bool canUse)
|
||||
{
|
||||
canUse = false;
|
||||
if (siteId == -1)
|
||||
pid = "key-" + pid;
|
||||
else if (siteId == 1)
|
||||
pid = "tb-" + pid;
|
||||
else if (siteId == 2)
|
||||
pid = "pd-" + pid;
|
||||
else if (siteId == 3)
|
||||
pid = "al-" + pid;
|
||||
else if (siteId == 4)
|
||||
pid = "wd-" + pid;
|
||||
else if (siteId == 5)//京喜商品的前缀约定为:jx-
|
||||
pid = "jx-" + pid;
|
||||
else if (siteId == 6)
|
||||
pid = "dy-" + pid;
|
||||
//string domain = "t3.1n11.com"; //domain = "t1.taojinhu.com:6788";
|
||||
//Random rd = new Random();
|
||||
//var iR = rd.Next(1, 100);
|
||||
//if (iR > 35)
|
||||
string domain = "temp-new1.taojinhu.com:10019";
|
||||
bool first = true;
|
||||
Again:
|
||||
string url = "https://" + domain + "/cache.php?id=" + pid;
|
||||
string data = UserLogin.GetSignaturex();
|
||||
//获取服务器加密
|
||||
long timeStamp;
|
||||
string getCse = CacheService(pid, out timeStamp);
|
||||
if (!string.IsNullOrEmpty(getCse))
|
||||
{
|
||||
url += "&csign=" + getCse + "&tsign=" + timeStamp;
|
||||
}
|
||||
string html = GetHtml.Utf8(url, 20);
|
||||
if (string.IsNullOrEmpty(html) && first)
|
||||
{
|
||||
first = false;
|
||||
domain = "t3.1n11.com";
|
||||
goto Again;
|
||||
}
|
||||
if (string.IsNullOrEmpty(html) || html.Length < 10 || html == "none" || html == "out time")
|
||||
return "";
|
||||
string date = BaseRegex.GetMatchRegexString(ref html, @"([\d]{4}-[\d]{2}-[\d]{2})");
|
||||
if (string.IsNullOrEmpty(date))
|
||||
return "";
|
||||
DateTime time;
|
||||
if (!DateTime.TryParse(date, out time))
|
||||
return "";
|
||||
if (time.AddDays(14) > BaseClass.GetServerTimeString()) //time.AddDays(7)
|
||||
canUse = true;
|
||||
if (time.AddDays(180) > BaseClass.GetServerTimeString() && pid.Contains("content")) //time.AddDays(7)
|
||||
canUse = true;
|
||||
return html;
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取淘宝服务器缓存
|
||||
/// </summary>
|
||||
/// <param name="siteId">来源网站</param>
|
||||
/// <param name="pid">商品ID</param>
|
||||
/// <param name="canUse">缓存是否可用</param>
|
||||
/// <returns></returns>
|
||||
public static string GetTaoBao(int siteId, string pid, out bool canUse)
|
||||
{
|
||||
canUse = false;
|
||||
if (siteId == -1)
|
||||
pid = "key-" + pid;
|
||||
if (siteId == 1)
|
||||
pid = "tb-" + pid;
|
||||
if (siteId == 2)
|
||||
pid = "pd-" + pid;
|
||||
if (siteId == 3)
|
||||
pid = "al-" + pid;
|
||||
//string domain = "t3.1n11.com"; //domain = "t1.taojinhu.com:6788";//备用
|
||||
//Random rd = new Random();
|
||||
//var iR = rd.Next(1, 100);
|
||||
//if (iR > 35)
|
||||
string domain = "temp-new1.taojinhu.com:10019";
|
||||
bool first = true;
|
||||
Again:
|
||||
string url = "https://" + domain + "/cache.php?id=" + pid;
|
||||
//获取服务器加密
|
||||
long timeStamp;
|
||||
string getCse = CacheService(pid, out timeStamp);
|
||||
if (!string.IsNullOrEmpty(getCse))
|
||||
{
|
||||
url += "&csign=" + getCse + "&tsign=" + timeStamp;
|
||||
}
|
||||
string html = GetHtml.Utf8(url, 20);
|
||||
if (string.IsNullOrEmpty(html) && first)
|
||||
{
|
||||
first = false;
|
||||
domain = "t3.1n11.com";//tempx.1n11.com
|
||||
goto Again;
|
||||
}
|
||||
if (string.IsNullOrEmpty(html) || html.Length < 10 || html == "none" || html == "out time" || html == "error time" || html == "error code")
|
||||
return "";
|
||||
string date = BaseRegex.GetMatchRegexString(ref html, @"([\d]{4}-[\d]{2}-[\d]{2})");
|
||||
if (string.IsNullOrEmpty(date))
|
||||
return "";
|
||||
DateTime time;
|
||||
if (!DateTime.TryParse(date, out time))
|
||||
return "";
|
||||
if (time.AddDays(7) > BaseClass.GetServerTimeString())//time.AddDays(7)
|
||||
canUse = true;
|
||||
if (time.AddDays(180) > BaseClass.GetServerTimeString() && pid.Contains("content")) //time.AddDays(7)
|
||||
canUse = true;
|
||||
|
||||
return html;
|
||||
}
|
||||
|
||||
public static bool Set(int siteId, string pid, string content)
|
||||
{
|
||||
if (siteId == -1)
|
||||
pid = "key-" + pid;
|
||||
else if (siteId == 1)
|
||||
pid = "tb-" + pid;
|
||||
else if (siteId == 2)
|
||||
pid = "pd-" + pid;
|
||||
else if (siteId == 3)
|
||||
pid = "al-" + pid;
|
||||
else if (siteId == 4)
|
||||
pid = "wd-" + pid;
|
||||
else if (siteId == 5)
|
||||
pid = "jx-" + pid;
|
||||
else if (siteId == 6)
|
||||
pid = "dy-" + pid;
|
||||
string domain = "t3a.1n11.com";
|
||||
string domainx = "temp-new1.taojinhu.com:10018";
|
||||
|
||||
byte[] contentByte = Encoding.UTF8.GetBytes(content);
|
||||
string url = "https://" + domain + "/cache.php?act=savex&id=" + pid;
|
||||
string urlx = "https://" + domainx + "/cache.php?act=savex&id=" + pid;
|
||||
//获取服务器加密
|
||||
long timeStamp;
|
||||
string getCse = CacheService(pid, out timeStamp);
|
||||
if (!string.IsNullOrEmpty(getCse))
|
||||
{
|
||||
url += "&csign=" + getCse + "&tsign=" + timeStamp;
|
||||
urlx += "&csign=" + getCse + "&tsign=" + timeStamp;
|
||||
}
|
||||
string html = GetHtml.RequestImg(url, contentByte);
|
||||
html = GetHtml.RequestImg(urlx, contentByte);
|
||||
return html == "ok";
|
||||
}
|
||||
|
||||
//密码 = 当前月份(202003)+ dfhjew&*4<>.,/-=+~`8sazfhy&6544#^fdg/DfgJSB
|
||||
//签名变量csign算法 = md5(密码 + 时间戳(秒)+ $id(例子:tb-main-123456)+ 密码)
|
||||
private static string EncryptionPassword = "dfhjew&*4<>.,/-=+~`8sazfhy&6544#^fdg/DfgJSB";
|
||||
public static string CacheService(string ProductId, out long time)
|
||||
{
|
||||
string NewEncryptionPassword = BaseClass.GetServerTimeString().ToString("yyyyMM") + EncryptionPassword;
|
||||
time = BaseClass.DateTimeToTimestampSeconds(DateTime.Now) + BaseClass.TimeDifferent;
|
||||
if (string.IsNullOrEmpty(ProductId))
|
||||
{
|
||||
return "";
|
||||
}
|
||||
string csign = "";
|
||||
csign = Md5Base.GetMd5(NewEncryptionPassword + time + ProductId + NewEncryptionPassword).ToLower();
|
||||
return csign;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取微店缓存上家数据
|
||||
/// </summary>
|
||||
/// <param name="upProduct"></param>
|
||||
/// <returns></returns>
|
||||
public static List<Tuple<string, int, int>> GetWeiDianCache(ProductCollectBase upProduct)
|
||||
{
|
||||
var mappingResultWd = new List<Tuple<string, int, int>>();
|
||||
string tagStr = "vd";
|
||||
string vdHtml = "";
|
||||
string fromStr = "";
|
||||
if (upProduct.from_site_id == 1)
|
||||
fromStr = "tb-";
|
||||
if (upProduct.from_site_id == 3)
|
||||
fromStr = "al-";
|
||||
else if (upProduct.from_site_id == 2)
|
||||
fromStr = "pd-";
|
||||
|
||||
string url = BaseClass.BuildObjString("data_change&act=get_pid");
|
||||
string data = "";
|
||||
// 根据商品id查找缓存
|
||||
if (string.IsNullOrEmpty(vdHtml) || vdHtml.ToLower().Contains("error"))
|
||||
{
|
||||
long insertGoodId = Convert.ToInt64(upProduct.from_id) % 1024;
|
||||
data = "&product_id=" + fromStr + tagStr + upProduct.from_id
|
||||
+ "&img_id="
|
||||
+ "&suffix=" + insertGoodId
|
||||
+ "&site_id=&" + UserLogin.GetSignaturex();
|
||||
|
||||
vdHtml = GetHtml.PostUtf8(url, data);
|
||||
if (string.IsNullOrEmpty(vdHtml) || vdHtml.ToLower().Contains("error"))
|
||||
vdHtml = GetHtml.PostUtf8(url, data);
|
||||
// 读取缓存成功
|
||||
if (!string.IsNullOrEmpty(vdHtml) && !vdHtml.ToLower().Contains("error"))
|
||||
{
|
||||
string siteId = BaseRegex.GetMatchRegexString(vdHtml, "\"site_id\":\"([\\s\\S]+?)\"");
|
||||
string content = BaseRegex.GetMatchRegexString(vdHtml, "\"content\":\"([\\s\\S]+?)(])\"");
|
||||
if (content != null)
|
||||
{
|
||||
content = content.Replace("\\", "") + "]";
|
||||
}
|
||||
else
|
||||
{
|
||||
content = BaseRegex.GetMatchRegexString(vdHtml, "\"content\":\"([\\s\\S]+?)\"");
|
||||
}
|
||||
try
|
||||
{
|
||||
var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (var tupleItem in tupleItems)
|
||||
{
|
||||
var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (items.Length >= 2 && items[0].Length > 5)
|
||||
{
|
||||
try
|
||||
{
|
||||
var item1 = items[0];
|
||||
var item2 = items[1];
|
||||
var item3 = items.Length >= 3 ? items[2] : items[1];
|
||||
mappingResultWd.Add(new Tuple<string, int, int>(item1, Convert.ToInt32(item2), Convert.ToInt32(item3)));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
else if (items.Length == 1 && items[0].StartsWith("tit_"))
|
||||
{
|
||||
// 微店商品标题
|
||||
//if (string.IsNullOrEmpty(prod.ProductTitle))
|
||||
//{
|
||||
// prod.ProductTitle = items[0].Replace("tit_", "");
|
||||
// prod.ProductTitle = GetHtml.Unicode2String(prod.ProductTitle).Replace("\\/", "/");
|
||||
//}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
return mappingResultWd;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据商品标题寻找微店商品缓存
|
||||
/// </summary>
|
||||
/// <param name="title">商品标题</param>
|
||||
/// <param name="mappingFrom"></param>
|
||||
/// <param name="isVDian"></param>
|
||||
/// <returns></returns>
|
||||
public static List<Tuple<string, int, int>> GetFakeCacheVDianTitle(string productTitle)
|
||||
{
|
||||
var result = new List<Tuple<string, int, int>>();
|
||||
var html = "";
|
||||
|
||||
if (string.IsNullOrEmpty(productTitle))
|
||||
return result;
|
||||
|
||||
string url = BaseClass.BuildObjString("data_change&act=get_cache_title");
|
||||
string data = "";
|
||||
// 根据商品id查找缓存
|
||||
if (string.IsNullOrEmpty(html) || html.ToLower().Contains("error"))
|
||||
{
|
||||
string tid = Md5Base.GetMd5(productTitle).Substring(8, 16);
|
||||
long suffix = Math.Abs(BaseClass.GetLong(tid)) % 1024;
|
||||
data = "&tid=" + tid
|
||||
+ "&suffix=" + suffix
|
||||
+ "&" + UserLogin.GetSignaturex();
|
||||
|
||||
html = GetHtml.PostUtf8(url, data);
|
||||
if (string.IsNullOrEmpty(html))
|
||||
html = GetHtml.PostUtf8(url, data);
|
||||
}
|
||||
// 读取缓存成功
|
||||
if (!string.IsNullOrEmpty(html) && !html.ToLower().Contains("error"))
|
||||
{
|
||||
string content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)(])\"");
|
||||
if (content != null)
|
||||
{
|
||||
content = content.Replace("\\", "") + "]";
|
||||
}
|
||||
else
|
||||
{
|
||||
content = BaseRegex.GetMatchRegexString(html, "\"content\":\"([\\s\\S]+?)\"");
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
var tupleItems = content.Split(new string[] { ";" }, StringSplitOptions.RemoveEmptyEntries);
|
||||
foreach (var tupleItem in tupleItems)
|
||||
{
|
||||
var items = tupleItem.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries);
|
||||
if (items.Length >= 2 && items[0].Length > 5)
|
||||
{
|
||||
try
|
||||
{
|
||||
var item1 = items[0];
|
||||
var item2 = items[1];
|
||||
var item3 = items.Length >= 3 ? items[2] : items[1];
|
||||
result.Add(new Tuple<string, int, int>(item1, Convert.ToInt32(item2), Convert.ToInt32(item3)));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
return result;
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 根据价格区间筛选可以满足Relation条件的微店商品
|
||||
/// </summary>
|
||||
/// <param name="prodList"></param>
|
||||
/// <param name="minPrice"></param>
|
||||
/// <param name="maxPrice"></param>
|
||||
/// <returns></returns>
|
||||
public static List<Tuple<string, int, int>> FilteWeiDianProducts(List<Tuple<string, int, int>> prodList, int minPrice, int maxPrice)
|
||||
{
|
||||
if (prodList == null)
|
||||
return new List<Tuple<string, int, int>>();
|
||||
if (prodList.Count == 0)
|
||||
return prodList;
|
||||
var result = prodList.Where(p => !string.IsNullOrEmpty(p.Item1) && p.Item2 >= minPrice && p.Item3 >= maxPrice && ((p.Item3 < maxPrice * 3.5M) || (p.Item3 < maxPrice + 3000))).ToList();
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取净化数据
|
||||
/// </summary>
|
||||
/// <param name="upProduct"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetJinHuaCache(string pid)
|
||||
{
|
||||
string url = BaseClass.LoginApiUrl + "?obj=pinbaobao/fession_api&act=get_detail";
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.Append("&fession_id=" + pid);
|
||||
string data = UserLogin.GetSignaturex() + sb;
|
||||
string html = GetHtml.PostUtf8(url, data);
|
||||
html = GetHtml.Decode(html).Replace("\\/", "/").Replace(@"\", "");
|
||||
return html;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user