mdhiggins / sickbeard_mp4_automator

Automatically convert video files to a standardized format with metadata tagging to create a beautiful and uniform media library
MIT License
1.52k stars 201 forks source link

Generic Permissions #1700

Closed JasonMeudt closed 8 months ago

JasonMeudt commented 8 months ago

I am seeing a (permissions) error on a new install, so I know it is mine to find... Having said that, I did notice that there is a reference in mediaprocessor to chmod the file to 0644 when my own .ini file references a 0775 permissions set.

Is this hardcode by design?

2024-02-04 21:23:01 - resources.mediaprocessor - INFO - ======================
2024-02-04 21:39:38 - resources.mediaprocessor - INFO - /media/sg1/Videos/TV/MediaFile [WEBDL-1080p] [5.1] [BitDepth 8].mkv created.
2024-02-04 21:39:38 - resources.mediaprocessor - ERROR - Unable to set new file permissions.
Traceback (most recent call last):
  File "/media/data/git-clone/sickbeard_mp4_automator1/resources/mediaprocessor.py", line 1976, in setPermissions
    os.chmod(path, self.settings.permissions.get('chmod', int('0664', 8)))
PermissionError: [Errno 1] Operation not permitted: '/media/sg1/Videos/TV/MediaFile [WEBDL-1080p] [5.1] [BitDepth 8].mkv'
2024-02-04 21:39:38 - resources.mediaprocessor - INFO - Tagging /media/sg1/Videos/TV/MediaFile [WEBDL-1080p] [5.1] [BitDepth 8].mkv with TMDB ID 46648.
2024-02-04 21:39:38 - resources.metadata - INFO - Tagging file: /media/sg1/Videos/TV/MediaFile [WEBDL-1080p] [5.1] [BitDepth 8].mkv.
2024-02-04 21:39:46 - resources.metadata - INFO - Tags written successfully using FFMPEG fallback method.
2024-02-04 21:39:46 - resources.mediaprocessor - ERROR - Unable to set new file permissions.
Traceback (most recent call last):
  File "/media/data/git-clone/sickbeard_mp4_automator1/resources/mediaprocessor.py", line 1976, in setPermissions
    os.chmod(path, self.settings.permissions.get('chmod', int('0664', 8)))
PermissionError: [Errno 1] Operation not permitted: '/media/sg1/Videos/TV/MediaFile [WEBDL-1080p] [5.1] [BitDepth 8].mkv'
2024-02-04 21:39:46 - SonarrPostProcess - ERROR - Sonarr monitor status update failed.
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/dist-packages/requests/models.py", line 971, in json
    return complexjson.loads(self.text, **kwargs)
  File "/usr/lib/python3.10/json/__init__.py", line 346, in loads
    return _default_decoder.decode(s)
  File "/usr/lib/python3.10/json/decoder.py", line 337, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "/usr/lib/python3.10/json/decoder.py", line 355, in raw_decode
    raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/media/data/git-clone/sickbeard_mp4_automator1/postSonarr.py", line 260, in <module>
    inProcess = settings.Sonarr['in-progress-check'] and downloadedEpisodesScanInProgress(baseURL, headers, episodefile_sourcefolder, log)
  File "/media/data/git-clone/sickbeard_mp4_automator1/postSonarr.py", line 76, in downloadedEpisodesScanInProgress
    commands = r.json()
  File "/usr/local/lib/python3.10/dist-packages/requests/models.py", line 975, in json
    raise RequestsJSONDecodeError(e.msg, e.doc, e.pos)
requests.exceptions.JSONDecodeError: Expecting value: line 1 column 1 (char 0)
    # Generic permission setter
    def setPermissions(self, path):
        try:
            if os.path.exists(path):
                os.chmod(path, self.settings.permissions.get('chmod', int('0664', 8)))
                if os.name != 'nt':
                    os.chown(path, self.settings.permissions.get('uid', -1), self.settings.permissions.get('gid', -1))
            else:
                self.log.debug("File %s does not exist, unable to set permissions." % path)
        except:
            self.log.exception("Unable to set new file permissions.")
mdhiggins commented 8 months ago

the 0664 is a fallback value if the permissions.get call doesn't return anything

https://python-reference.readthedocs.io/en/latest/docs/dict/get.html