引流技术-通过文件中增加联系方式并传播

文章目录

    • 前言
    • 文档增加联系方式
    • 扩散
      • 网盘扩散
      • 自建网站
      • 借力
    • 注意

前言

很多人在找资料的时候可能都遇到过下图情况:
1、文档最后面留一个自己的联系方式;
2、找的一堆文件中都有相同的情况;
3、一段时间全网搜到的很多相同文件也有这个联系方式。

那么这个怎么做的?今天我们来亲自试验一下。

引流技术-通过文件中增加联系方式并传播_第1张图片

文档增加联系方式

我们看到的文档可能有PDF、word,首先我们来看看word当怎么处理,word一般会有两种后缀名:doc、docx,docx比较好处理,是基于XML的,而doc格式的文档是一个较老的、二进制格式的文件。所以我们需要把doc转换成docx文档后再批量添加图片。

还有一个问题就是我电脑是MAC,一般我们会用到win32com来处理doc文档转换,但是mac不支持,所以我们要用到另外一个工具LibreOffice
需要下载安装后配置环境变量。

下载官网:https://www.libreoffice.org/

安装后正常配置环境变量哦

下面我们来看看具体代码:

import os
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH

def convert_doc_to_docx(doc_path):
    """使用LibreOffice将DOC文件转换为DOCX文件"""
    docx_path = doc_path + 'x'
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])
    return docx_path

def add_image_to_docx(docx_path, image_path):
    """在DOCX文档末尾添加居中的图片"""
    doc = Document(docx_path)
    p = doc.add_paragraph()
    run = p.add_run()
    run.add_picture(image_path, width=Inches(2.0))  # 图片大小可以根据需要调整
    paragraph_format = p.paragraph_format
    paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    doc.save(docx_path)

def convert_docx_to_pdf(docx_path):
    """使用LibreOffice将DOCX文件转换为PDF"""
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])

def process_folder(folder_path, image_path):
    """处理文件夹中的所有DOC和DOCX文件"""
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if filename.endswith('.doc'):
            docx_path = convert_doc_to_docx(file_path)
            add_image_to_docx(docx_path, image_path)
            convert_docx_to_pdf(docx_path)
            os.remove(docx_path)  # 删除转换后的DOCX文件
            print(f"Processed {filename}")
        elif filename.endswith('.docx'):
            add_image_to_docx(file_path, image_path)
            convert_docx_to_pdf(file_path)
            print(f"Processed {filename}")

# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径
process_folder(folder_path, image_path)

接下来我们看一下PDF怎么处理,PDF比较特殊的就是加密的文件了,这种文件没办法直接写,需要创建新文件把内容copy进去后在最后面增加图片。
具体代码如下:

import os
import fitz  # PyMuPDF

def add_image_to_pdf_centered(pdf_path, image_path):
    """在PDF文档的最后添加一个新页面,并在其中居中插入一张图片"""
    # 打开原始PDF
    pdf_doc = fitz.open(pdf_path)

    # 获取PDF的尺寸以适配新页面
    if pdf_doc.page_count > 0:
        page = pdf_doc[0]
        page_width, page_height = page.rect.width, page.rect.height
    else:
        # 如果PDF为空,使用默认的A4尺寸
        page_width, page_height = fitz.paper_rect('a4').size

    # 添加新页面
    pdf_doc.new_page(width=page_width, height=page_height)

    # 计算图片的位置以使其居中
    img = fitz.open(image_path)
    img_width, img_height = img[0].rect.width, img[0].rect.height
    scale = min(page_width / img_width, page_height / img_height)
    new_width, new_height = img_width * scale, img_height * scale
    x1 = (page_width - new_width) / 2
    y1 = (page_height - new_height) / 2
    rect = fitz.Rect(x1, y1, x1 + new_width, y1 + new_height)

    # 在新页面上插入居中的图像
    last_page = pdf_doc[-1]
    last_page.insert_image(rect, filename=image_path)

    # 保存修改后的PDF,重写整个文件
    new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')  # 创建新文件以避免覆盖原文件
    pdf_doc.save(new_pdf_path)
    pdf_doc.close()

# 调用函数
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径

for filename in os.listdir(folder_path):
    if filename.endswith('.pdf'):
        pdf_path = os.path.join(folder_path, filename)
        add_image_to_pdf_centered(pdf_path, image_path)
        print(f"Image added to {filename}")

当然我们也可以把两个脚本合并,直接一把梭。

import os
import fitz  # PyMuPDF
import subprocess
from docx import Document
from docx.shared import Inches
from docx.enum.text import WD_ALIGN_PARAGRAPH

# 处理PDF的函数
def add_image_to_pdf_centered(pdf_path, image_path):
    pdf_doc = fitz.open(pdf_path)
    if pdf_doc.page_count > 0:
        page = pdf_doc[0]
        page_width, page_height = page.rect.width, page.rect.height
    else:
        # 使用默认的A4尺寸
        page_width, page_height = fitz.paper_rect('a4').size

    pdf_doc.new_page(width=page_width, height=page_height)
    img = fitz.open(image_path)
    img_width, img_height = img[0].rect.width, img[0].rect.height
    scale = min(page_width / img_width, page_height / img_height)
    new_width, new_height = img_width * scale, img_height * scale
    x1 = (page_width - new_width) / 2
    y1 = (page_height - new_height) / 2
    last_page = pdf_doc[-1]
    last_page.insert_image(fitz.Rect(x1, y1, x1 + new_width, y1 + new_height), filename=image_path)
    new_pdf_path = pdf_path.replace('.pdf', '_new.pdf')
    pdf_doc.save(new_pdf_path)
    pdf_doc.close()

# 处理Word的函数
def convert_doc_to_docx(doc_path):
    docx_path = doc_path + 'x'
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "docx", doc_path, "--outdir", os.path.dirname(doc_path)])
    return docx_path

def add_image_to_docx(docx_path, image_path):
    doc = Document(docx_path)
    p = doc.add_paragraph()
    run = p.add_run()
    run.add_picture(image_path, width=Inches(2.0))
    paragraph_format = p.paragraph_format
    paragraph_format.alignment = WD_ALIGN_PARAGRAPH.CENTER
    doc.save(docx_path)

def convert_docx_to_pdf(docx_path):
    subprocess.run(["/Applications/LibreOffice.app/Contents/MacOS/soffice", "--headless", "--convert-to", "pdf", docx_path, "--outdir", os.path.dirname(docx_path)])

# 综合处理函数
def process_files(folder_path, image_path):
    for filename in os.listdir(folder_path):
        file_path = os.path.join(folder_path, filename)
        if filename.endswith('.pdf'):
            add_image_to_pdf_centered(file_path, image_path)
            print(f"Image added to {filename}")
        elif filename.endswith('.doc'):
            docx_path = convert_doc_to_docx(file_path)
            add_image_to_docx(docx_path, image_path)
            convert_docx_to_pdf(docx_path)
            os.remove(docx_path)  # 删除转换后的DOCX文件
            print(f"Processed {filename}")
        elif filename.endswith('.docx'):
            add_image_to_docx(file_path, image_path)
            convert_docx_to_pdf(file_path)
            print(f"Processed {filename}")

# 设置文件夹和图片路径
folder_path = 'path/to/your/documents'  # 替换为你的文档所在的目录
image_path = 'path/to/your/image.jpg'   # 替换为你要添加的图片的路径

# 调用处理函数
process_files(folder_path, image_path)

至此,我们就可以把我们的文档全部添加自己的联系方式。
引流技术-通过文件中增加联系方式并传播_第2张图片

扩散

有了文档,我们就可以进行扩散了,介绍几个我了解的方式:

网盘扩散

通过网盘,把自己文件放在网盘中,然后再通过文章等传播即可。

这种可能很多人要看电影的时候也会遇到,你搜到的电影文档内没有内容,只有一个联系方式,让你加联系方式进群后再把相关的视频发你,达到引流作用。

自建网站

可以自己建一个网站,把所有文档放在服务器,然后让大家去下载。

当然很多人说这样子的话我直接在网站首页留联系方式不是更直接,这个有其他可能,就是有些人在你网站下载了文件,给了他的朋友看,这是不是间接传播了。

借力

我们可以找一些类似于百度文库、还有其他的学习论坛有收集文档的情况,我们把自己的文档上传,借助这些平台的流量,扩大文档被检索的可能。

注意

很多文档可能有版权,这个要注意。

很多平台会检测文档中是否有联系方式等违规的内容。

你可能感兴趣的:(python,引流,python,PDF处理,word处理)