Python实践:CSDN图片水印批量去除

Python实践:CSDN图片水印批量去除

背景


在使用CSDN做图床时,经常遇到上传的大量图片被自动加上水印,十分影响阅读体验。网上大部分博客,都只是讲CSDN用markdown加水印的原理——将图片链接中.jpg后面的字符串删去即可去水印,如下图。

在这里插入图片描述

水印去除对比图

如果有大量的图片放到CSDN都手动去除水印,较为繁琐低效。在网上也没搜索到批量去水印的脚本,故用Python实现了下,放在这里,供交流学习。

思路理清


编码思路

  • 获取原始txt,读到每行内容
  • 对每行内容分割,分隔符:?x-oss-process
  • 若有水印,则对左侧字符串追加字符)
  • 否无水印,则不追加操作
  • 重新输出到新txt中
  • 直到原始txt内容读取完毕

使用方法

  • 新建一个UTF-8的文本,复制待去水印的批量markdown图片链接到里面
  • Python代码修改对应路径及文件名
  • 运行代码,查看去水印后的文本输出

Python代码


# -*- coding: utf-8 -*-
'''
@Time    : 2021年12月30日
function : demo_rm_pic_watermark()
'''

import os
import sys

def rm_watermk(in_path, out_path):
    # f_in = open(in_path)
    f_in = open(in_path, "r", encoding='utf-8')
    line = f_in.readline()
    split_str = r'?x-oss-process'
    out_data = []
    while line:
        if split_str in line:
            str1 = line.split(split_str)[0]
            str2 = str1 + ')'
        else:
            str2 = line
        out_data.append(str2)
        line = f_in.readline()

    with open(out_path, "w", encoding="utf-8") as f_out:
        f_out.write('\n'.join(out_data))


if __name__ == '__main__':
    in_dir = r"D:\tmpFiles"
    out_dir = r"D:\tmpFiles"
    in_name = r'input.txt'
    out_name = r'output.txt'
    in_path = os.path.join(in_dir, in_name)
    out_path = os.path.join(out_dir, out_name)

    print('start rm_watermk funciton!')
    print('processing.....')
    rm_watermk(in_path, out_path)
    print('done!')

    sys.exit()
  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值