ultrazz

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.
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

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

fognet
fognet 27.09.2016 um 18:23:05 Uhr
Goto Top
Hi

Das währe dann ein Bot und verstößt gegen die Nutzungsbedingungen von YouTube.... Einfach das dir das bewusst ist.
Zudem: Das ist ein Administrator Forum, es gibt tonnenweise VB.Net Foren da draussen.face-smile

PPR
colinardo
colinardo 27.09.2016 aktualisiert um 19:35:18 Uhr
Goto Top
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.
Für VB.Net / PHP etc. gibt es von Youtube die entsprechenden APIs. Via Powershell habe ich das hier schon für diverse Dienste wie GMail / Google Drive demonstriert, wie man sich per OAuth authentifiziert und dann Daten abfragt, Aktionen erledigt etc.

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
Herbrich19
Herbrich19 25.11.2016 um 10:22:38 Uhr
Goto Top
Giebt auch leute die 2 Accounts haben. Ich Syncronisiere gerne Facebook Accounts mit einen Visual Basic Programm.

Gruß an die IT-Welt,
J Herbrich