Google Account wechseln und YT-Kanal abonnieren
Hallo,ich würde gerne wissen wie man mit einer Visual Basic Datei einen vorhandenen Google-Account wechselt und damit dann ganz automatisch einen Kanal abonniert,ein Video liked bzw. disliked.
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 316353
Url: https://administrator.de/forum/google-account-wechseln-und-yt-kanal-abonnieren-316353.html
Ausgedruckt am: 17.05.2025 um 06:05 Uhr
3 Kommentare
Neuester Kommentar
Das währe dann ein Bot und verstößt gegen die Nutzungsbedingungen von YouTube
Quark, mit dem API kann das legal gemacht werden. Für die Nutzung des anderen Accounts aus dem Programm heraus muss immer mindestens einmal eine Zustimmung des Google-Account-Inhabers geholt werden (OAuth) (Dieser loggt sich ein und bestätigt das die jeweilige App in seinem Auftrag bestimmte Dinge anstellen darf).Authentifizierung via OAuth und das Youtube API sind deine Freunde:
https://developers.google.com/youtube/v3/docs/#Subscriptions
insert POST /subscriptions Adds a subscription for the authenticated user's channel.
Hier meine Beiträge dazu:
Google-Drive:
Google drive komplexer upload per batch oder powershell
Google-GMail:
Powershell: Googlemail (GMail) nativ mit Powershell verwalten
Google-Kalender auslesen (VB.Net):
Google Calendar auslesen und automatisch neue Termine generieren
Hier das entsprechende Powershell-Beispiel zum abonnieren eines Channels
(Zur Anpassung der Parameter im Kopf des Scripts siehe die Beiträge oben)
<#
######################################
###### Google-Youtube-API #######
######################################
-> benötigt wird mind. PS Version 3.0
#>
if ($PSVersionTable.PSVersion.Major -lt 3){write-host "ERROR: Minimum Powershell Version 3.0 is required!" -F Yellow; return}
# ANPASSUNGEN HIER VORNEHMEN ===========================================================
# Client API Zugangsdaten hier eintragen
$client_id = 'XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX'
$client_secret = 'XXXXXXXXXXXXXXXXXXXXXXXXXXX'
# Array der Bereiche die autorisiert werden sollen (In diesem Beispiel erhält die Anwendung Vollzugriff auf alle Google-Drive Funktionen)
$global:scopes = @('https://www.googleapis.com/auth/youtube')
# Pfad in dem das Refresh-Token gespeichert wird mit dem man ein neues Access Token anfordert (Standardmäßig der Ordner in dem das Skript liegt)
$global:token_path = "$(Split-Path $PSCommandPath -Parent)\refresh.token"
# E-Mail-Adresse des Google-Kontos
$global:gmail_email = 'XXXXXX@gmail.com'
# ENDE EINRICHTUNG =====================================================================
Add-Type -AssemblyName System.Windows.Forms
<#
-------------------------------------------------------------------------------------------
Funktion: Haupt-Authentifizierungsfunktion (OAuth 2.0) für Zugriffe auf die Google-Dienste
-------------------------------------------------------------------------------------------
#>
function Auth-Google(){
# wenn kein Refresh-Token vorhanden ist, initiale Authorization starten ...
if ((Test-Path $global:token_path)){
$content = gc $global:token_path -TotalCount 1
if ($content.length -gt 0){$global:refresh_token = $content}
}
if(!$global:refresh_token){
$url = "https://accounts.google.com/o/oauth2/auth?scope=$($global:scopes -join " ")&redirect_uri=urn:ietf:wg:oauth:2.0:oob&response_type=code&client_id=$client_id"
# Manuelle Authorization mit Userinteraktion
write-host "Starting Authorization Request in Browser ... (Please Login into your Google-Account, and accept the authorization request, copy the returned code and close the Browser-Window !" -ForegroundColor Green
Start-Process "iexplore.exe" -ArgumentList $url -Wait
$authcode = [System.Windows.Forms.Clipboard]::GetText()
# Get Auth-Code via IE Automation, fully automated.
#$authcode = Get-AuthCode $url
$requestbody = @{
"code"=$authcode
"client_id"=$client_id
"client_secret"=$client_secret
"redirect_uri"='urn:ietf:wg:oauth:2.0:oob'
"grant_type"="authorization_code"
}
$result = Invoke-RestMethod 'https://www.googleapis.com/oauth2/v3/token' -Method Post -Body $requestbody
$global:refresh_token = $result.refresh_token
set-content $global:token_path -Value $global:refresh_token
$global:access_token = $result.access_token
$global:token_expires = $result.expires_in
$global:token_created = get-date
return $true
}else{
# kein access_token vorhanden => neues access_token via refresh holen
if (!$global:access_token){
write-host "Refreshing access_token ..."
$requestbody = @{
"refresh_token"=$global:refresh_token
"client_id"=$client_id
"client_secret"=$client_secret
"grant_type"="refresh_token"
}
Try{
$tokenrequest = Invoke-RestMethod 'https://www.googleapis.com/oauth2/v3/token' -Method Post -Body $requestbody -EA Stop
$global:access_token = $tokenrequest.access_token
$global:token_created = get-date
$global:token_expires = $tokenrequest.expires_in
return $true
}catch{
write-host $_.Exception.Message
return $false
}
}else{
# access_token vorhanden, überprüfe ob es abgelaufen ist
if((((get-date) - $global:token_created).TotalSeconds) -ge $global:token_expires){
# access_token ist abgelaufen => fordere ein neues an
write-host "Access Token has expired ..."
$global:access_token = ""
Auth-Google
}else{
# gültiges access_token vorhanden
return $true
}
}
}
}
<#
##### Funktion zum abonnieren eines Channels #####
#>
function Subscribe-Channel(){
param(
[parameter(mandatory=$true)][string]$channelid
)
# Autorisierung
if(!(Auth-Google)){
return $false
}
try{
$uri = "https://www.googleapis.com/youtube/v3/subscriptions?part=snippet&access_token=$($global:access_token)"
$props = @{
'snippet' = @{
'resourceId' = @{
'kind' = 'youtube#subscription'
'channelId' = $channelid
}
}
} | ConvertTo-Json
$result = Invoke-RestMethod -uri $uri -body $props -Method Post -ContentType "application/json"
return $result
}catch{
throw $_.Exception.InnerException
}
}
# Channel testweise abonnieren (https://www.youtube.com/channel/UC_I32g5fMXlLtp9_DG9j9SA) "Ruthe Cartoons" ;-)
Subscribe-Channel -channelid 'UC_I32g5fMXlLtp9_DG9j9SA'
Grüße Uwe