Python'da Youtube API ile Youtube Video Yükleme Programı

1wexter1

Katılımcı Üye
24 Eyl 2021
921
647
Uzayda1yer
Uzun bir aradan sonra tekrardan merhabalar THT ailesi
bugün Python ile youtube'ye nasıl video indirebileceğiniz anlatacağım(bunu API ile yapacağız)
ve sonuna kadar okumadan bu projeye girişmenizi tavsiye etmem fazla uzatmadan başlayalım


NOT: son kısımdaki uyarıyı projeye başlamadan lütfen okuyun.

1) Başlamadan önce olması gerekenler;

1)Youtube hesabınız

2)Youtube API hesabı (hesap açmak için "Hesap oluştur")

Eğer bu iki şeye sahip isek devam edebiliriz kullandığınız python editörünü açıp terminalden sanal ortama giriş yapacağız
kullandığınız işletim sistemine göre değişir (windows üzerinden anlatacağım)

Python:
#
# Eğer Python 3.x kullanıyorsanız
python -m venv myenv

sonrasında sanal ortamı oluşturacağız
Python:
# Eğer Python 3.x kullanıyorsanız
python -m venv myenv
ve en sonunda sanal ortamımızı aktive edeceğiz
Python:
myenv\Scripts\activate

Şu şekilde bir görsel elde etmemiz gerekir terminalde

8euljtw.png



2) İndirmemiz gereken kütüphaneler:

Python:
pip install --uprade google-api-python-client
Python:
pip install --uprade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Python:
pip instal oauth2client
Bu kısımda hallolduğuna göre şimdi youtube API key oluşturup secret_id ve client_sercret elde etmemiz lazım
bu biraz uzun bir işlem ve bunu anlatmak için çok fazla resim kullanmam gerekir ve
konuyu gereksiz yere uzatır bu durum ondan dolayı bunu bir videodan göstereceğim
şu linke gidiniz: API KEY


11. dakika 58. saniyeden 16.dk 2.sn'ye kadar ki tüm işlemleri gerçekleştirin
bu işlemleri gerçekleştirdikten sonra tekrardan vs code açıyoruz ve projemiz olduğu kısımda yeni bir txt dosyası açıyoruz
bu dosyanın adını "client_secrets.json" koymalıyız çünkü kod içerisinde bu şekilde kaydedeceğiz birazdan bu adımı tamamladıktan
sonra bu açtığımız dosyanın içine şu değeri gireceğiz

Kod:
{
  "web": {
    "client_id": "[[INSERT CLIENT ID HERE]]",
    "client_secret": "[[INSERT CLIENT SECRET HERE]]",
    "redirect_uris": [],
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token"
  }
}

şimdi eğer hatırlarsanız biz Youtube API den secret id ve client secret değeri almıştık şimdi sıra onları kullanmaya gelecek

h9c54g5.png


evet burada altını kırmızı renge boyadığım yerdeki secret_id ve client_secret kısmındaki karşılık gelen değerleri yerine Youtube API kısmından aldığımız değerleri kopyala yağıştır yapacağız
örnek:

Kod:
"client_id": "kopyala-yapıştır yağacağımız yer", #Youtube API den aldığımız Client_ID 'yi bu kısıma kopyala yapıştır yapacağız
    "client_secret": "kopyala-yapıştır yapacağımız yer", #Youtube API den aldığımız Client_secret 'ı bu kısıma kopyala yapıştır yapacağız

bu adımları sıkıntısız şekilde atlattıysak şimdi projenin asıl kısımına denk geliyoruz şimdi projemize geri dönüyoruz ve yeni bir dosya oluşturacağız
oluşturacağımız dosya python dosyası olacak ve dosyanın adı "upload.py" yapmaya dikkat edin aksi takdirde çalışmaz(kodun içerisinde yazarken "upload.py" diye ekleyeceğiz ondan)
ve bu oluşturduğumuz "upload.py" dosyasını altta verdiğim kodu kopyala-yapıştır yapıyoruz

Python:
import httplib2
import os
import random
import sys
import time

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow


# Explicitly tell the underlying HTTP transport library not to retry, since
# we are handling retry logic ourselves.
httplib2.RETRIES = 1

# Maximum number of times to retry before giving up.
MAX_RETRIES = 10

# Always retry when these exceptions are raised.
RETRIABLE_EXCEPTIONS = (httplib2.HttpLib2Error, IOError)


RETRIABLE_STATUS_CODES = [500, 502, 503, 504]


CLIENT_SECRETS_FILE = "client_secrets.json"


YOUTUBE_UPLOAD_SCOPE = "https://www.googleapis.com/auth/youtube.upload"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

# This variable defines a message to display if the CLIENT_SECRETS_FILE is
# missing.
MISSING_CLIENT_SECRETS_MESSAGE = """
WARNING: Please configure OAuth 2.0

To make this sample run you will need to populate the client_secrets.json file
found at:

   %s

with information from the API Console
https://console.cloud.google.com/

For more information about the client_secrets.json file format, please visit:
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
""" % os.path.abspath(os.path.join(os.path.dirname(__file__),
                                   CLIENT_SECRETS_FILE))

VALID_PRIVACY_STATUSES = ("public", "private", "unlisted")


def get_authenticated_service(args):
  flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
    scope=YOUTUBE_UPLOAD_SCOPE,
    message=MISSING_CLIENT_SECRETS_MESSAGE)

  storage = Storage("%s-oauth2.json" % sys.argv[0])
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    credentials = run_flow(flow, storage, args)

  return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    http=credentials.authorize(httplib2.Http()))

def initialize_upload(youtube, options):
  tags = None
  if options.keywords:
    tags = options.keywords.split(",")

  body=dict(
    snippet=dict(
      title=options.title,
      description=options.description,
      tags=tags,
      categoryId=options.category
    ),
    status=dict(
      privacyStatus=options.privacyStatus
    )
  )

  # Call the API's videos.insert method to create and upload the video.
  insert_request = youtube.videos().insert(
    part=",".join(body.keys()),
    body=body,
    # The chunksize parameter specifies the size of each chunk of data, in
    # bytes, that will be uploaded at a time. Set a higher value for
    # reliable connections as fewer chunks lead to faster uploads. Set a lower
    # value for better recovery on less reliable connections.
    #
    # Setting "chunksize" equal to -1 in the code below means that the entire
    # file will be uploaded in a single HTTP request. (If the upload fails,
    # it will still be retried where it left off.) This is usually a best
    # practice, but if you're using Python older than 2.6 or if you're
    # running on App Engine, you should set the chunksize to something like
    # 1024 * 1024 (1 megabyte).
    media_body=MediaFileUpload(options.file, chunksize=-1, resumable=True)
  )

  resumable_upload(insert_request)

# This method implements an exponential backoff strategy to resume a
# failed upload.
def resumable_upload(insert_request):
  response = None
  error = None
  retry = 0
  while response is None:
    try:
      print ("Uploading file...")
      status, response = insert_request.next_chunk()
      if response is not None:
        if 'id' in response:
          print ("Video id '%s' was successfully uploaded.") % response['id']
        else:
          exit("The upload failed with an unexpected response: %s" % response)
    except HttpError as e:
      if e.resp.status in RETRIABLE_STATUS_CODES:
        error = "A retriable HTTP error %d occurred:\n%s" % (e.resp.status,
                                                             e.content)
      else:
        raise
    except RETRIABLE_EXCEPTIONS as e:
      error = "A retriable error occurred: %s" % e

    if error is not None:
      print(" error")
      retry += 1
      if retry > MAX_RETRIES:
        exit("No longer attempting to retry.")

      max_sleep = 2 ** retry
      sleep_seconds = random.random() * max_sleep
      print( "Sleeping %f seconds and then retrying...") % sleep_seconds
      time.sleep(sleep_seconds)

if __name__ == '__main__':
  argparser.add_argument("--file", required=True, help=r"c:\Users\user\123.mp4")
  argparser.add_argument("--title", help="fln", default="Test Title")
  argparser.add_argument("--description", help="fin",
    default="Test Description")
  argparser.add_argument("--category", default="22",
    help="24 " +
      "See https://developers.google.com/youtube/v3/docs/videoCategories/list")
  argparser.add_argument("--keywords", help="abc",
    default="")
  argparser.add_argument("--privacyStatus", choices=VALID_PRIVACY_STATUSES,
    default=VALID_PRIVACY_STATUSES[0], help="private")
  args = argparser.parse_args()

  if not os.path.exists(args.file):
    exit("Please specify a valid file using the --file= parameter.")

  youtube = get_authenticated_service(args)
  try:
    initialize_upload(youtube, args)
  except HttpError as e:
    print ("An HTTP error %d occurred:\n%s") % (e.resp.status, e.content)

Burada ayarlamanız gerekecek bir şey yok sadece kopyala yapıştır yapsanız yeterli olacaktır(fakat hata veriyorsa bana bunu bildirin yardımcı olmaya çalışırım)
Eğer bu kısımı da sorunsuz şekilde atlattıysak son yere gelmiş olduk

3) Son Kısım

şimdi tekrar terminale geliyoruz ve şu kodu giriyoruz:
Kod:
python upload_video.py --file="/users/user/123.mp4" --title="deneme" --description="deneme1" --keywords="video" --category="22" --privacyStatus="private"
Şimdi burada direkt copy-paste yapmayacağız burada sizin girmeniz gereken parametreler var bunları teker teker açıklayacağım;


1) --file: burada tırnak arasına gireceğiniz parametre sizin youtube indireceğiniz videonun dosya yolunu girmelisin fakat dikkat edin benim girdiğim gibi dosya yolunu girin
2) --title = burada tırnak arasına gireceğiniz parametre sizin yükleyeceğiniz videonun başlığı olacaktır
3) --description = burada tırnak arasına gireceğiniz parametre sizin yükleyeceğiniz videonun açıklaması olacaktır
4) --keywords = burada tırnak arasına gireceğiniz parametre sizin videonuzun aranırken anahtar kelimelerin belirlemenizi sağlıyor(ama bu bir işe yaramayacak en sonda sebebini söyleyeceğim)
5) --category = burada gireceğiniz parametre işinize yaramayacak varsayılan(22) olarak bırakmanızı tavsiye ederim
6) --privacyStatus = burada gireceğiniz parametre sizin videonunuzun nasıl yüklemek istediğinizi (gizli = private, public = herkese açık, unlisted = liste dışı) ayarlamanızı sağaıyacaktır fakat bu parametre de bir işe yaramayacaktır ne yaparsanız yapın "private" olarak ayarlayacaktır sebebini en son açıklayacağım.
bu değerleri girdikten sonra terminalden "enter" tuşuna basıp videonunuzu youtubeye indrebilirsiniz tabii gerekli izinleri verdikten sonra

4) Gerekli İzinler

terminalde "enter" tuşuna basıp kodu çalıştırdıktan sonra varsayılan tarayıcıyı açacak ve hangi hesabınıza video indirmenizi istediğiniz soracaktır
orada istediğiniz hesabı seçip karşınıza gelen onayları onayladıktan sonra videonuz youtube kanalınıza inecektir.

buraya kadar umarım iyi bir şekilde anlatabilmişimdir anlamadığınız takıldığınız yer olursa sorun cevaplarım
ve son kısımdaki uyarıyı projeye başlamadan lütfen okuyun



***********************************************


ÖNEMLİ UYARI: Her şeyi bitirip videonuz yüklendikten sonra şunu fark edeceksiniz videonuz "private(gizli)" olarak paylaşacaktır.

bunu bende sizin en son öğrendiğiniz gibi bende projeyi bitirip çalıştırdığım da fark ettim bunun sebebi ise youtube'nin politikasından ötürü
API ile yüklenen videonun private şekilde yüklüyor açıkçası bunu bende en son öğrenince çok üzüldüm çünkü tüm emeğim boşa gitmiş gibi hissetim
bunu söyleyince aklınızda şöyle bir soru oluşabilir madem boşunaydı neden paylaştın vs. diyebilirsiniz buna vereceğim cevap şu benim bu konuyu paylaşmamın sebebi yazılıma yeni başlayan veya orta seviyede olan birisi API ile proje yapmanın nasıl bir şey olduğunu görmesini istedim ve ikinci sebebim şuydu bu konuyla ilgili hiçbir yerde Türkçe bir kaynak yoktu bende bir Türkçe kaynak olsun istedim.



***********************************************
Buraya kadar okuyan herkese teşekkür ederim
Tekrar görüşüne kadar
sağlıcakla kalın THT ailesi
 
Son düzenleme:

Butcherb3y

Uzman üye
1 Eyl 2022
1,544
1,146
Anıtkabir
Uzun bir aradan sonra tekrardan merhabalar THT ailesi
bugün Python ile youtube'ye nasıl video indirebileceğiniz anlatacağım(bunu API ile yapacağız)
ve sonuna kadar okumadan bu projeye girişmenizi tavsiye etmem fazla uzatmadan başlayalım


NOT: son kısımdaki uyarıyı projeye başlamadan lütfen okuyun.

1) Başlamadan önce olması gerekenler;

1)Youtube hesabınız

2)Youtube API hesabı (hesap açmak için "Hesap oluştur")

Eğer bu iki şeye sahip isek devam edebiliriz kullandığınız python editörünü açıp terminalden sanal ortama giriş yapacağız
kullandığınız işletim sistemine göre değişir (windows üzerinden anlatacağım)

Python:
#
# Eğer Python 3.x kullanıyorsanız
python -m venv myenv

sonrasında sanal ortamı oluşturacağız
Python:
# Eğer Python 3.x kullanıyorsanız
python -m venv myenv
ve en sonunda sanal ortamımızı aktive edeceğiz
Python:
myenv\Scripts\activate

Şu şekilde bir görsel elde etmemiz gerekir terminalde

8euljtw.png



2) İndirmememiz gereken kütüphaneler:

Python:
pip install --uprade google-api-python-client
Python:
pip install --uprade google-api-python-client google-auth-httplib2 google-auth-oauthlib
Python:
pip instal oauth2client
Bu kısımda hallolduğuna göre şimdi youtube API key oluşturup secret_id ve client_sercret elde etmemiz lazım
bu biraz uzun bir işlem ve bunu anlatmak için çok fazla resim kullanmam gerekir ve
konuyu gereksiz yere uzatır bu durum ondan dolayı bunu bir videodan göstereceğim
şu linke gidiniz: API KEY


11. dakika 58. saniyeden 16.dk 2.sn'ye kadar ki tüm işlemleri gerçekleştirin
bu işlemleri gerçekleştirdikten sonra tekrardan vs code açıyoruz ve projemiz olduğu kısımda yeni bir txt dosyası açıyoruz
bu dosyanın adını "client_secrets.json" koymalıyız çünkü kod içerisinde bu şekilde kaydedeceğiz birazdan bu adımı tamamladıktan
sonra bu açtığımız dosyanın içine şu değeri gireceğiz

Kod:
{
  "web": {
    "client_id": "[[INSERT CLIENT ID HERE]]",
    "client_secret": "[[INSERT CLIENT SECRET HERE]]",
    "redirect_uris": [],
    "auth_uri": "https://accounts.google.com/o/oauth2/auth",
    "token_uri": "https://accounts.google.com/o/oauth2/token"
  }
}

şimdi eğer hatırlarsanız biz Youtube API den secret id ve client secret değeri almıştık şimdi sıra onları kullanmaya gelecek

h9c54g5.png


evet burada altını kırmızı renge boyadığım yerdeki secret_id ve client_secret kısmındaki karşılık gelen değerleri yerine Youtube API kısmından aldığımız değerleri kopyala yağıştır yapacağız
örnek:

Kod:
"client_id": "kopyala-yapıştır yağacağımız yer", #Youtube API den aldığımız Client_ID 'yi bu kısıma kopyala yapıştır yapacağız
    "client_secret": "kopyala-yapıştır yapacağımız yer", #Youtube API den aldığımız Client_secret 'ı bu kısıma kopyala yapıştır yapacağız

bu adımları sıkıntısız şekilde atlattıysak şimdi projenin asıl kısımına denk geliyoruz şimdi projemize geri dönüyoruz ve yeni bir dosya oluşturacağız
oluşturacağımız dosya python dosyası olacak ve dosyanın adı "upload.py" yapmaya dikkat edin aksi takdirde çalışmaz(kodun içerisinde yazarken "upload.py" diye ekleyeceğiz ondan)
ve bu oluşturduğumuz "upload.py" dosyasını altta verdiğim kodu kopyala-yapıştır yapıyoruz

Python:
import httplib2
import os
import random
import sys
import time

from googleapiclient.discovery import build
from googleapiclient.errors import HttpError
from googleapiclient.http import MediaFileUpload
from oauth2client.client import flow_from_clientsecrets
from oauth2client.file import Storage
from oauth2client.tools import argparser, run_flow


# Explicitly tell the underlying HTTP transport library not to retry, since
# we are handling retry logic ourselves.
httplib2.RETRIES = 1

# Maximum number of times to retry before giving up.
MAX_RETRIES = 10

# Always retry when these exceptions are raised.
RETRIABLE_EXCEPTIONS = (httplib2.HttpLib2Error, IOError)


RETRIABLE_STATUS_CODES = [500, 502, 503, 504]


CLIENT_SECRETS_FILE = "client_secrets.json"


YOUTUBE_UPLOAD_SCOPE = "https://www.googleapis.com/auth/youtube.upload"
YOUTUBE_API_SERVICE_NAME = "youtube"
YOUTUBE_API_VERSION = "v3"

# This variable defines a message to display if the CLIENT_SECRETS_FILE is
# missing.
MISSING_CLIENT_SECRETS_MESSAGE = """
WARNING: Please configure OAuth 2.0

To make this sample run you will need to populate the client_secrets.json file
found at:

   %s

with information from the API Console
https://console.cloud.google.com/

For more information about the client_secrets.json file format, please visit:
https://developers.google.com/api-client-library/python/guide/aaa_client_secrets
""" % os.path.abspath(os.path.join(os.path.dirname(__file__),
                                   CLIENT_SECRETS_FILE))

VALID_PRIVACY_STATUSES = ("public", "private", "unlisted")


def get_authenticated_service(args):
  flow = flow_from_clientsecrets(CLIENT_SECRETS_FILE,
    scope=YOUTUBE_UPLOAD_SCOPE,
    message=MISSING_CLIENT_SECRETS_MESSAGE)

  storage = Storage("%s-oauth2.json" % sys.argv[0])
  credentials = storage.get()

  if credentials is None or credentials.invalid:
    credentials = run_flow(flow, storage, args)

  return build(YOUTUBE_API_SERVICE_NAME, YOUTUBE_API_VERSION,
    http=credentials.authorize(httplib2.Http()))

def initialize_upload(youtube, options):
  tags = None
  if options.keywords:
    tags = options.keywords.split(",")

  body=dict(
    snippet=dict(
      title=options.title,
      description=options.description,
      tags=tags,
      categoryId=options.category
    ),
    status=dict(
      privacyStatus=options.privacyStatus
    )
  )

  # Call the API's videos.insert method to create and upload the video.
  insert_request = youtube.videos().insert(
    part=",".join(body.keys()),
    body=body,
    # The chunksize parameter specifies the size of each chunk of data, in
    # bytes, that will be uploaded at a time. Set a higher value for
    # reliable connections as fewer chunks lead to faster uploads. Set a lower
    # value for better recovery on less reliable connections.
    #
    # Setting "chunksize" equal to -1 in the code below means that the entire
    # file will be uploaded in a single HTTP request. (If the upload fails,
    # it will still be retried where it left off.) This is usually a best
    # practice, but if you're using Python older than 2.6 or if you're
    # running on App Engine, you should set the chunksize to something like
    # 1024 * 1024 (1 megabyte).
    media_body=MediaFileUpload(options.file, chunksize=-1, resumable=True)
  )

  resumable_upload(insert_request)

# This method implements an exponential backoff strategy to resume a
# failed upload.
def resumable_upload(insert_request):
  response = None
  error = None
  retry = 0
  while response is None:
    try:
      print ("Uploading file...")
      status, response = insert_request.next_chunk()
      if response is not None:
        if 'id' in response:
          print ("Video id '%s' was successfully uploaded.") % response['id']
        else:
          exit("The upload failed with an unexpected response: %s" % response)
    except HttpError as e:
      if e.resp.status in RETRIABLE_STATUS_CODES:
        error = "A retriable HTTP error %d occurred:\n%s" % (e.resp.status,
                                                             e.content)
      else:
        raise
    except RETRIABLE_EXCEPTIONS as e:
      error = "A retriable error occurred: %s" % e

    if error is not None:
      print(" error")
      retry += 1
      if retry > MAX_RETRIES:
        exit("No longer attempting to retry.")

      max_sleep = 2 ** retry
      sleep_seconds = random.random() * max_sleep
      print( "Sleeping %f seconds and then retrying...") % sleep_seconds
      time.sleep(sleep_seconds)

if __name__ == '__main__':
  argparser.add_argument("--file", required=True, help=r"c:\Users\user\123.mp4")
  argparser.add_argument("--title", help="fln", default="Test Title")
  argparser.add_argument("--description", help="fin",
    default="Test Description")
  argparser.add_argument("--category", default="22",
    help="24 " +
      "See https://developers.google.com/youtube/v3/docs/videoCategories/list")
  argparser.add_argument("--keywords", help="abc",
    default="")
  argparser.add_argument("--privacyStatus", choices=VALID_PRIVACY_STATUSES,
    default=VALID_PRIVACY_STATUSES[0], help="private")
  args = argparser.parse_args()

  if not os.path.exists(args.file):
    exit("Please specify a valid file using the --file= parameter.")

  youtube = get_authenticated_service(args)
  try:
    initialize_upload(youtube, args)
  except HttpError as e:
    print ("An HTTP error %d occurred:\n%s") % (e.resp.status, e.content)

Burada ayarlamanız gerekecek bir şey yok sadece kopyala yapıştır yapsanız yeterli olacaktır(fakat hata veriyorsa bana bunu bildirin yardımcı olmaya çalışırım)
Eğer bu kısımı da sorunsuz şekilde atlattıysak son yere gelmiş olduk

3) Son Kısım

şimdi tekrar terminale geliyoruz ve şu kodu giriyoruz:
Kod:
python upload_video.py --file="/users/user/123.mp4" --title="deneme" --description="deneme1" --keywords="video" --category="22" --privacyStatus="private"
Şimdi burada direkt copy-paste yapmayacağız burada sizin girmeniz gereken parametreler var bunları teker teker açıklayacağım;


1) --file: burada tırnak arasına gireceğiniz parametre sizin youtube indireceğiniz videonun dosya yolunu girmelisin fakat dikkat edin benim girdiğim gibi dosya yolunu girin
2) --title = burada tırnak arasına gireceğiniz parametre sizin yükleyeceğiniz videonun başlığı olacaktır
3) --description = burada tırnak arasına gireceğiniz parametre sizin yükleyeceğiniz videonun açıklaması olacaktır
4) --keywords = burada tırnak arasına gireceğiniz parametre sizin videonuzun aranırken anahtar kelimelerin belirlemenizi sağlıyor(ama bu bir işe yaramayacak en sonda sebebini söyleyeceğim)
5) --category = burada gireceğiniz parametre işinize yaramayacak varsayılan(22) olarak bırakmanızı tavsiye ederim
6) --privacyStatus = burada gireceğiniz parametre sizin videonunuzun nasıl yüklemek istediğinizi (gizli = private, public = herkese açık, unlisted = liste dışı) ayarlamanızı sağaıyacaktır fakat bu parametre de bir işe yaramayacaktır ne yaparsanız yapın "private" olarak ayarlayacaktır sebebini en son açıklayacağım.
bu değerleri girdikten sonra terminalden "enter" tuşuna basıp videonunuzu youtubeye indrebilirsiniz tabii gerekli izinleri verdikten sonra

4) Gerekli İzinler

terminalde "enter" tuşuna basıp kodu çalıştırdıktan sonra varsayılan tarayıcıyı açacak ve hangi hesabınıza video indirmenizi istediğiniz soracaktır
orada istediğiniz hesabı seçip karşınıza gelen onayları onayladıktan sonra videonuz youtube kanalınıza inecektir.

buraya kadar umarım iyi bir şekilde anlatabilmişimdir anlamadığınız takıldığınız yer olursa sorun cevaplarım
ve son kısımdaki uyarıyı projeye başlamadan lütfen okuyun



***********************************************


ÖNEMLİ UYARI: Her şeyi bitirip videonuz yüklendikten sonra şunu fark edeceksiniz videonuz "private(gizli)" olarak paylaşacaktır.

bunu bende sizin en son öğrendiğiniz gibi bende projeyi bitirip çalıştırdığım da fark ettim bunun sebebi ise youtube'nin politikasından ötürü
API ile yüklenen videonun private şekilde yüklüyor açıkçası bunu bende en son öğrenince çok üzüldüm çünkü tüm emeğim boşa gitmiş gibi hissetim
bunu söyleyince aklınızda şöyle bir soru oluşabilir madem boşunaydı neden paylaştın vs. diyebilirsiniz buna vereceğim cevap şu benim bu konuyu paylaşmamın sebebi yazılıma yeni başlayan veya orta seviyede olan birisi API ile proje yapmanın nasıl bir şey olduğunu görmesini istedim ve ikinci sebebim şuydu bu konuyla ilgili hiçbir yerde Türkçe bir kaynak yoktu bende bir Türkçe kaynak olsun istedim.



***********************************************
Buraya kadar okuyan herkese teşekkür ederim
Tekrar görüşüne kadar
sağlıcakla kalın THT ailesi
Elinize sağlık
 

1wexter1

Katılımcı Üye
24 Eyl 2021
921
647
Uzayda1yer
2. başlığı yanlış atmış olabilirmisin? indirmemiz gereken yerine indirmememiz gereken yazmışsın :) Eline sağlık yine de
Evet haklısın yanlış yazmışım, teşekkür ederim uyarın için hemen düzenliyorum.

privacyStatus="private" bölümünü privacyStatus="public" yapalım bakalım.
Evet eğer dediğiniz şekilde ayarlarsak yine videoyu yt hesabınızda paylaşır fakat burada gizli paylaşır ne türlü videoyu yüklerseniz yükleyin videoyu gizli paylaşacaktır maalesef yotube politikalarından ötürü hatta bunu resim ile göstereyim daha iyi anlaşılabilir herkes için.

ukku095.png
 
Üst

Turkhackteam.org internet sitesi 5651 sayılı kanun’un 2. maddesinin 1. fıkrasının m) bendi ile aynı kanunun 5. maddesi kapsamında "Yer Sağlayıcı" konumundadır. İçerikler ön onay olmaksızın tamamen kullanıcılar tarafından oluşturulmaktadır. Turkhackteam.org; Yer sağlayıcı olarak, kullanıcılar tarafından oluşturulan içeriği ya da hukuka aykırı paylaşımı kontrol etmekle ya da araştırmakla yükümlü değildir. Türkhackteam saldırı timleri Türk sitelerine hiçbir zararlı faaliyette bulunmaz. Türkhackteam üyelerinin yaptığı bireysel hack faaliyetlerinden Türkhackteam sorumlu değildir. Sitelerinize Türkhackteam ismi kullanılarak hack faaliyetinde bulunulursa, site-sunucu erişim loglarından bu faaliyeti gerçekleştiren ip adresini tespit edip diğer kanıtlarla birlikte savcılığa suç duyurusunda bulununuz.