编写Markdown文章批量上传图片发布到论坛方法

作者坛账号:漁滒


编写

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

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

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

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

编写Markdown文章批量上传图片发布到论坛方法


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

编写Markdown文章批量上传图片发布到论坛方法


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

上传

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

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

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

编写Markdown文章批量上传图片发布到论坛方法


例如【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】的文件,里面的链接已经被替换为可以直接发布到论坛的格式

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

编写Markdown文章批量上传图片发布到论坛方法


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


-官方论坛

www.52pojie.cn


👆👆👆

公众号设置“星标”,不会错过新的消息通知
开放注册、精华文章和周边活动等公告

编写Markdown文章批量上传图片发布到论坛方法

原文始发于微信公众号(吾爱破解论坛):编写Markdown文章批量上传图片发布到论坛方法

版权声明:admin 发表于 2024年11月8日 下午3:21。
转载请注明:编写Markdown文章批量上传图片发布到论坛方法 | CTF导航

相关文章