找回密码
 立即注册
搜索
查看: 1820|回复: 7

[网络] 响应巨蟒侠,分享一下前一段弄得一个自动爬某站bt的脚本吧

[复制链接]
     
发表于 2021-1-12 20:13 | 显示全部楼层 |阅读模式
本帖最后由 革萌 于 2021-1-12 22:12 编辑

基本上Cookie那一行换成自己的就行
  1. nas_url = "http://192.168.50.136:8888/transfers/action"
复制代码
这一行需要改成自己的tixati的webui地址,session.verify视自己的网络情况看是否需要。(感谢一楼提醒)

解释一下哈 这个脚本是需要随便写个守护进程来周期性运行的,比如每小时执行一次,自动把最下面url列表里的url抓一边,把抓到的种子丢到下载器去下载。
不过我跑了一个月,下了几百G完全不想看的图集,最后硬盘还坏了

比如把python代码存成ex.py的话,随便写个bat
  1. :loop
  2. python ex.py
  3. sleep 3600
  4. goto loop
复制代码



忘了说,下载用的是tixati,这个bt下载器带一个web ui,换成aria2也是没啥问题的,只是需要改一下提交下载任务的代码


  1. import requests
  2. import bs4
  3. import re
  4. import sqlite3

  5. from datetime import datetime

  6. from requests.packages.urllib3.util.retry import Retry
  7. from requests.adapters import HTTPAdapter


  8. def get_time():
  9.     now = datetime.now()  # current date and time
  10.     return now.strftime("%m/%d/%Y, %H:%M:%S")


  11. conn = sqlite3.connect('exhentai.db')
  12. c = conn.cursor()
  13. c.execute("""CREATE TABLE IF NOT EXISTS gallerys (
  14.            name TEXT  NOT NULL,  
  15.         url TEXT  NOT NULL,  
  16.     gid TEXT PRIMARY KEY  NOT NULL,
  17.     tor_url TEXT,
  18.     modified_date TEXT
  19.     )""")

  20. c.execute("""CREATE TABLE IF NOT EXISTS gallerys_tor (
  21.     gid TEXT  NOT NULL,
  22.     tor_url TEXT,
  23.     hash TEXT PRIMARY KEY NOT NULL,
  24.     filename TEXT,
  25.     seeds INTEGER ,
  26.     file_size REAL,
  27.     upload_date TEXT,
  28.     modified_date TEXT
  29.     )""")

  30. c.execute("""CREATE TABLE IF NOT EXISTS tor_task (
  31.     hash TEXT PRIMARY KEY NOT NULL,
  32.     url TEXT,
  33.     status TEXT,
  34.     modified_date TEXT
  35.     )""")

  36. headers = {
  37.     "Connection": "keep-alive",
  38.     "Cache-Control": "max-age=0",
  39.     "Upgrade-Insecure-Requests": "1",
  40.     "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36",
  41.     "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
  42.     "Sec-Fetch-Site": "same-origin",
  43.     "Sec-Fetch-Mode": "navigate",
  44.     "Sec-Fetch-User": "?1",
  45.     "Sec-Fetch-Dest": "document",
  46.     "Referer": "https://exhentai.org/",
  47.     "Accept-Language": "zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7",
  48.     "Cookie": "ipb_member_id=; ipb_pass_hash=; igneous=; sl=dm_1; sk=; u="
  49. }

  50. session = requests.Session()
  51. session.keep_alive = False
  52. session.verify = 'GotoXCA.crt'

  53. retry = Retry(connect=30, backoff_factor=0.5)
  54. adapter = HTTPAdapter(max_retries=retry)
  55. session.mount('http://', adapter)
  56. session.mount('https://', adapter)

  57. def addTask(tor_file_url):
  58.     print("下载种子 " + tor_file_url)
  59.     hash = re.search("https://exhentai\.org/torrent/\d+/([\da-z]+)\.torrent\?p=[\da-z-]+", tor_file_url).group(1)
  60.     c.execute("select count(1) from tor_task where hash = '"+hash+"'")
  61.     result=c.fetchone()
  62.     if(result[0]>0):
  63.         return
  64.     r = session.get(tor_file_url, headers=headers)
  65.     if (r.status_code == 200):
  66.         nas_url = "http://192.168.50.136:8888/transfers/action"
  67.         files = {'metafile': r.content}
  68.         data = {'noautostart': "0", "addmetafile": "Add"}
  69.         add_res=session.post(nas_url, files=files, data=data)
  70.         if(add_res == 200):
  71.             print("添加任务成功")
  72.         c.execute( "insert into tor_task (hash,url,status,modified_date) VALUES(?, ?, ?,?) ",  (hash,tor_file_url,"Add", get_time()))
  73.         conn.commit()


  74. def processTor(tor_page_url):
  75.     print("process "+tor_page_url)
  76.     r = session.get(tor_page_url, headers=headers)
  77.     if(r.status_code==200):
  78.         gid_1 = re.search("https://exhentai\.org/gallerytorrents\.php\?gid=(\d+)", tor_page_url).group(1)
  79.         doc = bs4.BeautifulSoup(r.text,features="html.parser")
  80.         torlist=[]
  81.         for f in doc.select("form"):
  82.             if(len(f.select("div table tr td")))>3 and f.select("div table tr")[2].select_one("td a") != None:
  83.                 tor_url = re.search("document\.location='([^']+)",f.select("div table tr")[2].select_one("td a")["onclick"]).group(1)
  84.                 tor_filename = f.select("div table tr")[2].select_one("td a").text
  85.                 tor_upload_date = re.search("Posted:\s([\d\s:-]+)",f.select("div table tr td")[0].text).group(1)
  86.                 tor_size = re.search("Size:\s(.+)",f.select("div table tr td")[1].text).group(1)
  87.                 tor_seed = re.search("Seeds:\s(\d+)",f.select("div table tr td")[3].text).group(1)
  88.                 hash = re.search("https://exhentai\.org/torrent/\d+/([\da-z]+)\.torrent\?p=[\da-z-]+",tor_url).group(1)
  89.                 torlist.append({"upload_time":tor_upload_date,"tor_url":tor_url})
  90.                 c.execute("replace into gallerys_tor (gid,tor_url,seeds,file_size,upload_date,modified_date,hash,filename) VALUES(?, ?, ?, ?,?,?,?,?) ", ( gid_1, tor_url,tor_seed,tor_size,   tor_upload_date , get_time(),hash,tor_filename))
  91.         conn.commit()
  92.         addTask(sorted(torlist, key=lambda i:  datetime.strptime(i['upload_time'],"%Y-%m-%d %H:%M"))[-1]["tor_url"])


  93. def processPage(page_url):
  94.     print("处理页面 "+page_url)
  95.     r = session.get(page_url, headers=headers)
  96.     if (r.status_code == 200):
  97.         doc = bs4.BeautifulSoup(r.text,features="html.parser")
  98.         file_entrys = doc.select(".gl1t")
  99.         for file_entry in file_entrys:
  100.             name = file_entry.select_one(".gl3t a img")['title']
  101.             url = file_entry.select_one(".gl3t a")['href']
  102.             gid = re.search("https://exhentai\.org/g/(\d+)", url).group(1)
  103.             tor_url_a = file_entry.select_one(".gldown a")
  104.             if tor_url_a is None:
  105.                 tor_url = ""
  106.             else:
  107.                 tor_url = re.search("return\spopUp\('([^']+)", tor_url_a['onclick']).group(1)
  108.                 processTor(tor_url)
  109.             c.execute("replace into gallerys VALUES(?, ?, ?, ?,?) ", (name, url, gid, tor_url,  get_time()))
  110.         conn.commit()

  111. def processTask(url_arr):
  112.     for url in url_arr:
  113.         processPage(url)

  114. watch_urls=[
  115.     "https://exhentai.org/watched?page=11",
  116.     "https://exhentai.org/watched?page=10",
  117.     "https://exhentai.org/watched?page=9",
  118.     "https://exhentai.org/watched?page=8",
  119.     "https://exhentai.org/watched?page=7",
  120.     "https://exhentai.org/watched?page=6",
  121.     "https://exhentai.org/watched?page=5",
  122.     "https://exhentai.org/watched?page=4",
  123.     "https://exhentai.org/watched?page=3",
  124.     "https://exhentai.org/watched?page=2",
  125.     "https://exhentai.org/watched?page=1",
  126.     "https://exhentai.org/watched"
  127.       ]

  128. pop_urls = [
  129.     "https://exhentai.org/popular"
  130. ]
  131. processTask(pop_urls)
  132. processTask(watch_urls)





复制代码







回复

使用道具 举报

头像被屏蔽
     
发表于 2021-1-12 20:48 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2021-1-12 21:38 | 显示全部楼层
nessaj 发表于 2021-1-12 20:48
你这需要替换的地方有点多吧...
不说硬性的
我似乎没找到关键字Filter在哪里设置呀.... ...

e站的filter是用url传的
回复

使用道具 举报

头像被屏蔽
     
发表于 2021-1-12 21:41 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

     
 楼主| 发表于 2021-1-12 21:45 | 显示全部楼层
nessaj 发表于 2021-1-12 21:41
那么怎么自定义filter呢
  1. https://exhentai.org/?page=1&f_search=+language:chinese

复制代码


这么写就行了
回复

使用道具 举报

     
 楼主| 发表于 2021-1-20 22:19 | 显示全部楼层
为什么巨蟒侠的帖子那么多人回,我的贴子连巨蟒侠都不回。来几个人拍死我也好啊。
回复

使用道具 举报

     
发表于 2021-1-20 22:23 来自手机 | 显示全部楼层
手动挑artbook中,毕竟多数也不想要

—— 来自 Xiaomi MIX 2S, Android 10上的 S1Next-鹅版 v2.4.4
回复

使用道具 举报

     
 楼主| 发表于 2021-1-20 22:29 | 显示全部楼层
祸猫 发表于 2021-1-20 22:23
手动挑artbook中,毕竟多数也不想要

—— 来自 Xiaomi MIX 2S, Android 10上的 S1Next-鹅版 v2.4.4 ...

我准备写个从我的收藏里扩散,找最有可能感兴趣的gallery
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|上海互联网违法和不良信息举报中心|网上有害信息举报专区|962110 反电信诈骗|举报电话 021-62035905|Stage1st ( 沪ICP备13020230号-1|沪公网安备 31010702007642号 )

GMT+8, 2024-11-14 22:05 , Processed in 0.035593 second(s), 5 queries , Gzip On, Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表