gsxhnd / garage

Set of crawl service for javbus

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

请问下目前是不支持保存磁力链接吗?

l987845225 opened this issue · comments

commented

请问下目前是不支持保存磁力链接吗?help里没有相关的命令

还有请问下怎么设置输出的文件夹,cmd里键入之后没有看到有文件输出下

C:\Users\Administrator\Desktop\xjwjj>garage crawl_code --proxy "http://127.0.0.1:10809" SDDE-603
2023-03-18T09:02:30.458764+00:00        �[34mINFO�[0m   Download info: SDDE-603
  1. 默认输出在当前目录,在 v0.0.7版本修复 已经修复 #2 v0.0.7
  2. 磁力连接你想怎么保存,全部存在文件里吗?
commented

请问现在不能够通过演员ID索引吗,为什么我使用命令什么也没下载呀

请问现在不能够通过演员ID索引吗,为什么我使用命令什么也没下载呀

@hanyaa-wut 番名前缀和演员ID 会在下一个版本支持这个功能,最近比较忙

请问现在不能够通过演员ID索引吗,为什么我使用命令什么也没下载呀

前缀功能已经实现

commented
  • 默认输出在当前目录,在 v0.0.7版本修复 已经修复 fix: dir not create #2 v0.0.7
  • 磁力连接你想怎么保存,全部存在文件里吗?

保存在 txt里面 然后批量导入115

  • 默认输出在当前目录,在 v0.0.7版本修复 已经修复 fix: dir not create #2 v0.0.7
  • 磁力连接你想怎么保存,全部存在文件里吗?

保存在 txt里面 然后批量导入115

一个页面下有多个磁力连接,默认全部下载?

尝试添加爬取磁力链接的代码,但似乎有反爬机制,需要获取gid uc img 作为ajax的query请求

<script>
	var gid = 54556884068;
	var uc = 0;
	var img = '/pics/cover/9q3z_b.jpg';
</script>
$(function() {
    var t = "../ajax/uncledatoolsbyajax.php?gid=" + gid + "&lang=" + lang + "&img=" + img + "&uc=" + uc + "&floor=" + Math.floor(1e3 * Math.random() + 1);
    $.ajax({
        url: t,
        type: "GET",
        success: function(t) {
            $("#magnet-table").append(t)
        }
    })
});

尽管能获取到这些参数并处理成url还是无法请求到磁力链接列表

func (cc *crawlClient) getJavMovieMagnetByJavbus(e *colly.HTMLElement) {
e.ForEach("script", func(i int, element *colly.HTMLElement) {
if i != 2 {
return
}
param := element.Text
param = strings.Replace(param, " ", "", -1)
param = strings.Replace(param, "\tvar", "", -1)
param = strings.Replace(param, "\r", "", -1)
param = strings.Replace(param, "\r\n", "", -1)
param = strings.Replace(param, "\n", "", -1)
param = strings.Replace(param, ";", "&", -1)
param = strings.Replace(param, "'", "", -1)
urlS := "https://www.javbus.com/ajax/uncledatoolsbyajax.php?" + param + "lang=zh&floor=442"
// u, _ := url.Parse(urlS)
// uGid := u.Query().Get("gid")
// uLang := u.Query().Get("lang")
// uImg := u.Query().Get("img")
// uUc := u.Query().Get("uc")
// uFloor := u.Query().Get("floor")
// urlS = "https://www.javbus.com/ajax/uncledatoolsbyajax.php?" +
// "gid=" + uGid + "&lang=" + uLang +
// "&img=" + uImg +
// "&uc=" + uUc +
// "&floor" + uFloor
cc.logger.Info("Get magnet url: " + urlS)
// res, _ := http.Get(urlS)
// body, _ := io.ReadAll(res.Body)
// fmt.Println(string(body))
e.Request.Visit(urlS)
})
}

commented
  • 默认输出在当前目录,在 v0.0.7版本修复 已经修复 fix: dir not create #2 v0.0.7
  • 磁力连接你想怎么保存,全部存在文件里吗?

保存在 txt里面 然后批量导入115

一个页面下有多个磁力连接,默认全部下载?

设置一个选项 下载 最大的 或者全部下载……

commented

这个好久没更新了 之前用的这个

磁力列表获取成功,接下来就是添加导出功能。
爬取需要添加header爬虫框架有点问题,需要使用额外的http client 才能获取到

garage/src/crawl/javbus.go

Lines 54 to 123 in 1b7f89e

func (cc *crawlClient) getJavMovieMagnetByJavbus(e *colly.HTMLElement) {
e.ForEach("script", func(i int, element *colly.HTMLElement) {
if i != 2 {
return
}
param := element.Text
param = strings.Replace(param, " ", "", -1)
param = strings.Replace(param, "\tvar", "", -1)
param = strings.Replace(param, "\r", "", -1)
param = strings.Replace(param, "\r\n", "", -1)
param = strings.Replace(param, "\n", "", -1)
param = strings.Replace(param, ";", "&", -1)
param = strings.Replace(param, "'", "", -1)
urlS := "https://www.javbus.com/ajax/uncledatoolsbyajax.php?" + param + "lang=zh&floor=442"
cc.logger.Info("Get magnet url: " + urlS)
r, _ := http.NewRequest("GET", urlS, nil)
r.Header.Add("Referer", e.Request.URL.Scheme+"://"+e.Request.URL.Host+e.Request.URL.Path)
res, _ := cc.httpClient.Do(r)
body, _ := io.ReadAll(res.Body)
defer res.Body.Close()
doc, _ := htmlquery.Parse(strings.NewReader("<table><tbody>" + string(body) + "</tbody></table>"))
list, err := htmlquery.QueryAll(doc, "//tr")
if err != nil {
fmt.Println(err)
}
var mList = make([]JavMovieMagnet, 0)
for _, n := range list {
// fmt.Println(n)
tdList, _ := htmlquery.QueryAll(n, "//td/a")
var m = JavMovieMagnet{
HD: false,
Subtitle: false,
}
for tdIndex, tdValue := range tdList {
// fmt.Println(tdIndex)
switch tdIndex {
case 0:
m.Link = htmlquery.SelectAttr(tdValue, "href")
m.Name = htmlquery.InnerText(tdValue)
default:
if htmlquery.InnerText(tdValue) == "高清" {
m.HD = true
} else if htmlquery.InnerText(tdValue) == "字幕" {
m.Subtitle = true
} else {
var sizeStr string = htmlquery.InnerText(tdValue)
sizeStr = strings.Replace(sizeStr, " ", "", -1)
sizeStr = strings.Replace(sizeStr, "\n", "", -1)
sizeStr = strings.Replace(sizeStr, "\x09", "", -1)
_, err := time.Parse("2006-01-02", sizeStr)
if err != nil {
b, err := bytesize.Parse(sizeStr)
if err != nil {
return
}
sizeStr = strings.Replace(b.Format("%.2f", "MB", false), "MB", "", -1)
size, _ := strconv.ParseFloat(sizeStr, 64)
m.Size = size
}
}
}
}
mList = append(mList, m)
fmt.Println(mList)
}
})
}

commented

爬取需要添加header爬虫框架有点问题,需要使用额外的http client 才能获取

👍期待

  1. 磁力链接下载 #5
  2. 新的版本已经发布 v0.0.8
commented
  1. 磁力链接下载 Feature/jav magnet #5
  2. 新的版本已经发布 v0.0.8

./g* crawl jav-prefix-code --magnet SDDE

win 好像不能获取磁力, 文件是空的

   --proxy value        代理配置,如: http://127.0.0.1:1080
   --site value         选择爬取数据的网站,支持网站(javbus) (default: "javbus")
   --output value       设置下载目录 (default: "./javbus")
   --magnet             保存磁力链接,开启参数 --magnet (default: false)
   --prefix-code value  番号前缀 (default: "EKDV")
   --prefix-min value   番号开始编号 (default: 1)
   --prefix-max value   番号结束编号 (default: 5)
   --help, -h           show help

@aiastia
prefix-code 不填写默认使用的是 EKDV
./g* crawl jav-prefix-code --magnet --prefix-code=SDDE --prefix-min=100 --prefix-max=110

commented

jav-star-code
jav-code-from-dir 这两个好像不支持 magnet 参数

jav-star-code jav-code-from-dir 这两个好像不支持 magnet 参数
jav-code-from-dir 是根据本地的视频爬取信息,视频本身已经存在了就不需要下载磁力链接。
jav-star-code 还没实现,我应该没有加到命令行中吧?

commented

jav-star-code

jav-star-code 有望加上吗?

jav-code-from-dir 感觉加上也行 比如分享的时候

jav-star-code

jav-star-code 有望加上吗?

jav-code-from-dir 感觉加上也行 比如分享的时候

jav-star-code 后续会实现 #6
jav-code-from-dir 的magnet 到时候下个版本一起加上

commented

这个如何运行呢,需要什么环境呢,我直接使用win的版本,闪退

这个如何运行呢,需要什么环境呢,我直接使用win的版本,闪退

二进制由github action 自动编译上传。 直接下载release中windows对应的版本就行

尝试添加爬取磁力链接的代码,但似乎有反爬机制,需要获取gid uc img 作为ajax的query请求

<script>
	var gid = 54556884068;
	var uc = 0;
	var img = '/pics/cover/9q3z_b.jpg';
</script>
$(function() {
    var t = "../ajax/uncledatoolsbyajax.php?gid=" + gid + "&lang=" + lang + "&img=" + img + "&uc=" + uc + "&floor=" + Math.floor(1e3 * Math.random() + 1);
    $.ajax({
        url: t,
        type: "GET",
        success: function(t) {
            $("#magnet-table").append(t)
        }
    })
});

尽管能获取到这些参数并处理成url还是无法请求到磁力链接列表

func (cc *crawlClient) getJavMovieMagnetByJavbus(e *colly.HTMLElement) {
e.ForEach("script", func(i int, element *colly.HTMLElement) {
if i != 2 {
return
}
param := element.Text
param = strings.Replace(param, " ", "", -1)
param = strings.Replace(param, "\tvar", "", -1)
param = strings.Replace(param, "\r", "", -1)
param = strings.Replace(param, "\r\n", "", -1)
param = strings.Replace(param, "\n", "", -1)
param = strings.Replace(param, ";", "&", -1)
param = strings.Replace(param, "'", "", -1)
urlS := "https://www.javbus.com/ajax/uncledatoolsbyajax.php?" + param + "lang=zh&floor=442"
// u, _ := url.Parse(urlS)
// uGid := u.Query().Get("gid")
// uLang := u.Query().Get("lang")
// uImg := u.Query().Get("img")
// uUc := u.Query().Get("uc")
// uFloor := u.Query().Get("floor")
// urlS = "https://www.javbus.com/ajax/uncledatoolsbyajax.php?" +
// "gid=" + uGid + "&lang=" + uLang +
// "&img=" + uImg +
// "&uc=" + uUc +
// "&floor" + uFloor
cc.logger.Info("Get magnet url: " + urlS)
// res, _ := http.Get(urlS)
// body, _ := io.ReadAll(res.Body)
// fmt.Println(string(body))
e.Request.Visit(urlS)
})
}

最近在看爬虫项目,不过我一般是用python玩,想请问一下这部分是如何获取到gid uc img 等数据的呢

@ikuntrue199 正常获取 第三个script

garage/src/crawl/javbus.go

Lines 190 to 201 in f6052eb

e.ForEach("script", func(i int, element *colly.HTMLElement) {
if i != 2 {
return
}
param := element.Text
param = strings.Replace(param, " ", "", -1)
param = strings.Replace(param, "\tvar", "", -1)
param = strings.Replace(param, "\r", "", -1)
param = strings.Replace(param, "\r\n", "", -1)
param = strings.Replace(param, "\n", "", -1)
param = strings.Replace(param, ";", "&", -1)
param = strings.Replace(param, "'", "", -1)