Coder Social home page Coder Social logo

ngapost2md's Introduction

Hi there 👋

ludoux's github stats

Welcome! This is Lu Chang, student at Northwestern Polytechnical University, Xi'an, China.

luu.moe

ngapost2md's People

Contributors

ludoux avatar oarinv avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

ngapost2md's Issues

检测reply的recommend值

在&lite=js里,如果一个回复的recommend值为10,则此回复会带有特殊标签,比如“全隐”“锁定”等等。

比如tid=28743773、26217637、28743773

修改页码检测部分免受论坛吞楼影响

tid=20363301,页码=416,当本页的最后一楼的内容被吞掉的时候,恒有int(tdict['replies']) > totalfloor[len(totalfloor)-1][0],然后程序会不断增加页码

"__R":{"0":{"pid":563445812,"fid":-39223361,"tid":20363301,"authorid":1277654,"type":0,"score":0,"score_2":0,"recommend":0,"postdate":"2021-11-03 22:49","subject":"","alterinfo":"","content":"从没见过这么高的楼!<br/><br/>有总结吗??","lou":82302,"content_length":32,"from_client":"8 Android","postdatetimestamp":1635950958}},"__T":{"fid":-39223361,"tid":20363301,"topic_misc":"AQAAAAQ","subject":"NGA肖战粉仙人跳AO3贴+魔道祖师相关","locked":0,"recommend":10,"quote_to":"","quote_from":0,"type":8420,"replies":82304,"authorid":35329383,"postdate":1581501134,"lastpost":1635951028,"author":"a116128544","lastposter":"京都看花天","digest":0,"lastmodify":1635951028,"tpid":0,"}

支持否决强制更新

使用某一参数运行,软件会检测当前时间距离编译时间已过多久。在一定范围内(例如:60天)内,则不会强制更新。超过此范围且有最新版本,则会忽视此参数继续要求强制更新

gitee的检查更新文件失效

image
2023.8.26 11:00左右发现一直报错“需要检查更新”,增加参数--force-no-check-update程序可以正常运行,查看源代码后发现是gitee的链接失效造成的。

func checkUpdate(dump bool) {
	resp, _ := req.C().R().Get("https://gitee.com/ludoux/check-update/raw/master/ngapost2md/version_neo.txt")
	//版本更新配置文件改为 DO_NOT_CHECK ,软件则不会强制使用最新版本
	if resp.String() != nga.VERSION && resp.String() != "DO_NOT_CHECK" {
		if dump {
			f, _ := os.OpenFile("NEED_UPDATE", os.O_CREATE|os.O_WRONLY, 0666)
			_, _ = f.Write(resp.Bytes())
			defer f.Close()
		}
		log.Printf("目前版本: %s 最新版本: %s", nga.VERSION, resp.String())
		log.Fatalln("请去 GitHub Releases 页面下载最新版本。软件即将退出……")
	}
}

我认为检查更新函数的条件是不是改成类似于

if resp.String() != nga.VERSION && resp.String() == "CHECK" {

会更好一点?毕竟gitee的奇妙审核机制抽风也不是一天两天了……

格式化改进的建议

1、支持[align=???]文本[/align]的对齐方式
2、对于不是ac娘系列的表情包,做一下处理,比如[s:dt:嘲笑]
3、支持格式化某些reply to的形式,参考图片 https://i.loli.net/2020/08/21/SUjKJwWQA5otnHf.jpg
4、支持删除线[del]标签

我自己也在做爬楼机,发现上面这些形式都有nga用户在用,所以提一些建议。

改了一下代码结构

基本测试可用,只能把代码放剪贴板
gzip解压:
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

能否在强制更新时产生一些独立于CLI的提醒信息,例如产生一些文件?

感谢您的工作。请问在未来的版本里,触发强制更新后本地软件能否提供一些除了CLI之外的信息,例如生成一个YouNeedxxx的文件?
我的应用场景使用了Windows power shell作为驱动,其中我采用了Jobs方法来运行您的程序,但是Jobs方法不一定总能抓取到程序的输出,在无人值守的情况下突然强制更新有可能会导致服务中断。如果有除了CLI外的检测方法(例如基于文件的程序运行状态简报),则可以更方便的处理异常情况。

文件夹名带上帖子的标题

tid拉取了帖子的内容后,生成的文件夹名只有tid,这样不方便知道拉取的到底是哪个帖,所以建议把文件夹的名字里添加帖子的标题,比如25615215-[其他问题] 关于京东七天无理由退货。

def main():input('press to exit.')之前,加上dir_with_title(),这个函数的定义:

def dir_with_title():
    dir_oldname=str(tid)
    dir_newname=str(tid)+"-"+title
    re.sub('\?', ' ', dir_newname)  # slugify filename if you need
    os.rename(dir_oldname, dir_newname)

不同的操作系统、云盘可能对文件名有一些限制,这里就没有对规范文件名的操作细写了。

获取tid=23259348异常

获取tid=23259348异常,在down:./23259348/9184841e.jpg Floor[1404/1432] 之后报错 Oops! '[/quote'

我检查一下,应该是第1410楼,

[quote][pid=451719713,23259348,71]Reply[/pid] [b]Post by [uid=61815177]青青园中韭[/uid] (2020-09-11 15:54):[/b]<br/><br/>大师还是很厉害的,隆基我来说两句吧(省略……)机构票贸然跑进去容易被一顿胖揍。大师挺住![s:ac:[/quote]<br/><br/>本周发言背景准备:<br/>周末陪孩子参加教师节活动,很有意义的一周(省略……)以维系在这波新人中自己的形象。

由于用正则匹配表情包bbcode在正则匹配引用bbcode之前,而这里 [s:ac:[/quote] 是nga自己的格式错乱问题,所以正则匹配表情包的时候在smile_ac词典里找不到键名[/quote,从而抛出KeyError异常。

cookie里添加guestJs=有效期内unix时间戳

用curl.exe测试,cookie设置Uid和Cid访问晴风村板块帖子(无登录要求)会先弹出“访客不能直接访问”网页(此处cookie设置了lastvisit),后面浏览器重定向至帖子详情页,观察发现cookie设置了guestJs=lastvisit,guestJs是unix时间戳值且有时效限制

未使用这个python脚本测试

Posts of the main zone cannot be processed.

windows cmd>python nga_20200623.py
tid:22959845
22959845
localmaxpage1
localmaxfloor-1
trypage1
Traceback (most recent call last):
File "nga_20200623.py", line 185, in
main()
File "nga_20200623.py", line 144, in main
holder()
File "nga_20200623.py", line 163, in holder
while single(cpage) != False:
File "nga_20200623.py", line 41, in single
usertext = re.search(r',"__U":(.+?),"__R":', content, flags=re.S).group(1)
AttributeError: 'NoneType' object has no attribute 'group'

I am a Chinese user.貌似网事杂谈区主区的很多帖子都抓取不了,提示错误如上;但是分区的帖子可以抓取。建议多从主区找帖子来试试。

format代码collapse部分代码修改

379~381行的ritem[0]改为1

rt = '<details>\n  <summary>已折叠,点击展开</summary>\n  <pre>' + \
                ritem[1].replace('\n', '<br>') + '</pre>\n</details>'
            raw = raw.replace('[collapse]%s[/collapse]' % ritem[1], rt)

部分帖子会一直在try page

30729057为例,只有5页内容try page大概500页
另外测试被锁的帖子也会有不停try page的情况

2/19更新新版后解决

v1.4.0,无法对已爬取的帖子进行更新

查看文件夹内部process.ini的内容正常写入了max_floor和max_page,但重新运行此tid时发现无法像v1.2.0那样增量更新文件,仍然从第一页开始爬取处理。且运行程序后查看markdown文件发现文件内容没有增加,process.ini中的内容没有改变。
config.ini中的相关配置为

thread=1
page_download_limit=100
get_ip_location=False
enhance_ori_reply=True
use_local_smile_pic=False
local_smile_pic_path=../smile/
use_title_as_folder_name=True
use_title_as_md_file_name=True

匿名功能:从#anony_散列生成随机六位数中文名

匿名功能:从#anony_散列生成随机六位数中文名
(不会用Github相关功能,只提issue算了)
我是写其他语言的,这个Python代码我是临时学的,验证了5组匿名用户名。

# coding=utf-8
anony_string1 = '甲乙丙丁戊己庚辛壬癸子丑寅卯辰巳午未申酉戌亥'
anony_string2 = '王李张刘陈杨黄吴赵周徐孙马朱胡林郭何高罗郑梁谢宋唐许邓冯韩曹曾彭萧蔡潘田董袁于余叶蒋杜苏魏程吕丁沈任姚卢傅钟姜崔谭廖范汪陆金石戴贾韦夏邱方侯邹熊孟秦白江阎薛尹段雷黎史龙陶贺顾毛郝龚邵万钱严赖覃洪武莫孔汤向常温康施文牛樊葛邢安齐易乔伍庞颜倪庄聂章鲁岳翟殷詹申欧耿关兰焦俞左柳甘祝包宁尚符舒阮柯纪梅童凌毕单季裴霍涂成苗谷盛曲翁冉骆蓝路游辛靳管柴蒙鲍华喻祁蒲房滕屈饶解牟艾尤阳时穆农司卓古吉缪简车项连芦麦褚娄窦戚岑景党宫费卜冷晏席卫米柏宗瞿桂全佟应臧闵苟邬边卞姬师和仇栾隋商刁沙荣巫寇桑郎甄丛仲虞敖巩明佘池查麻苑迟邝'

'''
  测试数据, 论坛网页处理Javascript函数是commonui.anonyName()
  # '#anony_9c51a20a7c7e7d1c6a92e3de2fda8e78'  癸芦邓甲靳褚
  # '#anony_b34a67e8d3d527fb3be72768afaa6afd'  丑傅辛辰符金
  # '#anony_33b9c16f49748c9179d16cc12493765a'  丁汪苗庚虞季
  # '#anony_692ac06925dfd03c7f328c5636f968bb'  庚梅华庚梅严
  # '#anony_1af8b011e25dd2be72e84e8ee011e6e1'  乙蒲宁乙曾袁
'''

def anony_alias(anony_name):
  # 根据匿名散列生成随机六位中文名, 函数传入形式: '#anony_9c51a20a7c7e7d1c6a92e3de2fda8e78'
  res = ''
  str16 = '0x0' + anony_name[7]
  res += anony_string1[int(str16, 16)]
  str16 = '0x' + anony_name[8:10]
  res += anony_string2[int(str16, 16)]
  str16 = '0x' + anony_name[10:12]
  res += anony_string2[int(str16, 16)]
  str16 = '0x0' + anony_name[13]
  res += anony_string1[int(str16, 16)]
  str16 = '0x' + anony_name[14:16]
  res += anony_string2[int(str16, 16)]
  str16 = '0x' + anony_name[16:18]
  res += anony_string2[int(str16, 16)]
  res += '?'
  return res

aname = '#anony_1af8b011e25dd2be72e84e8ee011e6e1'
print(anony_alias(aname))

建议用 https://bbs.nga.cn/read.php?tid=23362790&page=6 来测试。这个网页不会过时,且以下匿名用户有对应的很多楼层:
癸芦邓甲靳褚?:0、31、41、51、73、78、104、111、124、135楼
丑傅辛辰符金?:9、39楼
卯柯郑辰赖龚?:117楼

同时回帖内容bbcode里的

r'\[quote\].+?\[uid.*?\](.+?)\[/uid\].*?\((\d{4}.+?)\):\[/b\](.+?)\[/quote\]((?:\n){0,2})'

r'\[b\]Reply to .+? Post by \[uid.*?\](.+?)\[\/uid\] \((.+?)\)\[\/b\]((?:\n){0,2})'

里也可能会出现#anony_XXX的形式。

利用回帖的reply_to键值来查看/跳转被回复楼

今天见到两次带有reply_to键值的回帖的显示效果有些异常,其中一个帖子被封了,现在只发另一个:pid=454945232是tid=23362790帖子的第179楼。

086RBt.jpg


086WHP.jpg
该回帖的xml源码,可见content里没有“要相信缘分这东西”,但reply_to键值指向的pid=454943638就有“缘分”:
086cjA.jpg

提这个issue的原因是想在离线文件里看到如图2的能看到被回复楼的效果,我比较懒,只加了个跳转到被回复楼的链接。

这是我做的html版的效果,此时鼠标悬浮在177数字上。
0862nI.jpg

注:reply_to的值pid对应的楼层可能会被删除,写入文件前应先检验是否有对应pid的楼层。

NEO 版本测试

ngapost2md_NEO_PRE_0.0.1_20230515

@CatSayInk @proItheus @oarinv @crella6

目前新版本基本实现了大多数旧版功能,具体参见 neo 分支的 README

假如各位方便或者正在使用旧版的话,欢迎用这个新版的测试一下,捉捉 bug。多谢多谢 :) 😄 (特别是reply等格式在md文件里的排版等bug)

使用说明也请见 neo 分支的 README。简单来说就是需要更改 cookies.json 里面的两个 MODIFY_ME 文本 和 config.ini 里的 UA MODIFY_ME 文本。

Windows 调用方式如下
图片

文件在下文链接的压缩包里,里面有AMD64架构的Linux版和Windows版,任一测试即可。

下载:ngapost2md_NEO_PRE_0.0.1_20230515.zip
(20230516: 应用了PR #51 ,已修复 config.ini 字段错误)

仅在配置文件版本号相异时“覆盖”本地配置文件

          > > 感谢感谢,顺便问一下,请问v1.4.0中每次运行的时候强制覆盖config.ini是有什么特殊的考虑吗?

准确来说不能叫“强制覆盖”,只是把旧的配置文件读取后,填充进标准配置里头再重新输出覆盖config.ini文件。配置信息(比如cid uid和个性化配置等)都不会变,只是会影响到注释,和软件不存在的配置项。比如有些用户可能会在注释里备注一些信息,这种情况在1.4.0后就会被覆盖成为原始的注释信息。

这个变动是由于引入了配置文件自动更新而来的,即跨版本更新后,假如配置项有变化,软件会自动将旧版的更新为新版。注释被覆盖这个问题,主要是比较少用户会这么用吧。

更新日志里头提这个,主要是配置文件会被软件修改这个行为,相对来说确实比较奇怪…

明白了,既然是这样的话我认为完全可以独立一个专门用于更新配置项的.exe或者.ps1,毕竟这个过程理论上在大版本更新后只需要进行一次。

Originally posted by @Gungnir762 in #21 (comment)

tid=25009036不能保存

Oops! 'NoneType' object has no attribute 'group'
Press to exit.

其他帖子可以正常使用

偶发情况,隔了一段时间后之后又可以,原因未知,推测可能是浏览速度有限制

cookies相关

cookie好像只需要

  1. ngaPassportUid
  2. ngaPassportCid

就可以了

支持折叠区域

折叠区域,示例帖子tid:23362790

<br/>感觉自己有种“姐系”的气质,举些例子:<br/>[collapse=和认识的仅有几个男生相处]<br/>实验室坐我旁边的男A:.......[del]人生三大错觉[/del],现在已经异地实习去了<br/><br/>[/collapse]<br/><br/>

按发帖时的用法提示:

[collapse=提要]
隐藏的内容……
[/collapse]

[collapse]
没有提要也可以……
[/collapse]

Markdown的

<details><summary>

标签应该是可以用的

NEO_1.4.2存在无意中覆盖用户配置文件到默认配置的情况

现象:NEO_1.4.2存在无意中覆盖用户配置文件到默认配置的情况。
推断:在config.ini被外部编辑、占用或者ngapost2md.exe存在多个实例同时调用config.ini时,NEO_1.4.2有可能会直接将用户的有效配置文件覆写为空白的配置文件。
复现方法:模拟config.ini暂时不可用的场景(例如外部编辑或同时调用),随后使用一个脚本来观察文件是否有更改。
本地复现结果:
图片
使用的脚本:
filetest.zip

[设定Cookie] 24409319这个pid的帖子无法保存

❯ python nga.py
tid:24409319
24409319
localmaxpage1
localmaxfloor-1
trypage1
Oops! 'NoneType' object has no attribute 'group'
press to exit.

以上是输出,看了一下代码没找到group,还是把Bug抛给你吧23333

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.