diff --git a/docs/GamUpdates.md b/docs/GamUpdates.md index bd6dae5b..d45ba86b 100644 --- a/docs/GamUpdates.md +++ b/docs/GamUpdates.md @@ -10,6 +10,13 @@ Add the `-s` option to the end of the above commands to suppress creating the `g See [Downloads](https://github.com/taers232c/GAMADV-XTD3/wiki/Downloads) for Windows or other options, including manual installation. +### 6.64.01 + +Updated `gam print|show youtubechannels` to handle the following error: +``` +ERROR: 403: unsupportedSupervisedAccount - Access Forbidden. The authenticated user cannot access this service. +``` + ### 6.64.00 Added support for displaying users YouTube channels. diff --git a/docs/How-to-Upgrade-from-Standard-GAM.md b/docs/How-to-Upgrade-from-Standard-GAM.md index 54737d29..30153273 100644 --- a/docs/How-to-Upgrade-from-Standard-GAM.md +++ b/docs/How-to-Upgrade-from-Standard-GAM.md @@ -334,7 +334,7 @@ writes the credentials into the file oauth2.txt. admin@server:/Users/admin/bin/gamadv-xtd3$ rm -f /Users/admin/GAMConfig/oauth2.txt admin@server:/Users/admin/bin/gamadv-xtd3$ ./gam version WARNING: Config File: /Users/admin/GAMConfig/gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: /Users/admin/GAMConfig/oauth2.txt, Not Found -GAMADV-XTD3 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.10.8 64-bit final MacOS High Sierra 10.13.6 x86_64 @@ -984,7 +984,7 @@ writes the credentials into the file oauth2.txt. C:\GAMADV-XTD3>del C:\GAMConfig\oauth2.txt C:\GAMADV-XTD3>gam version WARNING: Config File: C:\GAMConfig\gam.cfg, Section: DEFAULT, Item: oauth2_txt, Value: C:\GAMConfig\oauth2.txt, Not Found -GAMADV-XTD3 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.11.5 64-bit final Windows-10-10.0.17134 AMD64 diff --git a/docs/Version-and-Help.md b/docs/Version-and-Help.md index 413de94f..ef669370 100644 --- a/docs/Version-and-Help.md +++ b/docs/Version-and-Help.md @@ -3,7 +3,7 @@ Print the current version of Gam with details ``` gam version -GAMADV-XTD3 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.11.5 64-bit final MacOS Monterey 12.6.6 x86_64 @@ -15,7 +15,7 @@ Time: 2023-06-02T21:10:00-07:00 Print the current version of Gam with details and time offset information ``` gam version timeoffset -GAMADV-XTD3 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.11.5 64-bit final MacOS Monterey 12.6.6 x86_64 @@ -27,7 +27,7 @@ Your system time differs from www.googleapis.com by less than 1 second Print the current version of Gam with extended details and SSL information ``` gam version extended -GAMADV-XTD3 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource +GAMADV-XTD3 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 - pythonsource Ross Scroggs Python 3.11.5 64-bit final MacOS Monterey 12.6.6 x86_64 @@ -64,7 +64,7 @@ MacOS High Sierra 10.13.6 x86_64 Path: /Users/Admin/bin/gamadv-xtd3 Version Check: Current: 5.35.08 - Latest: 6.64.00 + Latest: 6.64.01 echo $? 1 ``` @@ -72,7 +72,7 @@ echo $? Print the current version number without details ``` gam version simple -6.64.00 +6.64.01 ``` In Linux/MacOS you can do: ``` @@ -82,7 +82,7 @@ echo $VER Print the current version of Gam and address of this Wiki ``` gam help -GAM 6.64.00 - https://github.com/taers232c/GAMADV-XTD3 +GAM 6.64.01 - https://github.com/taers232c/GAMADV-XTD3 Ross Scroggs Python 3.11.5 64-bit final MacOS Monterey 12.6.6 x86_64 diff --git a/src/GamUpdate.txt b/src/GamUpdate.txt index d5bf63be..2a02cdae 100644 --- a/src/GamUpdate.txt +++ b/src/GamUpdate.txt @@ -2,6 +2,13 @@ Merged GAM-Team version +6.64.01 + +Updated `gam print|show youtubechannels` to handle the following error: +``` +ERROR: 403: unsupportedSupervisedAccount - Access Forbidden. The authenticated user cannot access this service. +``` + 6.64.00 Added support for displaying users YouTube channels. diff --git a/src/gam/__init__.py b/src/gam/__init__.py index 8682328d..b1fc0c7e 100755 --- a/src/gam/__init__.py +++ b/src/gam/__init__.py @@ -48449,7 +48449,7 @@ def printShowYouTubeChannel(users): myarg = getArgument() if csvPF and myarg == 'todrive': csvPF.GetTodriveParameters() - elif myarg == 'channels': + elif myarg in {'channel', 'channels'}: kwargs.pop('mine', None) kwargs['id'] = ','.join(getEntityList(Cmd.OB_YOUTUBE_CHANNEL_ID_LIST)) elif getFieldsList(myarg, YOUTUBE_CHANNEL_FIELDS_CHOICE_MAP, fieldsList): @@ -48470,9 +48470,12 @@ def printShowYouTubeChannel(users): channels = callGAPIpages(yt.channels(), 'list', 'items', throwReasons=GAPI.YOUTUBE_THROW_REASONS, fields='nextPageToken,items', **kwargs) + except GAPI.unsupportedSupervisedAccount as e: + entityActionFailedWarning([Ent.USER, user], str(e), i, count) + continue except (GAPI.serviceNotAvailable, GAPI.authError): entityServiceNotApplicableWarning(Ent.USER, user, i, count) - break + continue if not csvPF: jcount = len(channels) if not FJQC.formatJSON: diff --git a/src/gam/gamlib/glgapi.py b/src/gam/gamlib/glgapi.py index 1837e9bb..44f2e5f9 100644 --- a/src/gam/gamlib/glgapi.py +++ b/src/gam/gamlib/glgapi.py @@ -164,6 +164,7 @@ TEAMDRIVES_SHORTCUT_FILE_NOT_SUPPORTED = 'teamDrivesShortcutFileNotSupported' TIME_RANGE_EMPTY = 'timeRangeEmpty' TRANSIENT_ERROR = 'transientError' UNKNOWN_ERROR = 'unknownError' +UNSUPPORTED_SUPERVISED_ACCOUNT = 'unsupportedSupervisedAccount' UPLOAD_TOO_LARGE = 'uploadTooLarge' USER_CANNOT_CREATE_TEAMDRIVES = 'userCannotCreateTeamDrives' USER_ACCESS = 'userAccess' @@ -262,7 +263,7 @@ SHEETS_ACCESS_THROW_REASONS = DRIVE_USER_THROW_REASONS+[NOT_FOUND, PERMISSION_DE TASK_THROW_REASONS = [SERVICE_NOT_AVAILABLE, BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED] TASKLIST_THROW_REASONS = [SERVICE_NOT_AVAILABLE, BAD_REQUEST, PERMISSION_DENIED, INVALID, NOT_FOUND, ACCESS_NOT_CONFIGURED] USER_GET_THROW_REASONS = [USER_NOT_FOUND, DOMAIN_NOT_FOUND, DOMAIN_CANNOT_USE_APIS, FORBIDDEN, BAD_REQUEST, SYSTEM_ERROR] -YOUTUBE_THROW_REASONS = [SERVICE_NOT_AVAILABLE, AUTH_ERROR] +YOUTUBE_THROW_REASONS = [SERVICE_NOT_AVAILABLE, AUTH_ERROR, UNSUPPORTED_SUPERVISED_ACCOUNT] REASON_MESSAGE_MAP = { ABORTED: [ @@ -613,6 +614,8 @@ class transientError(Exception): pass class unknownError(Exception): pass +class unsupportedSupervisedAccount(Exception): + pass class uploadTooLarge(Exception): pass class userCannotCreateTeamDrives(Exception): @@ -766,6 +769,7 @@ REASON_EXCEPTION_MAP = { TIME_RANGE_EMPTY: timeRangeEmpty, TRANSIENT_ERROR: transientError, UNKNOWN_ERROR: unknownError, + UNSUPPORTED_SUPERVISED_ACCOUNT: unsupportedSupervisedAccount, UPLOAD_TOO_LARGE: uploadTooLarge, USER_CANNOT_CREATE_TEAMDRIVES: userCannotCreateTeamDrives, USER_ACCESS: userAccess,