吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 1347|回复: 15
收起左侧

[Python 原创] 编写Markdown文章批量上传图片发布到论坛方法

  [复制链接]
漁滒 发表于 2024-11-7 17:41

@TOC

编写

编写时为了方便实时查看显示,一般会使用pycharm等编辑器进行。

其中大概率会插入不少的图片,如果在发布前一张一张上传到论坛图床,再一个一个替换原来的文本,这会对发布产生非常大的工作量。

所以我就在想有什么办法可以在本地正常编写,又可以一键发布到论坛上呢?我就想编写一个脚本来进行批量上传

为了方便匹配文章中出图片的位置,一般使用一个标准的命名,我使用的是  ![001.jpg](001.jpg)

001.jpg

同时真实的图片也放到同目录内

002.jpg

此时编写就可以实时查看内容,非常方便插入图片等系列编写

上传

当编写完成后,需要将图片一次性上传到论坛图床

因为我使用的是360极速浏览器发布,所以代码也是基于360极速浏览器的,其他浏览器是类似的

首先进入论坛板块,查看板块的fid

003.jpg

例如【web逆向】板块的fid就是5

然后直接关闭浏览器


import re
import os
import json
import time
import base64
import psutil
import sqlite3
import win32crypt
import requests_html
from Crypto.Cipher import AES
from requests_toolbelt.multipart.encoder import MultipartEncoder

def main():
    chrome_name = '360ChromeX'
    requests = requests_html.HTMLSession()
    for process in psutil.process_iter():
        if chrome_name in process.name():
            process.kill()
    file_path = os.path.join(os.getenv("LOCALAPPDATA"), chrome_name, 'Chrome', 'User Data', 'Local State')
    state = json.load(open(file_path, 'r', encoding='utf-8'))['os_crypt']
    if state['audit_enabled']:
        key = win32crypt.CryptUnprotectData(base64.b64decode(state['encrypted_key'].encode())[5:])[1]
    else:
        key = b''
    file_path = os.path.join(os.getenv("LOCALAPPDATA"), chrome_name, 'Chrome', 'User Data', 'Default', 'Network', 'Cookies')
    conn = sqlite3.connect(file_path)
    for name, encrypted_value, host_key, path in conn.execute('select name, encrypted_value, host_key, path from cookies'):
        if not encrypted_value:
            continue
        if encrypted_value[:3] == b'v10':
            nonce, encrypted_value = encrypted_value[3:15], encrypted_value[15:]
            crypto = AES.new(key=key, mode=AES.MODE_GCM, nonce=nonce)
            value = crypto.decrypt(encrypted_value)[:-16].decode()
        else:
            value = win32crypt.CryptUnprotectData(encrypted_value)[1].decode()
        requests.cookies.set(name, value, domain=host_key, path=path)
    conn.close()

    fid = '5'  # 根据自己发布在什么板块修改fid
    response = requests.get('https://www.52pojie.cn/forum.php?mod=post&action=newthread&fid=' + fid)
    uid = response.html.find('#imgattachform > [name="uid"]', first=True).attrs['value']
    hash = response.html.find('#imgattachform > [name="hash"]', first=True).attrs['value']
    formhash = response.html.find('#formhash', first=True).attrs['value']
    file_name = os.path.join(os.getcwd(), 'readme.md')
    with open(file_name, 'r', encoding='utf-8') as f:
        md = f.read()
    for img_name, img_path in re.findall('\n\!\[(.+?\.jpg)\]\((.+?)\)', md):
        print(img_name)
        img_full_path = os.path.join(os.getcwd(), img_path)
        fields = {
            "Filedata": (img_name, open(img_full_path, 'rb'), 'image/jpeg'),
            "Filename": file_name,
            "filetype": '.' + file_name.split('.')[-1],
            "formhash": formhash,
            "uid": uid,
            "hash": hash,
            "type": "image"
        }
        multipart = MultipartEncoder(
            fields=fields,
            boundary='----WebKitFormBoundaryLmfEqyU3MTt1Bgy0'
        )
        headers = {
            "Content-Type": multipart.content_type,
        }
        data = multipart.to_string()
        aid = requests.post('https://www.52pojie.cn/misc.php?mod=swfupload&action=swfupload&operation=upload&fid=' + fid, headers=headers, data=data).content.decode()
        print(aid)
        time.sleep(4)
        md = md.replace('\n![' + img_name + '](' + img_path + ')', '\n[attachimg]' + aid + '[/attachimg]')
    with open(file_name.replace('.md', '_img.md'), 'w', encoding='utf-8') as f:
        f.write(md)

if __name__ == '__main__':
    main()

将python代码保存到与md文件同目录,根据fid修改上面python代码的fid值,最后运行代码

此时就会自动上传md文件中所有引用到的图片到板块

当脚本完成后,会生成一个带有【_img.md】的文件,里面的链接已经被替换为可以直接发布到论坛的格式

打开浏览器进入到需要发布的页面

004.jpg

此时发帖就会发现提示有多张图片未使用,直接点击使用按钮,然后点击发布md内容,将带有【_img.md】的的文件里面所有的内容复制进去,就可以完美发帖了

免费评分

参与人数 11威望 +1 吾爱币 +38 热心值 +9 收起 理由
Leaf08 + 1 热心回复!
苏紫方璇 + 3 + 1 妙啊
weidechan + 1 用心讨论,共获提升!
Hmily + 1 + 20 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
许我浅笑而安 + 2 + 1 谢谢@Thanks!
xiaobaicai66 + 1 + 1 用心讨论,共获提升!
FitContent + 1 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
vethenc + 2 + 1 谢谢@Thanks!技术改变命运!
yjipktg000 + 1 谢谢@Thanks!
OVVO + 2 + 1 漁滒我爱你
GenW + 5 + 1 用心讨论,共获提升!

查看全部评分

本帖被以下淘专辑推荐:

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 漁滒 发表于 2024-11-12 23:06
bgwu666 发表于 2024-11-12 20:17
劝退了,只能在应该是360极速浏览器下登录论坛才能运行,我用的是Edge,程序取不到我这里的cookie,自己修 ...

下面文章中给出了其他浏览器cookie储存的位置,可以参考
https://mp.weixin.qq.com/s/lhlV43ka7_QM72CS6FVr_g
bgwu666 发表于 2024-11-12 20:17
劝退了,只能在应该是360极速浏览器下登录论坛才能运行,我用的是Edge,程序取不到我这里的cookie,自己修改的话也不知道Edge的加密方式。不过程序思路很赞!
15188359377 发表于 2024-11-7 18:36
逐雅斋 发表于 2024-11-7 18:40
这个牛逼啊!真会玩!
Hmily 发表于 2024-11-8 10:32
感谢漁滒分享,分类置顶几天供大家参考,并添加到MD上传图片说明处。
anning666 发表于 2024-11-8 10:38
大佬这个思路666~~~
Alanguth 发表于 2024-11-8 11:18
学习一下,感谢大佬
mclii 发表于 2024-11-8 16:41
这个很厉害
Lychen 发表于 2024-11-12 09:13
新手导报  学习学习
deedokke 发表于 2024-11-12 10:38
牛逼啊!真会玩!
Huasuiyue 发表于 2024-11-12 18:23
大佬这个厉害啊!
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2025-1-7 19:45

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

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