ultrazz
Goto Top

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.

Content-Key: 316353

Url: https://administrator.de/contentid/316353

Printed on: April 24, 2024 at 13:04 o'clock

Member: fognet
fognet Sep 27, 2016 at 16:23:05 (UTC)
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
Member: colinardo
colinardo Sep 27, 2016 updated at 17:35:18 (UTC)
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
Member: Herbrich19
Herbrich19 Nov 25, 2016 at 09:22:38 (UTC)
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