Python ν΄λΌμ΄μΈνΈλ₯Ό μ¬μ©νμ¬ SharePoint ν΄λμμ νμΌμ λ€μ΄λ‘λνκ³ μμ΅λλ€. κΈ°λ³Έμ μΌλ‘ μλνμ§λ§ μΌλΆ νμΌμλ μΌλ°μ μ΄μ§ μμ μ΄λ¦(νΉμ λ¬Έμ ν¬ν¨)μ΄ μκ³ λ€μ΄λ‘λκ° μλνμ§ μλ νμΌμ΄ μμ΅λλ€. μλ₯Ό λ€μ΄ μΌλ°μ μΈ νμΌ μ΄λ¦μ Sequenz%2001.mp4#t=0.033333.jpg
μ
λλ€. μΈμ½λ©λμ§ μμ νμΌ μ΄λ¦μ λ°λ‘ κ·Έ μ΄λ¦μ
λλ€.
μ΄ μ΄λ¦μΌλ‘ ν΄λΉ νμΌμ μ‘μΈμ€νλ €κ³ νλ©΄ "νμΌμ μ°Ύμ μ μμ" μ€λ₯κ° λ°μν©λλ€. κ·Έλ¬λ νμΌ μ΄λ¦μ test.jpg
λ‘ λ°κΎΈλ©΄ λ€μ΄λ‘λκ° μλν©λλ€. νμΌμ λ€μ΄λ‘λνκΈ° μν΄ κ·νμ μλ₯Ό λ°λ₯΄κ³ μμ΅λλ€.
FILE = "/Sequenz%2001.mp4#t=0.033333.jpg" # it does work with "test.jpg" here
# Some more constants for USER, PASS, URL, etc.
ctx_auth = AuthenticationContext(URL)
if ctx_auth.acquire_token_for_user(USER, PASS):
ctx = ClientContext(URL + SITE, ctx_auth)
local_file_name = "/tmp" + FILE
try:
with open(local_file_name, "wb") as local_file:
f = ctx.web.get_file_by_server_relative_url(SITE + PATH + FILE)
f.download(local_file).execute_query()
except ClientRequestException:
print("Can't fetch remote file: " + PATH + FILE)
urllib.parse.quote()
λ₯Ό ν΅ν΄ νμΌ μ΄λ¦μ μΈμ©νκ³ κ·Έκ²μ μ¬μ©νμ§λ§ λμΌν κ²°κ³Όλ₯Ό μ»μμ΅λλ€.
κ·Έλ¬ν νμΌμ μ‘μΈμ€νλ €λ©΄ 무μμ΄ νμν©λκΉ?
@haimat URLμ urlencodingν΄ λ³΄μ ¨μ΅λκΉ?
import urllib
FILE = urllib.parse.urlencode("/Sequenz%2001.mp4#t=0.033333.jpg")
μλνμ§ μμΌλ©΄ urllib.parse.quote_plus
μλνμμμ€.
@xibriz κ°μ¬νμ§λ§ λΆννλ κ·Έκ²μ λλ₯Ό μν΄ ν΄κ²°λμ§ μμ΅λλ€.
quote_plus()
λ‘ μλνμ§λ§ μ΄μ΄ μμμ΅λλ€( urlencode()
ν¨μλ ν€/κ° μμ μν κ²μ΄λ―λ‘ μ¬κΈ°μλ μ μ¬μ© μ¬λ‘κ° μλλλ€).
λꡬλ μ§ μ΄ λ¬Έμ λ₯Ό μ¬νν μ μμ΅λκΉ?
@haimat μ€λ₯λ₯Ό μ¬ννκ³ λ¬Έμ λ₯Ό ν΄κ²°ν μ μμμ§λ§ @vgrem μ΄ μꡬμ μΈ μμ μ¬νμ μ μνλ μκ΄μ
λ€μ ν΄λμ€λ νΉμ λ¬Έμλ₯Ό μ²λ¦¬ν©λλ€.
https://github.com/vgrem/Office365-REST-Python-Client/blob/4bf8ee0b65985980b50fc3b74b32fd2db34561ba/office365/runtime/odata/odata_path_parser.py#L6
νμΌ λ€μ΄λ‘λ μ½λκ° μ¬λ°λ₯Έ κ² κ°μ΅λλ€.
https://github.com/vgrem/Office365-REST-Python-Client/blob/1d7f3d90c17cdbbe9d2b27990e0fe657a2100da9/office365/sharepoint/actions/download_file.py#L30
κ·Έλ¬λ μ΄λ€ μ΄μ λ‘ getFileByServerRelativePath
λ νμΌμ λ€μ΄λ‘λν λ μ¬μ©λμ§ μμ§λ§ getFileByServerRelativeUrl
https://github.com/vgrem/Office365-REST-Python-Client/blob/1d7f3d90c17cdbbe9d2b27990e0fe657a2100da9/office365/sharepoint/webs/web.py#L202
ν΄λΉ νμΌμ λΌμΈ 202λ₯Ό ResourcePathServiceOperation("getFileByServerRelativePath", [url], self.resource_path)
odata_path_parser.pyλ₯Ό λ€μκ³Ό κ°μ΄ λ³κ²½νλ©΄ λ¬Έμ κ° ν΄κ²°λμ§λ§ μ¬λ°λ₯Έ μμ μ μλλλ€.
elif method_parameters is not None:
url += "(decodedurl="
@xibriz
κ·νμ μμ /ν΄κ²° λ°©λ²μ μ€μ λ‘ μ΄ λ¬Έμ λ₯Ό ν΄κ²°νλ―λ‘ μ§κΈ νμΌμ μ‘μΈμ€ν μ μμ΅λλ€.
κ³ λ§μμ, λΉμ μ λ΄ ν루λ₯Ό ꡬνμ΅λλ€!
@haimat νμν©λλ€ π
@vgrem λ μ΄λΈμ bugλ‘ λ³κ²½ν΄μΌ ν©λλ€.