Membuat Variabel Dinamis Pada Dokumen Word (docx)

Adalah hal menyebalkan ketika kita diminta membuat dokumen kenaikan pangkat/jenjang dalam organisasi. Karena jamannya online,  kita diminta mengedit dokumen docx dan menyerahkan ke pimpinan. Online yang setengah-setengah :). Kalau online beneran ya pakai databaselah, bukan nyerahin file docx 🙂

Bayangkan jika satu orang harus melampirkan 2 dokumen saja,  30 orang sudah 60 dokumen, Membuka 60 file word satu-satu maaaaak. Ampuuun….

Apalagi kalau harus ada yang diupdate di semua dokumen karena ada format dokumen yang salah, ada yang harus diedit. Buka – edit – simpan 60 dokumen. Ampuuun Caaaak.

Kadang tidak sampai disitu, data harus direkap dalam bentuk tabel spreadsheet. Buka satu-satu copas … hadooh…

Sampai disitu ada instruksi nama file harus urut abjat nama orang. Ngiiing ….

Lebih enak bahwa semua data itu kita masukkan database atau Google Sheet yang diisi melalui Google Form. Lalu kita membuat template word. Dan terakhir kita sambungkan data dengan template word  menggunakan skrip.

Selanjutnya »

Download Mp3 dari Youtube

Saya suka mendengarkan lagu dalam format mp3. Namun mendapatkan format mp3 ini tidak mudah didapat. Hari ini yang ada mpeg (lagu dengan video) yang didownload langsung dari Youtube.

Saya masih tertarik mendengarkan mp3nya saja. Video itu hanya menambah-nambah ukuran file saja.

Memang ada beberapa aplikasi online konversi dari URL Youtube ke Mp3, namun penuh kelemahan, seperti adanya iklan berbasis link yang tidak masuk akal sampai pada tidak bisa download mp3 yang panjang.

Akhirnya dengan bantuan ChatGPT, saya membuat program untuk mengatasi hal tersebut :

# pip install yt_dlp
import yt_dlp
def getmp3(url):
    ydl_opts = {
        "format": "bestaudio/best",
        "postprocessors": [{
            "key": "FFmpegExtractAudio",
            "preferredcodec": "mp3",
            "preferredquality": "192",
        }],
    }
    try:
        with yt_dlp.YoutubeDL(ydl_opts) as ydl:
            ydl.download([url])
        return True  # Berhasil
    except yt_dlp.utils.DownloadError as e:
        print(f"Error: {e}")
        return False  # Gagal

while True:
    url = input("Enter the URL of the video you want to download: \n>> ").strip()
    
    if not url:
        print("No URL entered. Please try again.")
        continue  # Kembali meminta URL jika kosong

    # Coba unduh URL
    if getmp3(url):
        print("Download successful! \n\n")
        continue  # Kembali meminta URL jika masih mau input URL kembali
    else:
        print("Invalid URL or an error occurred. Please try again.")

Namun sering library seperti ini cepat tidak bekerja seiring layanan yang menutup celah agar tidak bisa di dlownload.

Python: Pdf2Docx

Tadi malam saya ingin mengirimkan dokumen yang harusnya dikirim dalam bentuk docx, namun file yang dikirim ke saya ada yang berbentuk docx ada yang pdf.

Males juga mengubah secara manual dari pdf ke docx. Apalagi jumlahnya mungkin sekitar 20-an file.

Ok, kita selesaikan dengan Python:

pip install Converter
pip install pdf2docx

Kemudian gunakan skrips eperti ini:

# install dulu librarynya:
# pip install Converter
# pip install pdf2docx

from pdf2docx import Converter
import os

### dir_path for input reading and output files & a for loop ###

path_input = './cay-pdf/'
path_output = './cay-output/'

# Pastikan folder output ada, jika tidak buat
os.makedirs(path_output, exist_ok=True)

# Loop melalui semua file di folder input
for file in os.listdir(path_input):
    # Filter hanya file PDF
    if file.lower().endswith('.pdf'):
        # Dapatkan nama file tanpa ekstensi
        file_name = os.path.splitext(file)[0]

        # Path lengkap untuk input dan output
        input_path = os.path.join(path_input, file)
        output_path = os.path.join(path_output, file_name + '.docx')

        # Konversi file
        try:
            cv = Converter(input_path)
            cv.convert(output_path, start=0, end=None)
            cv.close()
            print(f"Berhasil mengonversi: {file}")
        except Exception as e:
            print(f"Error saat mengonversi {file}: {e}")

Terus hasilnya bagaimana. Ya, lumayanlah …