更新:站点信息、升级信息添加字段

This commit is contained in:
ngfchl
2023-01-30 15:30:00 +08:00
parent 8b58a95638
commit e7fbd1606d
7 changed files with 6122 additions and 3670 deletions

View 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"
),
),
]

View 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"
),
),
]

View File

@@ -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="站 点",
),
),
]

View File

@@ -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="发 种"),
),
]

View File

@@ -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='原样输入50GB1.5TB', max_length=12)
downloaded = models.CharField(verbose_name='下 载', default=0, help_text='原样输入50GB1.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='当前等级所享有的权利与义务')

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff