194 lines
8.6 KiB
C#
194 lines
8.6 KiB
C#
using Api.Framework;
|
||
using Api.Framework.Enums;
|
||
using CsharpHttpHelper;
|
||
using System;
|
||
using System.Collections;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Reflection;
|
||
using System.Text;
|
||
using System.Text.RegularExpressions;
|
||
using System.Threading;
|
||
using System.Threading.Tasks;
|
||
using Api.Framework.Tools;
|
||
using Weixin.CircleTools.Entitys;
|
||
|
||
namespace Weixin.CircleTools
|
||
{
|
||
/// <summary>
|
||
/// 解析商品
|
||
/// </summary>
|
||
class AnalyzeGoods
|
||
{
|
||
/// <summary>
|
||
/// 通过商品的id查询返回获取到自己返利商品信息
|
||
/// </summary>
|
||
/// <param name="goods_id"></param>
|
||
/// <returns></returns>
|
||
public goodsinfos FindGoodsInfoToItemId(string goods_id, string pid_cps_name = "", string pid = "", string biz_scene_id = "2")
|
||
{
|
||
var session = ApiClient.GetSession();
|
||
try
|
||
{
|
||
if (!string.IsNullOrEmpty(goods_id))//符合搜索宝贝id的条件
|
||
{
|
||
var member = (string.IsNullOrEmpty(pid_cps_name) ? CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈) : CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.阿里妈妈 && f.username == pid_cps_name));
|
||
if (member == null) { return null; }
|
||
var api = CpsClient.CreateAlimamaRequest(member);
|
||
var itemInfo = api.GetItemInfo(goods_id, "2");
|
||
if (itemInfo != null && itemInfo.n_tbk_item != null && itemInfo.n_tbk_item.Count > 0)
|
||
{
|
||
var tbk_item = itemInfo.n_tbk_item[0];
|
||
//店铺名称
|
||
var nick = tbk_item.nick;
|
||
//商品主图
|
||
var pict_url = tbk_item.pict_url;
|
||
//商品id
|
||
goods_id = tbk_item.num_iid;
|
||
//商品标题
|
||
var title = tbk_item.title;
|
||
//商品折扣价格(当前售价)
|
||
var zk_final_price = double.Parse(tbk_item.zk_final_price);
|
||
//30天销量
|
||
var volume = tbk_item.volume;
|
||
var goods_desc = string.Empty;
|
||
|
||
var coupon_remain_quantity = string.Empty;
|
||
|
||
biz_scene_id = TBHelper.TbAnalysis.BizSceneId(goods_id);
|
||
|
||
var pids = pid.Split('_');
|
||
var privilege = api.SendTaobao("taobao.tbk.privilege.get", new { item_id = goods_id, site_id = pids[2], adzone_id = pids[3], biz_scene_id = biz_scene_id });
|
||
var privilege_data = privilege["data"] as Dictionary<string, object>;
|
||
//最高佣金率
|
||
var max_commission_rate = double.Parse(privilege_data["max_commission_rate"].ToString());
|
||
//优惠券地址
|
||
var coupon_click_url = string.Empty;
|
||
var coupon_price = 0.00d;
|
||
if (privilege_data.ContainsKey("coupon_info"))
|
||
{
|
||
var quan_reg = Regex.Match(privilege_data["coupon_info"].ToString(), @"满\d+元减(\d+)元");
|
||
if (quan_reg.Success) coupon_price = double.Parse(quan_reg.Groups[1].Value);
|
||
coupon_click_url = privilege_data["coupon_click_url"].ToString();
|
||
}
|
||
else
|
||
{
|
||
coupon_price = 0.00d;
|
||
coupon_click_url = privilege_data["coupon_click_url"].ToString();
|
||
}
|
||
|
||
return new goodsinfos() { cur_time = DateTime.Today, goods_id = goods_id, goods_name = title, mall_name = nick, goods_thumbnail_url = pict_url, sold_quantity = volume, normal_price = zk_final_price, coupon_discount = coupon_price, promotion_rate = max_commission_rate, shopping_url = coupon_click_url, goods_desc = goods_desc, coupon_remain_quantity = coupon_remain_quantity };
|
||
}
|
||
}
|
||
}
|
||
catch (Exception)
|
||
{ }
|
||
return null;
|
||
}
|
||
|
||
public void AnalysisText(string message, goodsinfos goodsinfo)
|
||
{
|
||
try
|
||
{
|
||
var list = new string[] { @"(?<短标题>[\w\W]+)\s?(优惠\s?券|领券|抢券)[::]\s?(?<优惠券>[\w\W]+)\s+(下单链接|下单|抢购|秒杀)[::]\s?(?<商品>[\w\W]+)\s+(?<长文案>[\w\W]+)", @"\[image=(?<图片地址>[\w\W]+)\]\s+(?<短标题>[\w\W]+)\s+(优惠券|领券|抢券)[::]\s?(?<优惠券>[\w\W]+)\s+(下单|抢购|秒杀)[::]\s?(?<商品>[\w\W]+)\s+(?<长文案>[\w\W]+)" };
|
||
|
||
foreach (string item in list)
|
||
{
|
||
var reg = Regex.Match(message, item);
|
||
if (reg.Success)
|
||
{
|
||
goodsinfo.goods_desc = reg.Groups["长文案"].ToString().Trim();
|
||
}
|
||
}
|
||
}
|
||
catch (Exception ex)
|
||
{ }
|
||
}
|
||
|
||
//public object FindResult(string method, object param = null)
|
||
//{
|
||
// string msd = method;
|
||
|
||
// int page = 0;
|
||
//Next:
|
||
// page++;
|
||
// string sign = string.Empty;
|
||
// string str = string.Empty;
|
||
// System.DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new System.DateTime(1970, 1, 1, 0, 0, 0, 0));
|
||
// long t = (DateTime.Now.Ticks - startTime.Ticks) / 10000; //除10000调整为13位
|
||
// if (param != null)
|
||
// {
|
||
// StringBuilder sb = new StringBuilder("now=" + t + "&");
|
||
|
||
// Type type = param.GetType();
|
||
// System.Reflection.PropertyInfo[] ps = type.GetProperties();
|
||
|
||
|
||
|
||
// foreach (PropertyInfo i in ps)
|
||
// {
|
||
// string name = i.Name;
|
||
// object value = i.GetValue(param, null);
|
||
// sb.Append(name + "=" + HttpHelper.URLEncode(value.ToString(), Encoding.UTF8));
|
||
// sb.Append("&");
|
||
// }
|
||
|
||
// str = sb.ToString();
|
||
// sign = HttpHelper.URLDecode((str.Substring(0, str.Length - 1) + "cps-api"), Encoding.UTF8);
|
||
// sign = sign.GetHashCode().ToString();
|
||
|
||
// }
|
||
// str += "sign=" + sign;
|
||
// HttpHelper http = new HttpHelper();
|
||
|
||
// HttpItem item = new HttpItem()
|
||
// {
|
||
// URL = _host + "/api/alimama.asmx/" + method + "?v=1.0.0.1",//URL 必需项
|
||
// Method = "post",//URL 可选项 默认为Get
|
||
// Timeout = 1000 * 30,//连接超时时间 可选项默认为100000
|
||
// ReadWriteTimeout = 1000 * 30,//写入Post数据超时时间 可选项默认为30000
|
||
// IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
|
||
// Cookie = "",//字符串Cookie 可选项
|
||
// UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",//用户的浏览器类型,版本,操作系统 可选项有默认值
|
||
// Accept = "text/html, application/xhtml+xml, */*",// 可选项有默认值
|
||
// ContentType = "application/x-www-form-urlencoded",//返回类型 可选项有默认值
|
||
// Referer = "http://license.52cmg.cn",//来源URL 可选项
|
||
// Postdata = str,//Post数据 可选项GET时不需要写
|
||
// };
|
||
|
||
// string html = string.Empty;
|
||
// try
|
||
// {
|
||
// html = http.GetHtml(item).Html;
|
||
// }
|
||
// catch (Exception)
|
||
// {
|
||
// if (page < 5)
|
||
// {
|
||
// page++;
|
||
// Thread.Sleep(500);
|
||
// goto Next;
|
||
// }
|
||
// }
|
||
|
||
// var dic = HttpExtend.JsonToDictionary(html);
|
||
// if (dic == null) throw new Exception(html);
|
||
|
||
// if (dic["ok"].ToString().ToUpper() == "FALSE")
|
||
// {
|
||
// string msg = dic["message"].ToString();
|
||
// if (page < 5 && string.IsNullOrEmpty(dic["message"].ToString()) && !msg.Contains("未授权") && !msg.Contains("Invalid session"))
|
||
// {
|
||
// Console.WriteLine("异常:" + msg);
|
||
// Thread.Sleep(500);
|
||
// goto Next;
|
||
// }
|
||
|
||
|
||
// throw new Exception(dic["message"].ToString());
|
||
// }
|
||
// return dic["message"];
|
||
//}
|
||
}
|
||
}
|