GPTTXTWP_32bit.py kodları şöle ne gibi değişiklik yapmam gerekir
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import openai
import requests
import random
import string
import requests
import json
import os
import sys
from requests.packages import urllib3
import re

urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

with open("config.json", "r", encoding="utf-8") as f:

    read = json.load(f)
    f.close()
    
openai.api_key = read['openai.api_key']
unsplash_key = read['unsplash_key']
w_base_url = read['w_base_url']
w_username = read['w_username']
w_password = read['w_password']
  
 
questionspath = "basliklar.txt"

if not os.path.exists(questionspath):
    open(questionspath, 'w', encoding='utf-8-sig').close()
    print("'basliklar.txt' dosyası oluşturuldu. soruları alt alta ekleyip programı yeniden başlatın.")
    input("bu ekranı kapatmak için enter basınız.")
    sys.exit()
    

OPENAI_COMPLETION_OPTIONS = {
    "temperature": 0.7,
    "max_tokens": 1000,
    "top_p": 1,
    "frequency_penalty": 0,
    "presence_penalty": 0
}
   
def remove_invalid_characters(text):
    valid_chars = "-_.() %s%s" % (string.ascii_letters, string.digits)
    clean_name = ''.join(c if c in valid_chars else '_' for c in text)
    clean_name = clean_name.strip() # boşlukları temizle
    clean_name = clean_name.rstrip('.') # noktaları temizle
    return clean_name
    

def get_tag_id(tag_name):
    tag_url = w_base_url + '/wp-json/wp/v2/tags?search=' + tag_name
    response = requests.get(tag_url, auth=(w_username, w_password),verify=False).json()
   
    if not response:
        new_tag_url = w_base_url+ '/wp-json/wp/v2/tags'
        tag_data = {'name': tag_name}
        response = requests.post(new_tag_url, auth=(w_username, w_password), json=tag_data,verify=False).json()
        return response['id']
    return response[0]['id']

def image_upload(imagepath,desc):
    if "/" in imagepath:
        imagename = imagepath.split("/")[-1]
    else:
        imagename = imagepath
    image_data = {
        'file': (imagename, open(imagepath, 'rb'), 'image/jpeg', {'Expires': '0'}),
        'caption': desc
    }
    response = requests.post(w_base_url+'/wp-json/wp/v2/media', files=image_data,auth=(w_username, w_password),verify=False)
    image_info = response.json()
    return image_info['id'],image_info['source_url']
 
    
def post_wp(title,makaleler,ozet,etiketler,images,kategori,status='draft'):
    
    cleaned_text = remove_invalid_characters(title)
    featured_media = ""
    inline_media = list()
    for i , image in enumerate(images, start=1):
        if i == 1:
            featured_media, _blank = image_upload(image,cleaned_text)
            os.remove(image)
        else:
            _blank, media_url = image_upload(image,cleaned_text)
            inline_media.append(media_url)
            os.remove(image)
            
    icerik = ""
    
    if len(inline_media) == 2:
        media1 = '<figure class="wp-block-image size-full"><img src="'+ inline_media[0] + '" alt="'+cleaned_text+'"/></figure>'
        media2 = '<figure class="wp-block-image size-full"><img src="'+ inline_media[1] + '" alt="'+cleaned_text+'"/></figure>'
        icerik = makaleler[0] + media1 + makaleler[1] + media2
    elif len(inline_media) == 1:
        media1 = '<figure class="wp-block-image size-full"><img src="'+ inline_media[0] + '" alt="'+cleaned_text+'"/></figure>'
        icerik = makaleler[0] + media1 + makaleler[1]
    else:
        icerik = makaleler[0] + makaleler[1]
        
    post_data = {
        'title': title,
        'content': icerik,
        "excerpt": ozet,
        'status': status,
        'tags': etiketler
    }
    
    post_data['tags'] = [get_tag_id(tag) for tag in post_data['tags']]

    cat_id = get_cat_id(kategori)
    if cat_id:
        post_data['categories'] = [cat_id]
    
    if featured_media:
        post_data['featured_media'] = featured_media

    response = requests.post(w_base_url+'/wp-json/wp/v2/posts', auth=(w_username, w_password), json=post_data,verify=False)

    if response.status_code == 201:
        print('Yeni yazı başarıyla gönderildi!')
    else:
        print('Bir hata oluştu:', response.json())

def get_cat_names():
    cat_url = w_base_url+'/wp-json/wp/v2/categories'
    response = requests.get(cat_url, auth=(w_username, w_password),verify=False).json()
  
    katlist = list()
    for category in response:
         
        katlist.append(category["name"])
    
    return katlist


def get_cat_id(category_name):
    cat_url = w_base_url+'/wp-json/wp/v2/categories?search=' + category_name
    response = requests.get(cat_url, auth=(w_username, w_password),verify=False).json()
    if response:
        return response[0]['id']
    else:
        return
        
     
def random_filename():
    letters = string.ascii_lowercase
    return ''.join(random.choice(letters) for i in range(10))
 
def unsplash_search(kelimeler):
    
    photos = list()
    for kelime in kelimeler.split(","):
        response = requests.get(
            "https://api.unsplash.com/search/photos?query="+kelime+"&per_page=50",
            headers={"Authorization": "Client-ID "+unsplash_key})

        photo_data = response.json() 
        finame = random_filename()
        photo_results = photo_data['results']
        random.shuffle(photo_results)
        for i , photo in enumerate(photo_results, start=1):
            if i < 4:
                photo_url = photo['urls']['regular'] 
                response = requests.get(photo_url)
                fname = finame+"_"+str(i)+".jpg"
                with open(fname, 'wb') as f:
                    f.write(response.content)
                photos.append(fname)
            else:
                break
        if photos:
            break
         
        
    return photos

    
def ask_question(messages):
    
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=messages,
        **OPENAI_COMPLETION_OPTIONS
    )
    response_text = response.choices[0].message.content
 
    return response_text

def askme_stored(ask,messages):
    #print("")
    #print("soru:", ask)
    #print("")
    if not messages:
        prompt = """As an advanced chatbot named ChatGPT, your primary goal is to assist users to the best of your ability. This may involve answering questions, providing helpful information, or completing tasks based on user input. In order to effectively assist users, it is important to be detailed and thorough in your responses. Use examples and evidence to support your points and justify your recommendations or solutions. Remember to always prioritize the needs and satisfaction of the user. Your ultimate goal is to provide a helpful and enjoyable experience for the user. You must use h1,h2 tags for write article. subheadings (including H1, H2, H3, and H4 html tag headings)"""

        messages.append({"role": "system", "content": prompt})
        
    messages.append({"role": "user", "content": ask})
    while True:
        try:
            answer = ask_question(messages)
            break
        except:
            pass
        messages = messages[2:]
        
    print("")
    print("Cevap:", answer)
    print("")
    messages.append({"role": "assistant", "content": answer})
    return answer, messages
 
        
def find_between(s, start, end):
    return (s.split(start))[1].split(end)[0]
    
def tag_parte(content):
    content = content.replace("\n"," ")
    tags = find_between(content,"<etiketler>","</etiketler>").strip()
    unsplash = find_between(content,"<unsplash>","</unsplash>").strip().replace("_"," ").replace("-"," ")
    return tags,unsplash

def cat_parte(content):
    content = content.replace("\n"," ")
    cat = find_between(content,"<kategori>","</kategori>").strip() 
    return cat
     

def titles_parte(content):
    results = re.findall(r'\d+\.\s+\"(.*)\"', content)
    if results:
        return results[:-1]
    else:
        return re.findall(r'\d+\.\s+(.*)', content)[:-1]

def removeques(ques):
    try:
        with open(questionspath, "r", encoding='utf-8-sig') as f:
            lines = f.read().splitlines()
        try:
            lines.remove(ques)
        except:
            pass
         
        with open(questionspath, "w", encoding='utf-8-sig') as f:
            f.writelines(["%s\n" % item  for item in lines])
         
    except:
        pass

def main():
    
    
    kategoriler = get_cat_names()
  
    quess = open(questionspath, encoding='utf-8-sig').readlines()
    for i, baslik in enumerate(quess, start=1):
        if baslik.strip():
 
     
            messages = list()
            print(baslik,"makale hazırlanıyor...")
            while True:
                soru = "subheadings (including H1, H2, H3, and H4 html tag headings), 1000 kelimelik makale html formatında yaz, Makaleyi 2 parçaya böl, her cevapta bir parçayı vereceksin. Şimdi ilk parçayı yaz. Konu: '"+baslik+"'"
                makale1, messages = askme_stored(soru,messages)
                if "</h1>" in makale1:
                    break
                else:
                    messages = list()
                    print("Seo uyumlu veri gelmediği için tekrar deneniyor...")
                    
            print(baslik,"makale devam ettirirliyor...")
            soru = "Şimdi ikinci kısmı yaz."
            makale2, messages = askme_stored(soru,messages)
            print(baslik,"makale için meta hazırlanıyor...")
            soru = "Bu makale için bir meta açıklaması yaz."
            meta, messages = askme_stored(soru,messages)
            
            print(baslik,"makale için etiketler hazırlanıyor...")
            while True:
                soru = "'"+baslik+"' Bu makale için bana etiketler önerip, etiketleri <etiketler>etiket 1,etiket 2,etiket 3</etiketler> bu şekilde yazar mısın? ayrıca unsplash'da resim araması yapmak için makale ile alakalı genel iki tane etiketi mutlaka ingilizce olarak verirmisin, onu da <unsplash>genel etiket 1, genel etiket 2<unsplash> bu şekilde yazar mısın?"
                etiketinfos, messages = askme_stored(soru,messages)
             
                tags,unsplash = tag_parte(etiketinfos)
                if unsplash:
                    break
            print(baslik,"makale için kategori seçimi yaptırılıyor...")
            soru = "Bu makale için en uygun kategori '"+ ','.join(kategoriler)+ "' bunlardan hangisidir. <kategori>seçilen kategori<kategori> bu şekilde yazar mısın?"
            kategori_source, messages = askme_stored(soru,messages)
            
            kategori = cat_parte(kategori_source)
          
            
            print(baslik,"için resimler bulunuyor")
            images = unsplash_search(unsplash)
            
            title = baslik
            makaleler = [makale1,makale2] 
            ozet = meta
            etiketler = tags.split(',')
            print("konu Hazırlanıyor.")
            post_wp(title,makaleler,ozet,etiketler,images,kategori,status='publish') # taslak için  status='draft', yayınlama için status='publish'
            removeques(baslik)
            
    input("Uygun makaleler yayınlandı.")
    
if __name__ == "__main__":
    main()