ludoux / ngapost2md

艾泽拉斯国家地理论坛/NGA玩家社区/NGA单帖爬虫/牛国安一键存贴,不怕冲水
MIT License
98 stars 10 forks source link

文件夹名带上帖子的标题 #21

Closed xpsair closed 1 year ago

xpsair commented 3 years ago

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)

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

ludoux commented 3 years ago

好的。我之前考虑到帖子标题可能会更改所以没有加。之后计划会用通配符查找是否有匹配文件夹存在,来让文件夹命名里包含标题


From: xpsair notifications@github.com Sent: Saturday, February 20, 2021 2:25:58 PM To: ludoux/ngapost2md ngapost2md@noreply.github.com Cc: Subscribed subscribed@noreply.github.com Subject: [ludoux/ngapost2md] 文件夹名带上帖子的标题 (#21)

用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)

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

― You are receiving this because you are subscribed to this thread. Reply to this email directly, view it on GitHubhttps://github.com/ludoux/ngapost2md/issues/21, or unsubscribehttps://github.com/notifications/unsubscribe-auth/ADGWKTAUW5Z3UPRQGOZTFZLS75IXNANCNFSM4X5RM32A.

ludoux commented 3 years ago

refer 错了…这个提交不是这个的😂

oarinv commented 1 year ago

增加文件名修改配置#55,如果配置为默认,.md文件名为post.md。如果配置中改为True,则会将帖子的标题作为文件名。

PhiFever commented 1 year ago

我写了个.ps1,在新的release发布前各位老哥可以先凑合着用(放在.exe同级目录下运行就行)。 build_index.ps1生成一个名为index.txt的文件夹-文章名对照表

# 获取当前目录下的文件夹名
$folders = Get-ChildItem -Directory
# Write-Host $folders
$filePath = "index.txt"
$content = ""
# 遍历每个文件夹并执行操作
$folders | ForEach-Object {
    $folderName = $_.Name
    # Write-Host $folderName
    $mdfile = Get-ChildItem -Path $folderName -Filter "*.md" -File
    # Write-Host $mdfile
    $content = $content + $folderName + " " + $mdfile.Name + "`n`n"
}
write-host $content
$content | Out-File -FilePath $filePath -Encoding utf8

update_all.ps1更新所有已经存储的帖子

# 获取当前目录下的文件夹名
$folders = Get-ChildItem -Directory

# 遍历每个文件夹并执行操作
$folders | ForEach-Object {
    $folderName = $_.Name
    # 输出当前文件夹名
    Write-Host "`nfor directory:$folderName"
    Invoke-Expression ".\ngapost2md.exe $folderName"
}
oarinv commented 1 year ago

已提交相关修改#62 目前仅通过简单测试,确保实现相关功能,该功能默认开启,无需配置。

ludoux commented 1 year ago
; [#21]文件夹名是否包含标题。默认值False。修改后仅对全新拉取的tid生效。
use_title_as_folder_name=False
; [#21]Markdown 文件名是否为标题。默认值False。修改后仅对全新拉取的tid生效。
use_title_as_md_file_name=False

use_title_as_folder_name 开启时,文件夹会以 tid-安全标题 格式来命名。否则,以tid来命名。 use_title_as_md_file_name 开启时,md 文件会以 安全标题 格式来命名。否则,以 post.md 来命名。

仅针对新拉取情况下生效。倘若本地已有文件夹,仍按照其命名方式来进行追加。

PhiFever commented 1 year ago

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

ludoux commented 1 year ago

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

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

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

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

PhiFever commented 1 year ago

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

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

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

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

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