wxspider

package module
v0.0.0-...-ebcdc87 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 6, 2019 License: MIT Imports: 23 Imported by: 0

README

wxspider

采集已关注的微信公众号新发布的文章,发送到指定服务器

示例:

https://wechatrank.com/

使用

  1. 配置conf.toml
  2. 下载wxspider.exe并运行

实现过程

通过微信网页版相关接口,获得微信消息推送数据,匹配其中微信公众号文章的链接地址。 采集公众号文章地址相应的内容后,通过百度AI进行分类和标签,正文转换成markdown语法,发送到指定位置。

准备工作

  1. 百度AI接口密令,需要文章分类和文章标签权限,请自行申请 https://ai.baidu.com
  2. 采集服务器一台(一个64位windowns服务器)
  3. 可登录微信网页版的微信号一个 不知道自己微信能不能登录网页版?自行测试 https://wx.qq.com
  4. 数据发布服务器一台(具体参数请自行在服务器post打印)

配置conf.toml

请把conf.toml放在执行文件wxspider.exe位置

参考 conf.example.toml

# This is a TOML document. Boom.

[BaiDuAiConf]
api_key = "kGMQC1R***********InjUL"
secret_key = "H6Mk*******************0Y7DkH0p"

[PostConfig]
serve_url = "http://examples.com/"
authorization_token = ""

[WebServe]
Port = 3355

其他

可以通过 http://localhost:3355 端口获取最新100条数据

如需多开,请设置不同的端口

依赖

github.com/Sirupsen/logrus
github.com/labstack/echo
github.com/Kevingong2013/wechat
golang.org/x/net
golang.org/x/text
golang.org/x/crypto

警告:本项目没有质保,请勿商用

Documentation

Index

Constants

View Source
const BAIDU_AUTH_URL = "https://openapi.baidu.com/oauth/2.0/token"

Variables

This section is empty.

Functions

func CheckImage

func CheckImage(imageURL string) bool

CheckImage 检查图片合法性 1. 宽高大于或等于320

func ConvertStrEncode

func ConvertStrEncode(inStr, inCharset, outCharset string) string

字符串转编码

func DB

func DB() *gorm.DB

DB 返回 *gorm.DB

func GetToken

func GetToken() string

GetToken 获取baidu api token 临时用

func PostArticle

func PostArticle(article Article) (int64, error)

PostArticle 发布文章

func PublishArticle

func PublishArticle() error

PublishArticle 发布本地文章

func SpiderArticle

func SpiderArticle(urlStr string) error

SpiderArticle 采集文章并保存到本地

func UTF8ToGBK

func UTF8ToGBK(utf8 []byte) (gbk []byte, err error)

UTF8ToGBK utf8 2 gbk

Types

type AiCategories

type AiCategories struct {
	LogID     int64          `json:"log_id"`
	Item      AiCategoryItem `json:"item"`
	ErrorMSG  string         `json:"error_msg"`
	ErrorCode int            `json:"error_code"`
}

type AiCategoryItem

type AiCategoryItem struct {
	TopCategory    []AiTag `json:"lv1_tag_list"`
	SecondCatrgory []AiTag `json:"lv2_tag_list"`
}

type AiData

type AiData struct {
	Title string
	Desc  string
}

AiData 要获取描述的数据

type AiTag

type AiTag struct {
	Score float64 `json:"score"`
	Tag   string  `json:"tag"`
}

type AiTagParam

type AiTagParam struct {
	Title   string `json:"title"`
	Content string `json:"content"`
}

type AiTags

type AiTags struct {
	LogID     int64   `json:"log_id"`
	Items     []AiTag `json:"items"`
	ErrorMSG  string  `json:"error_msg"`
	ErrorCode int     `json:"error_code"`
}

type Article

type Article struct {
	ID         uint   `gorm:"primary_key"`
	Title      string // 标题
	Author     string // 作者
	AppName    string // 公众号名称
	AppID      string // 公众号ID
	Cover      string // 文章封面
	Intro      string // 描述
	Body       string // 公众号文章内容(正文)
	Cont       string // 公众号文章内容(文本)
	PubAt      string // 发布时间
	URL        string `gorm:"type:varchar(255);unique_index"` // 微信文章链接地址
	RoundHead  string // 圆头像
	OriHead    string // 原头像
	SourceURL  string // 公众号原文地址
	PublishAt  int64  `sql:"index" default:"0"` //采集器发布时间
	PostID     int64  // 发布线上返回的id
	Tags       string // 标签字符串
	Category   string // 一级分类
	Categories string // 二级分类
	Copyright  string // 已经 0,1,2   微小宝那 1 标识为原创
	Video      string // 视频地址
	Audio      string // 音频地址
	WxID       string // 微信公众号ID
	WxIntro    string // 微信公众号介绍
	Images     string
	CreatedAt  time.Time
	UpdatedAt  time.Time
	DeletedAt  *time.Time `sql:"index"`
}

Article 微信公众号文章

func GetArticles

func GetArticles() []Article

GetArticles 获取文章列表

func (Article) AiGetCategories

func (a Article) AiGetCategories() (tags AiCategories, err error)

AiGetCategories 文章通过ai.baidu.com 获取标签

func (Article) AiGetTags

func (a Article) AiGetTags() (tags AiTags, err error)

AiGetTags 文章通过ai.baidu.com 获取标签

func (*Article) GetArticleByID

func (article *Article) GetArticleByID(id int64)

GetArticleByID 通过ID获取Article

func (*Article) GetArticleByURL

func (article *Article) GetArticleByURL(url string)

GetArticleByURL Article 如果没有的话进行初始化

func (*Article) GetArticles

func (article *Article) GetArticles() []Article

GetArticles 获取最新采集的微信公众号文章列表 []Article

func (*Article) GetPlanPublushArticle

func (article *Article) GetPlanPublushArticle() []Article

GetPlanPublushArticle 获取计划发布的 []Article

func (*Article) Save

func (article *Article) Save()

Save Article

type AuthResponse

type AuthResponse struct {
	AccessToken      string `json:"access_token"`  //要获取的Access Token
	ExpireIn         string `json:"expire_in"`     //Access Token的有效期(秒为单位,一般为1个月);
	RefreshToken     string `json:"refresh_token"` //以下参数忽略,暂时不用
	Scope            string `json:"scope"`
	SessionKey       string `json:"session_key"`
	SessionSecret    string `json:"session_secret"`
	ERROR            string `json:"error"`             //错误码;关于错误码的详细信息请参考鉴权认证错误码(http://ai.baidu.com/docs#/Auth/top)
	ErrorDescription string `json:"error_description"` //错误描述信息,帮助理解和解决发生的错误。
}

type Authorizer

type Authorizer interface {
	Authorize(*Client) error
}

Authorizer 用于设置access_token 可以通过RESTFul api的方式从百度方获取 有效期为一个月,可以存至数据库中然后从数据库中获取

type BaiDuAiConf

type BaiDuAiConf struct {
	APIKey    string `toml:"api_key"`
	SecretKey string `toml:"secret_key"`
}

BaiDuAiConf 百度ai的密令

type Client

type Client struct {
	ClientID     string
	ClientSecret string
	AccessToken  string
	Authorizer   Authorizer
}

func NewClient

func NewClient(ApiKey, secretKey string) *Client

func (*Client) Auth

func (client *Client) Auth() error

func (*Client) SetAuther

func (client *Client) SetAuther(auth Authorizer)

type Config

type Config struct {
	BaiDuAiConf BaiDuAiConf
	PostConfig  PostConfig
	WebServe    WebServe
}

Config 配置

func GetConf

func GetConf() Config

GetConf 获取config

type DefaultAuthorizer

type DefaultAuthorizer struct{}

func (DefaultAuthorizer) Authorize

func (da DefaultAuthorizer) Authorize(client *Client) error

type PostConfig

type PostConfig struct {
	ServeURL           string `toml:"serve_url"`
	AuthorizationToken string `toml:"authorization_token"`
}

PostConfig 配置

type PostMessage

type PostMessage struct {
	ID      int64  `json:"id"`
	Message string `json:"message"`
}

PostMessage 发布数据返回消息 成功返回 id 失败返回json

type WebServe

type WebServe struct {
	Port int64 `toml:"port"`
}

WebServe 本地web服务器设置

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL