mirror of
https://github.com/ngfchl/ptools
synced 2023-07-10 13:41:22 +08:00
更新:站点信息、升级信息添加字段
This commit is contained in:
20
pt_site/migrations/0040_site_identity.py
Normal file
20
pt_site/migrations/0040_site_identity.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-30 14:56
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("pt_site", "0039_site_publish_rule"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="identity",
|
||||
field=models.IntegerField(
|
||||
help_text="唯一值,自行适配站点的请填写的尽量大", null=True, verbose_name="认证ID"
|
||||
),
|
||||
),
|
||||
]
|
||||
20
pt_site/migrations/0041_alter_site_identity.py
Normal file
20
pt_site/migrations/0041_alter_site_identity.py
Normal file
@@ -0,0 +1,20 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-30 14:59
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("pt_site", "0040_site_identity"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="site",
|
||||
name="identity",
|
||||
field=models.IntegerField(
|
||||
help_text="唯一值,自行适配站点的请填写的尽量大", unique=True, verbose_name="认证ID"
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,138 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-30 15:23
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("pt_site", "0041_alter_site_identity"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.RemoveField(model_name="site", name="download_url_rule",),
|
||||
migrations.RemoveField(model_name="site", name="hash_rule",),
|
||||
migrations.RemoveField(model_name="site", name="peer_speed_rule",),
|
||||
migrations.RemoveField(model_name="site", name="record_count_rule",),
|
||||
migrations.RemoveField(model_name="site", name="viewfilelist_rule",),
|
||||
migrations.RemoveField(model_name="site", name="viewpeerlist_rule",),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_area_rule",
|
||||
field=models.CharField(
|
||||
default='//h1/following::td/b[contains(text(),"地区")]/text()',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子地区",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_category_rule",
|
||||
field=models.CharField(
|
||||
default='//td/b[contains(text(),"类型")]/following-sibling::text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子类型",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_count_files_rule",
|
||||
field=models.CharField(
|
||||
default='//td/b[contains(text(),"文件数")]/following-sibling::text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页文件数",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_douban_rule",
|
||||
field=models.CharField(
|
||||
default='//td/a[starts-with(@href,"https://movie.douban.com/subject/")][1]',
|
||||
help_text="提取做种列表中文件大小计算总量",
|
||||
max_length=128,
|
||||
verbose_name="详情页豆瓣信息",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_download_url_rule",
|
||||
field=models.CharField(
|
||||
default='//a[@class="index" and contains(@href,"download.php")]/@href',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子链接",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_free_expire_rule",
|
||||
field=models.CharField(
|
||||
default='//h1/b/font[contains(@class,"free")]/parent::b/following-sibling::b/span/@title',
|
||||
max_length=128,
|
||||
verbose_name="详情页促销时间",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_free_rule",
|
||||
field=models.CharField(
|
||||
default='//td//b[contains(text(),"大小")]/following::text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页促销标记",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_hash_rule",
|
||||
field=models.CharField(
|
||||
default='//td/b[contains(text(),"Hash")]/following-sibling::text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子HASH",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_size_rule",
|
||||
field=models.CharField(
|
||||
default='//td//b[contains(text(),"大小")]/following::text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子大小",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_subtitle_rule",
|
||||
field=models.CharField(
|
||||
default='//td[contains(text(),"副标题")]/following-sibling::td/text()[1]',
|
||||
max_length=128,
|
||||
verbose_name="详情页种子副标题",
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_title_rule",
|
||||
field=models.CharField(
|
||||
default="//h1/text()[1]", max_length=128, verbose_name="详情页种子标题"
|
||||
),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="site",
|
||||
name="detail_year_publish_rule",
|
||||
field=models.CharField(
|
||||
default='year_current_publish: //td/b[contains(text(),"发行版年份")]/text()',
|
||||
help_text="提取做种列表中文件大小计算总量",
|
||||
max_length=128,
|
||||
verbose_name="详情页豆瓣信息",
|
||||
),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userlevelrule",
|
||||
name="site",
|
||||
field=models.ForeignKey(
|
||||
on_delete=django.db.models.deletion.CASCADE,
|
||||
to="pt_site.site",
|
||||
to_field="identity",
|
||||
verbose_name="站 点",
|
||||
),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,36 @@
|
||||
# Generated by Django 4.1.2 on 2023-01-30 15:28
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
(
|
||||
"pt_site",
|
||||
"0042_remove_site_download_url_rule_remove_site_hash_rule_and_more",
|
||||
),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name="userlevelrule",
|
||||
name="leeches",
|
||||
field=models.IntegerField(default=0, help_text="完成种子数", verbose_name="吸血数"),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name="userlevelrule",
|
||||
name="seeding_delta",
|
||||
field=models.FloatField(default=0, help_text="累计做种时间", verbose_name="做种时间"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userlevelrule",
|
||||
name="bonus",
|
||||
field=models.FloatField(default=0, verbose_name="魔 力"),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="userlevelrule",
|
||||
name="torrents",
|
||||
field=models.IntegerField(default=0, help_text="发布种子数", verbose_name="发 种"),
|
||||
),
|
||||
]
|
||||
@@ -10,6 +10,7 @@ from ptools.base import BaseEntity, DownloaderCategory
|
||||
# 支持的站点
|
||||
class Site(BaseEntity):
|
||||
# 站点设置
|
||||
identity = models.IntegerField(verbose_name='认证ID', unique=True, help_text='唯一值,自行适配站点的请填写的尽量大')
|
||||
url = models.URLField(verbose_name='站点网址', default='', help_text='请保留网址结尾的"/"', unique=True)
|
||||
name = models.CharField(max_length=32, verbose_name='站点名称')
|
||||
nickname = models.CharField(max_length=16, verbose_name='简称', default='', help_text='英文,用于刷流')
|
||||
@@ -108,10 +109,6 @@ class Site(BaseEntity):
|
||||
verbose_name='主页下载链接',
|
||||
default='.//td/a[contains(@href,"download.php?id=")]/@href',
|
||||
max_length=128)
|
||||
download_url_rule = models.CharField(
|
||||
verbose_name='详情页种子链接',
|
||||
default='.//a[contains(@href,"download.php?id=") and contains(@href,"passkey")]/@href',
|
||||
max_length=128)
|
||||
size_rule = models.CharField(verbose_name='文件大小',
|
||||
default='.//td[5]/text()',
|
||||
max_length=128)
|
||||
@@ -144,18 +141,58 @@ class Site(BaseEntity):
|
||||
verbose_name='完成人数',
|
||||
default='.//a[contains(@href,"viewsnatches")]//text()',
|
||||
max_length=128)
|
||||
viewfilelist_rule = models.CharField(
|
||||
verbose_name='解析文件结构',
|
||||
default='.//td/text()',
|
||||
detail_title_rule = models.CharField(
|
||||
verbose_name='详情页种子标题',
|
||||
default='//h1/text()[1]',
|
||||
max_length=128)
|
||||
viewpeerlist_rule = models.CharField(
|
||||
verbose_name='平均下载进度',
|
||||
default='.//tr/td[9]/nobr/text()',
|
||||
detail_subtitle_rule = models.CharField(
|
||||
verbose_name='详情页种子副标题',
|
||||
default='//td[contains(text(),"副标题")]/following-sibling::td/text()[1]',
|
||||
max_length=128)
|
||||
peer_speed_rule = models.CharField(
|
||||
verbose_name='平均下载速度',
|
||||
default='.//tr/td[7]/nobr/text()',
|
||||
detail_download_url_rule = models.CharField(
|
||||
verbose_name='详情页种子链接',
|
||||
default='//a[@class="index" and contains(@href,"download.php")]/@href',
|
||||
max_length=128)
|
||||
detail_size_rule = models.CharField(
|
||||
verbose_name='详情页种子大小',
|
||||
default='//td//b[contains(text(),"大小")]/following::text()[1]',
|
||||
max_length=128)
|
||||
detail_category_rule = models.CharField(
|
||||
verbose_name='详情页种子类型',
|
||||
default='//td/b[contains(text(),"类型")]/following-sibling::text()[1]',
|
||||
max_length=128)
|
||||
detail_area_rule = models.CharField(
|
||||
verbose_name='详情页种子地区',
|
||||
default='//h1/following::td/b[contains(text(),"地区")]/text()',
|
||||
max_length=128)
|
||||
detail_count_files_rule = models.CharField(
|
||||
verbose_name='详情页文件数',
|
||||
default='//td/b[contains(text(),"文件数")]/following-sibling::text()[1]',
|
||||
max_length=128)
|
||||
# HASH RULE
|
||||
detail_hash_rule = models.CharField(
|
||||
verbose_name='详情页种子HASH',
|
||||
default='//td/b[contains(text(),"Hash")]/following-sibling::text()[1]',
|
||||
max_length=128)
|
||||
detail_free_rule = models.CharField(
|
||||
verbose_name='详情页促销标记',
|
||||
default='//td//b[contains(text(),"大小")]/following::text()[1]',
|
||||
max_length=128)
|
||||
detail_free_expire_rule = models.CharField(
|
||||
verbose_name='详情页促销时间',
|
||||
default='//h1/b/font[contains(@class,"free")]/parent::b/following-sibling::b/span/@title',
|
||||
max_length=128)
|
||||
detail_douban_rule = models.CharField(
|
||||
verbose_name='详情页豆瓣信息',
|
||||
help_text='提取做种列表中文件大小计算总量',
|
||||
default='//td/a[starts-with(@href,"https://movie.douban.com/subject/")][1]',
|
||||
max_length=128)
|
||||
detail_year_publish_rule = models.CharField(
|
||||
verbose_name='详情页豆瓣信息',
|
||||
help_text='提取做种列表中文件大小计算总量',
|
||||
default='year_current_publish: //td/b[contains(text(),"发行版年份")]/text()',
|
||||
max_length=128)
|
||||
|
||||
remark = models.TextField(verbose_name='备注', default='', null=True, blank=True)
|
||||
# 状态信息XPath
|
||||
invitation_rule = models.CharField(
|
||||
@@ -226,11 +263,6 @@ class Site(BaseEntity):
|
||||
default='//img[@class="arrowup"]/following-sibling::text()[1]',
|
||||
max_length=128)
|
||||
|
||||
record_count_rule = models.CharField(verbose_name='做种大小列表',
|
||||
help_text='提取做种列表中文件大小计算总量',
|
||||
default='.//td[3]/text()',
|
||||
max_length=128)
|
||||
|
||||
seed_vol_rule = models.CharField(verbose_name='做种大小',
|
||||
default='//tr/td[3]',
|
||||
help_text='需对数据做处理',
|
||||
@@ -259,10 +291,6 @@ class Site(BaseEntity):
|
||||
default='//td/b/a/font[contains(text(),"全站") and contains(text(),"Free")]/text()',
|
||||
help_text='站免信息',
|
||||
max_length=128)
|
||||
# HASH RULE
|
||||
hash_rule = models.CharField(verbose_name='种子HASH',
|
||||
default='//td/b[contains(text(),"Hash")]/following::text()[1]',
|
||||
max_length=128)
|
||||
|
||||
class Meta:
|
||||
verbose_name = '站点信息'
|
||||
@@ -274,16 +302,18 @@ class Site(BaseEntity):
|
||||
|
||||
|
||||
class UserLevelRule(BaseEntity):
|
||||
site = models.ForeignKey(verbose_name='站 点', to=Site, to_field='url', on_delete=models.CASCADE)
|
||||
site = models.ForeignKey(verbose_name='站 点', to=Site, to_field='identity', on_delete=models.CASCADE)
|
||||
level_id = models.IntegerField(verbose_name='等级id', default=1)
|
||||
level = models.CharField(verbose_name='等 级', default='User', max_length=24, help_text='请去除空格')
|
||||
days = models.IntegerField(verbose_name='时 间', default=0, help_text='原样输入,单位:周')
|
||||
uploaded = models.CharField(verbose_name='上 传', default=0, help_text='原样输入,例:50GB,1.5TB', max_length=12)
|
||||
downloaded = models.CharField(verbose_name='下 载', default=0, help_text='原样输入,例:50GB,1.5TB', max_length=12)
|
||||
bonus = models.IntegerField(verbose_name='魔 力', default=0)
|
||||
bonus = models.FloatField(verbose_name='魔 力', default=0)
|
||||
score = models.IntegerField(verbose_name='积 分', default=0)
|
||||
ratio = models.FloatField(verbose_name='分享率', default=0)
|
||||
torrents = models.IntegerField(verbose_name='发 种', default=0)
|
||||
torrents = models.IntegerField(verbose_name='发 种', help_text='发布种子数', default=0)
|
||||
leeches = models.IntegerField(verbose_name='吸血数', help_text='完成种子数', default=0)
|
||||
seeding_delta = models.FloatField(verbose_name='做种时间', help_text='累计做种时间', default=0)
|
||||
rights = models.TextField(verbose_name='权 利', max_length=256,
|
||||
help_text='当前等级所享有的权利与义务')
|
||||
|
||||
|
||||
2070
pt_site_site.json
2070
pt_site_site.json
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user