Skip to content

Commit

Permalink
fixed #13
Browse files Browse the repository at this point in the history
  • Loading branch information
chenzhou committed Nov 23, 2021
1 parent 37afb78 commit 96081dc
Show file tree
Hide file tree
Showing 4 changed files with 31 additions and 68 deletions.
4 changes: 3 additions & 1 deletion go.mod
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
module DouTu2.0

go 1.14
go 1.14

require github.com/PuerkitoBio/goquery v1.8.0
21 changes: 11 additions & 10 deletions go.sum
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
github.com/PuerkitoBio/goquery v1.5.1 h1:PSPBGne8NIUWw+/7vFBV+kG2J/5MOjbzc7154OaKCSE=
github.com/PuerkitoBio/goquery v1.5.1/go.mod h1:GsLWisAFVj4WgDibEWF4pvYnkVQBpKBKeU+7zCJoLcc=
github.com/andybalholm/cascadia v1.1.0 h1:BuuO6sSfQNFRu1LppgbD25Hr2vLYW25JvxHs5zzsLTo=
github.com/andybalholm/cascadia v1.1.0/go.mod h1:GsXiBklL0woXo1j/WYWtSYYC4ouU9PqHO0sqidkEA4Y=
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
golang.org/x/net v0.0.0-20180218175443-cbe0f9307d01/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2 h1:CCH4IOTTfewWjGOlSp+zGcjutRKlBEZQ6wTn8ozI/nI=
golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
github.com/PuerkitoBio/goquery v1.8.0 h1:PJTF7AmFCFKk1N6V6jmKfrNH9tV5pNE6lZMkG0gta/U=
github.com/PuerkitoBio/goquery v1.8.0/go.mod h1:ypIiRMtY7COPGk+I/YbZLbxsxn9g5ejnI2HSMtkjZvI=
github.com/andybalholm/cascadia v1.3.1 h1:nhxRkql1kdYCc8Snf7D5/D3spOX+dBgjA6u8x004T2c=
github.com/andybalholm/cascadia v1.3.1/go.mod h1:R4bJ1UQfqADjvDa4P6HZHLh/3OxWWEqc0Sk8XGwHqvA=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8 h1:/6y1LfuqNuQdHAm0jjtPtgRcxIxjVZgm5OTu8/QhZvk=
golang.org/x/net v0.0.0-20210916014120-12bc252f5db8/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
74 changes: 17 additions & 57 deletions main.go
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package main

import (
"encoding/json"
"encoding/xml"
"flag"
"fmt"
Expand All @@ -12,22 +11,15 @@ import (
"strings"
"sync"
"time"

"github.com/PuerkitoBio/goquery"
)

const ApiUrl = "https://www.52doutu.cn/api/"
const QueryUrl = "https://www.doutula.com/search?keyword="
const ImgPath = "images"

var wg sync.WaitGroup

type Result struct {
Code int `json:"code"`
Msg string `json:"msg"`
Count int `json:"count"`
Rows []struct {
URL string `json:"url"`
} `json:"rows"`
}

type Items struct {
XMLName xml.Name `xml:"items"`
Version string `xml:"version,attr"`
Expand All @@ -45,7 +37,7 @@ type Item struct {
Autocomplete string `xml:"autocomplete,attr"`
}

func GetXml(list []Item) string {
func GetXML(list []Item) string {
bs := Items{Version: "1.0", Encoding: "UTF-8"}
for _, v := range list {
v.Uid = time.Now().UnixNano()
Expand All @@ -56,63 +48,31 @@ func GetXml(list []Item) string {
return string(data)
}

func showError(msg string) {
list := make([]Item, 0)
list = append(list, Item{Arg: "", Title: "异常:" + msg, Icon: ""})
xmlStr := GetXml(list)
wg.Wait()
fmt.Println(xmlStr)
os.Exit(1)
}

func getContent(query string) {
client := &http.Client{}

req, err := http.NewRequest("POST", ApiUrl, strings.NewReader("types=search&action=searchpic&limit=60&offset=0&wd="+query))
url := QueryUrl + query
resp, err := http.Get(url)
if err != nil {
showError(err.Error())
log.Fatal("网络请求失败:", err)
}

req.Header.Set("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8")
req.Header.Set("Accept", "application/json, text/javascript, */*; q=0.01")
req.Header.Set("User-Agent", "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36")
req.Header.Set("Referer", ApiUrl)
req.Header.Set("Origin", ApiUrl)

resp, err := client.Do(req)

if err != nil {
showError(err.Error())
if resp.StatusCode != 200 {
log.Fatalf("网络请求失败: %d %s", resp.StatusCode, resp.Status)
}

defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)
doc, err := goquery.NewDocumentFromReader(resp.Body)
if err != nil {
showError(err.Error())
}
rst := Result{}

if err := json.Unmarshal(body, &rst); err != nil {
showError(err.Error())
}

if rst.Code != 200 {
showError(rst.Msg)
}
if rst.Count <= 0 {
showError("无结果")
log.Fatal(err)
}

list := make([]Item, 0)
for _, v := range rst.Rows {
url := v.URL
doc.Find(".img-responsive").Each(func(i int, s *goquery.Selection) {
url, _ := s.Attr("data-original")
name := s.Next().Text()
icon := getFileName(url)
wg.Add(1)
go saveFile(url)
list = append(list, Item{Arg: icon, Title: query, Icon: icon})
}
xmlStr := GetXml(list)
list = append(list, Item{Arg: icon, Title: name, Icon: icon})
})
xmlStr := GetXML(list)
wg.Wait()
fmt.Println(xmlStr)
}
Expand Down
Binary file modified resource/DouTu.alfredworkflow
Binary file not shown.

0 comments on commit 96081dc

Please sign in to comment.