folder Tahribat.com Forumları
linefolder Python
linefolder Python Twitter App Ve Kodda Değişiklik Yapmak



Python Twitter App Ve Kodda Değişiklik Yapmak

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turkz
    turkz's avatar
    Kayıt Tarihi: 13/Aralık/2009
    Erkek

    Twitter hesaplarımın aktif kalması için bir app arıyordum. Twitter github sayfasında şu örnek var: https://github.com/twitterdev/dog-facts Python ile yazılmış. App'e izin verirseniz köpekler hakkında 1 kere tweet atıyor. Çalışan versiyonu şurada deneyebilirsiniz: https://tweet-a-dog-fact.glitch.me/ Çalıştırdım, güzel çalışıyor. Fakat 1 kereden daha fazla tweet atmasını istiyorum. 12 saatte 1 atmaya devam etse harika olur. Python üstatlarının yardımına ihtiyacım var.Chatgpt'ye sordum server.py dosyasını şöyle düzeltti ama çalışacak mı emin değilim:

     

    import base64
    import hashlib
    import os
    import re
    import json
    import requests
    import time
    from requests.auth import AuthBase, HTTPBasicAuth
    from requests_oauthlib import OAuth2Session, TokenUpdated
    from flask import Flask, request, redirect, session, url_for, render_template
    
    app = Flask(__name__)
    app.secret_key = os.urandom(50)
    
    client_id = os.environ.get("CLIENT_ID")
    client_secret = os.environ.get("CLIENT_SECRET")
    auth_url = "https://twitter.com/i/oauth2/authorize"
    token_url = "https://api.twitter.com/2/oauth2/token"
    redirect_uri = os.environ.get("REDIRECT_URI")
    
    # Set the scopes
    scopes = ["tweet.read", "users.read", "tweet.write", "offline.access"]
    
    # Create a code verifier
    code_verifier = base64.urlsafe_b64encode(os.urandom(30)).decode("utf-8")
    code_verifier = re.sub("[^a-zA-Z0-9]+", "", code_verifier)
    
    # Create a code challenge
    code_challenge = hashlib.sha256(code_verifier.encode("utf-8")).digest()
    code_challenge = base64.urlsafe_b64encode(code_challenge).decode("utf-8")
    code_challenge = code_challenge.replace("=", "")
    
    
    def make_token():
        return OAuth2Session(client_id, redirect_uri=redirect_uri, scope=scopes)
    
    
    def parse_dog_fact():
        url = "http://dog-api.kinduff.com/api/facts"
        dog_fact = requests.request("GET", url).json()
        return dog_fact["facts"][0]
    
    
    def post_tweet(payload, token):
        print("Tweeting!")
        return requests.request(
            "POST",
            "https://api.twitter.com/2/tweets",
            json=payload,
            headers={
                "Authorization": "Bearer {}".format(token["access_token"]),
                "Content-Type": "application/json",
            },
        )
    
    
    @app.route("/")
    def hello():
        return render_template("index.html")
    
    
    @app.route("/start")
    def demo():
        global twitter
        twitter = make_token()
        authorization_url, state = twitter.authorization_url(
            auth_url, code_challenge=code_challenge, code_challenge_method="S256"
        )
        session["oauth_state"] = state
        return redirect(authorization_url)
    
    
    @app.route("/oauth/callback", methods=["GET"])
    def callback():
        code = request.args.get("code")
        token = twitter.fetch_token(
            token_url=token_url,
            client_secret=client_secret,
            code_verifier=code_verifier,
            code=code,
        )
        doggie_fact = parse_dog_fact()
        payload = {"text": "{}".format(doggie_fact)}
        response = post_tweet(payload, token).json()
        posted_fact = response['data']['text']
        return render_template("thank-you.html", value=posted_fact)
    
    
    if __name__ == "__main__":
        app.run()
        while True:
            time.sleep(12 * 60 * 60)
            doggie_fact = parse_dog_fact()
            payload = {"text": "{}".format(doggie_fact)}
            response = post_tweet(payload, token).json()
            posted_fact = response['data']['text']
            print(f"New tweet posted: {posted_fact}")
    

     

    turkz tarafından 10/May/23 23:28 tarihinde düzenlenmiştir

    Dünyayı iyiler kurtaracak.
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek
    time.sleep(12 * 60 * 60)

    Hocam zaten 12 saatte bir atıyor gibi görünüyor şu anda?

    Acı Çekene Saygı
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    FrodoTheYuzuksuz bunu yazdı
    time.sleep(12 * 60 * 60)

    Hocam zaten 12 saatte bir atıyor gibi görünüyor şu anda?

    Bu düzeltilmiş haliymiş zaten. Çalışması lazım.

    Ama api yüzünden crash verirse yeniden deneyecek bir mekanizma yok gibi. 


    0x0480 takilin madem ﷽﷽﷽
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek
    end bunu yazdı
    FrodoTheYuzuksuz bunu yazdı
    time.sleep(12 * 60 * 60)

    Hocam zaten 12 saatte bir atıyor gibi görünüyor şu anda?

    Bu düzeltilmiş haliymiş zaten. Çalışması lazım.

    Ama api yüzünden crash verirse yeniden deneyecek bir mekanizma yok gibi. 

    hee gözümden kaçmış.

     

    Son tweet zamanı bir text dosyasına kaydedilebilir. O tweet dosyasının üzerinden 12 saat geçince paylaşım yapılır, zaman damgası düzenlendir.. Ama ben olsam şöyle yapardım,

     

    @app.route("/send", methods=["GET"])
    def send():
    doggie_fact = parse_dog_fact() payload = {"text": "{}".format(doggie_fact)} response = post_tweet(payload, token).json() posted_fact = response['data']['text'] print(f"New tweet posted: {posted_fact}")
    return "hasstikr be rıfat abi"
    if __name__ == "__main__":
        app.run()

    Kodu bu şekilde değiştirip send route ekledikten sonra 12 saatte bir cron-job.org sitesinden site.com/send adresi tetiklenecek şekilde işlem yaptırabilirsiniz.

     

    İlla zorluk istiyorum derseniz aşağıdaki linkteki İş Zamanlama (Scheduling Jobs) kısmına bakabilirsiniz.

     

    https://emregeldegul.com.tr/2022/07/flask-uygulamalarinda-redis-queue-ile-asenkron-task-yonetimi/


    Acı Çekene Saygı
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    FrodoTheYuzuksuz bunu yazdı
    end bunu yazdı
    FrodoTheYuzuksuz bunu yazdı
    time.sleep(12 * 60 * 60)

    Hocam zaten 12 saatte bir atıyor gibi görünüyor şu anda?

    Bu düzeltilmiş haliymiş zaten. Çalışması lazım.

    Ama api yüzünden crash verirse yeniden deneyecek bir mekanizma yok gibi. 

    hee gözümden kaçmış.

     

    Son tweet zamanı bir text dosyasına kaydedilebilir. O tweet dosyasının üzerinden 12 saat geçince paylaşım yapılır, zaman damgası düzenlendir.. Ama ben olsam şöyle yapardım,

     

    @app.route("/send", methods=["GET"])
    def send():
    doggie_fact = parse_dog_fact() payload = {"text": "{}".format(doggie_fact)} response = post_tweet(payload, token).json() posted_fact = response['data']['text'] print(f"New tweet posted: {posted_fact}")
    return "hasstikr be rıfat abi"
    if __name__ == "__main__":
        app.run()

    Kodu bu şekilde değiştirip send route ekledikten sonra 12 saatte bir cron-job.org sitesinden site.com/send adresi tetiklenecek şekilde işlem yaptırabilirsiniz.

     

    İlla zorluk istiyorum derseniz aşağıdaki linkteki İş Zamanlama (Scheduling Jobs) kısmına bakabilirsiniz.

     

    https://emregeldegul.com.tr/2022/07/flask-uygulamalarinda-redis-queue-ile-asenkron-task-yonetimi/

    https://pypi.org/project/flask-crontab/

    Sendleme için route oluşturup 3rd party bir hizmetle request atmak benim de tercihim olurdu bu arada. 

     


    0x0480 takilin madem ﷽﷽﷽
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek
    end bunu yazdı

    https://pypi.org/project/flask-crontab/

    Sendleme için route oluşturup 3rd party bir hizmetle request atmak benim de tercihim olurdu bu arada. 

     

     

    Sonuna kadar redisciyiz.

     

    Ha bu arada bir önceki mesajına istinaden; tekrar deneyecek mekanizmalar var en basit örnek: supervisor, serviced

     

    FrodoTheYuzuksuz tarafından 11/May/23 12:15 tarihinde düzenlenmiştir

    Acı Çekene Saygı
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Twitter artık affetmiyor direkt hesapların kapanır hocam. Çok ciddi sıkıntı var elon musk dan sonra kimsenin gözünün yaşına bakmıyor. Bariz bot gibi davranırsa kullandığın SDK. Hesaplarına da browser dan giriş yapmazsan hesapların gümler haberin olsun.


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    end
    end's avatar
    Kayıt Tarihi: 16/Ekim/2016
    Erkek
    FrodoTheYuzuksuz bunu yazdı
    end bunu yazdı

    https://pypi.org/project/flask-crontab/

    Sendleme için route oluşturup 3rd party bir hizmetle request atmak benim de tercihim olurdu bu arada. 

     

     

    Sonuna kadar redisciyiz.

     

    Ha bu arada bir önceki mesajına istinaden; tekrar deneyecek mekanizmalar var en basit örnek: supervisor, serviced

     

    Makineye her kurulan program bir külfettir. Minimum gereksinimle çözmek yeğdir, en azından bazı durumlarda. 

    Adam sırf 12 saatte 1 çalışacak diye gitsin redis mi kursun

    Basit bir try except ve async stack ile çözersin be hocam 😜

    end tarafından 11/May/23 12:32 tarihinde düzenlenmiştir

    0x0480 takilin madem ﷽﷽﷽
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    FrodoTheYuzuksuz
    FrodoTheYuzuksuz's avatar
    Kayıt Tarihi: 17/Ekim/2021
    Erkek
    end bunu yazdı

     

    Makineye her kurulan program bir külfettir. Minimum gereksinimle çözmek yeğdir, en azından bazı durumlarda. 

    Adam sırf 12 saatte 1 çalışacak diye gitsin redis mi kursun

    Basit bir try except ve async stack ile çözersin be hocam 😜

    Ben sunucuya kuracak diye düşünüyordum :D vercel falan beleş sağlıor, req. olarak belirtsin dışardan tetikletsin :D

     

    Pc konusunda katılıyorum, bende dockeri tercih etmeye çalışıyorum mümkün mertebe.


    Acı Çekene Saygı
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    angels_demos
    angels_demos's avatar
    Kayıt Tarihi: 03/Haziran/2006
    Erkek

    time sleep değil de cron ile daha doğru olur

  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    turkz
    turkz's avatar
    Kayıt Tarihi: 13/Aralık/2009
    Erkek
    MhmdAlmz bunu yazdı

    Twitter artık affetmiyor direkt hesapların kapanır hocam. Çok ciddi sıkıntı var elon musk dan sonra kimsenin gözünün yaşına bakmıyor. Bariz bot gibi davranırsa kullandığın SDK. Hesaplarına da browser dan giriş yapmazsan hesapların gümler haberin olsun.

    Hocam aslında bu bot değil de app diye geçtiği için banlanmama konusunda ümitliyim. Bot da kullanıyorum çok fazla banlanan hesabım oldu. Dediğin gibi tarayıcıdan giriş belli bir süre olmazsa ve aynı ip'den yoğun rt fav takip olayına girdiğinde hesabın kurtuluşu yok.


    Dünyayı iyiler kurtaracak.
Toplam Hit: 1184 Toplam Mesaj: 11
python twitter glitch