淘宝Item对象转换CSV文件格式

Imports System.Runtime.CompilerServices
Imports System.Text.RegularExpressions
Imports System.Text
Imports Top.Api.Domain

Public Module ItemHelper

#Region "CsvTable"

    <Extension()>
    Public Function ToCsvTable(ByVal Items As IEnumerable(Of Item)) As DataTable
        Dim Table As DataTable = GetTaobaoCsvTable()
        For Each Item As Item In Items
            Dim Row As DataRow = Table.NewRow
            Row("宝贝名称") = Item.Title
            Row("宝贝类目") = Item.Cid
            Row("店铺类目") = Item.SellerCids
            Row("新旧程度") = 0
            Row("省") = Item.Location.State
            Row("城市") = Item.Location.City
            Row("出售方式") = "b"
            Row("宝贝价格") = Item.Price
            'Row("加价幅度") = Nothing
            Row("宝贝数量") = Item.Num
            Row("有效期") = Item.ValidThru
            Row("运费承担") = 1
            Row("平邮") = Item.PostFee
            Row("EMS") = Item.EmsFee
            Row("快递") = Item.ExpressFee
            'Row("付款方式") = Nothing
            'Row("支付宝") = Nothing
            Row("发票") = 1
            'Row("保修") = Nothing
            'Row("闪电发货") = Nothing
            'Row("自动重发") = Nothing
            'Row("放入仓库") = Nothing
            'Row("橱窗推荐") = Nothing
            'Row("开始时间") = Nothing
            'Row("心情故事") = Nothing
            Row("宝贝描述") = Item.Desc
            'Row("宝贝图片") = Nothing
            Row("宝贝属性") = Item.Props
            'Row("团购价") = Nothing
            'Row("最小团购件数") = Nothing
            Row("邮费模版ID") = Item.PostageId
            'Row("会员打折") = Nothing
            'Row("修改时间") = Nothing
            'Row("上传状态") = Nothing
            'Row("图片状态") = Nothing
            Row("返点比例") = Item.AuctionPoint
            Row("新图片") = Item.CsvImgs
            'Row("视频") = Nothing
            Row("销售属性组合") = Item.Skus.CsvSkus
            If Not String.IsNullOrEmpty(Item.InputPids) Then
                Row("用户输入ID串") = "," & Item.InputPids
            End If
            If Not String.IsNullOrEmpty(Item.InputStr) Then
                Row("用户输入名-值对") = "," & Item.InputStr
            End If
            Row("商家编码") = Item.OuterId
            If Not String.IsNullOrEmpty(Item.PropertyAlias) Then
                Row("销售属性别名") = Item.PropertyAlias & ";"
            End If
            'Row("代充类型") = Nothing
            'Row("宝贝编号") = Nothing
            Row("数字ID") = Item.NumIid
            Table.Rows.Add(Row)
        Next
        Return Table
    End Function

    Private Function GetTaobaoCsvTable(Optional ByVal Name As String = "ItemList") As DataTable
        Dim Table As New DataTable(Name)
        Table.Columns.Add("宝贝名称", GetType(String))
        Table.Columns.Add("宝贝类目", GetType(Long))
        Table.Columns.Add("店铺类目", GetType(String))
        Table.Columns.Add("新旧程度", GetType(Long))
        Table.Columns.Add("省", GetType(String))
        Table.Columns.Add("城市", GetType(String))
        Table.Columns.Add("出售方式", GetType(String))
        Table.Columns.Add("宝贝价格", GetType(String))
        Table.Columns.Add("加价幅度", GetType(String))
        Table.Columns.Add("宝贝数量", GetType(Long))
        Table.Columns.Add("有效期", GetType(Long))
        Table.Columns.Add("运费承担", GetType(Long))
        Table.Columns.Add("平邮", GetType(String))
        Table.Columns.Add("EMS", GetType(String))
        Table.Columns.Add("快递", GetType(String))
        Table.Columns.Add("付款方式", GetType(String))
        Table.Columns.Add("支付宝", GetType(String))
        Table.Columns.Add("发票", GetType(Long))
        Table.Columns.Add("保修", GetType(Long))
        Table.Columns.Add("闪电发货", GetType(String))
        Table.Columns.Add("自动重发", GetType(String))
        Table.Columns.Add("放入仓库", GetType(String))
        Table.Columns.Add("橱窗推荐", GetType(String))
        Table.Columns.Add("开始时间", GetType(Date))
        Table.Columns.Add("心情故事", GetType(String))
        Table.Columns.Add("宝贝描述", GetType(String))
        Table.Columns.Add("宝贝图片", GetType(String))
        Table.Columns.Add("宝贝属性", GetType(String))
        Table.Columns.Add("团购价", GetType(String))
        Table.Columns.Add("最小团购件数", GetType(String))
        Table.Columns.Add("邮费模版ID", GetType(Long))
        Table.Columns.Add("会员打折", GetType(String))
        Table.Columns.Add("修改时间", GetType(Date))
        Table.Columns.Add("上传状态", GetType(String))
        Table.Columns.Add("图片状态", GetType(String))
        Table.Columns.Add("返点比例", GetType(Long))
        Table.Columns.Add("新图片", GetType(String))
        Table.Columns.Add("视频", GetType(String))
        Table.Columns.Add("销售属性组合", GetType(String))
        Table.Columns.Add("用户输入ID串", GetType(String))
        Table.Columns.Add("用户输入名-值对", GetType(String))
        Table.Columns.Add("商家编码", GetType(String))
        Table.Columns.Add("销售属性别名", GetType(String))
        Table.Columns.Add("代充类型", GetType(String))
        Table.Columns.Add("宝贝编号", GetType(String))
        Table.Columns.Add("数字ID", GetType(Long))
        Return Table
    End Function

    ''' <summary>
    ''' 返回淘宝助理新图片格式
    ''' </summary>
    <Extension()>
    Public Function CsvImgs(ByVal Item As Item) As String
        Dim str As New StringBuilder
        For i = 0 To Item.ItemImgs.Count - 1
            str.Append(String.Format("{0}-0-{1}:0:{2}:|;", Item.NumIid, i, i))
        Next
        For j = 0 To Item.PropImgs.Count - 1
            str.Append(String.Format("{0}-1-{1}:0:{2}:|;", Item.NumIid, j, j))
        Next
        Return str.ToString
    End Function

    ''' <summary>
    ''' 返回淘宝助理销售属性组合格式
    ''' </summary>
    <Extension()>
    Public Function CsvSkus(ByVal Skus As List(Of Sku)) As String
        Dim str As New StringBuilder
        For Each Sku In Skus
            str.Append(Sku.Price).Append("0000:")
            str.Append(Sku.Quantity).Append(":")
            str.Append(Sku.OuterId).Append(":")
            str.Append(Sku.Properties).Append(";")
        Next
        Return str.ToString
    End Function

#End Region

#Region "ImageTable"

    <Extension()>
    Public Function ToImageTable(ByVal Items As IEnumerable(Of Item)) As DataTable
        Dim Table As New DataTable("ItemImages")
        Table.Columns.Add("SaveName", GetType(String))
        Table.Columns.Add("ImageUrl", GetType(String))
        For Each Item In Items
            Dim ImgName As String
            For i = 0 To Item.ItemImgs.Count - 1
                ImgName = String.Format("{0}-0-{1}.jpg", Item.NumIid.ToString, i)
                Table.Rows.Add(ImgName, Item.ItemImgs(i).Url)
            Next
            For i = 0 To Item.PropImgs.Count - 1
                ImgName = String.Format("{0}-1-{1}.jpg", Item.NumIid.ToString, i)
                Table.Rows.Add(ImgName, Item.PropImgs(i).Url)
            Next
        Next
        Return Table
    End Function

    Private TopImgRegex As New Regex("<img\b[^<>]*?\bsrc[\s\t\r\n]*=[\s\t\r\n]*[""']?[\s\t\r\n]*(?<imgUrl>[^\s\t\r\n""'<>]*)[^<>]*?/?[\s\t\r\n]*>", RegexOptions.Compiled)

    <Extension()>
    Public Function ToDescImgUrlTable(ByVal Items As IEnumerable(Of Item)) As DataTable
        Dim Table As New DataTable("ItemImages")
        Table.Columns.Add("NumIid", GetType(Long))
        Table.Columns.Add("TopUrl", GetType(String))
        For Each Item In Items
            Dim Mc As MatchCollection = TopImgRegex.Matches(Item.Desc)
            For Each Match As Match In Mc
                Dim Url As String = Match.Groups("imgUrl").Value
                If Url.IndexOf("taobao", StringComparison.OrdinalIgnoreCase) <> -1 Then
                    Table.Rows.Add(Item.NumIid, Match.Groups("imgUrl").Value)
                End If
            Next
        Next
        Return Table
    End Function

#End Region

End Module

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值