코드

[오토핫키] 구글 드라이브의 공유링크를 이미지 호스팅을 위한 다이렉트 링크로 바꿔주는 스크립트

by 이니스프리 posted Sep 25, 2018
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄
Extra Form
라이선스 MIT

안녕하세요?


얼마 전부터 드롭박스가 공유링크의 url 파라미터를 변경하더라도 이미지를 다이렉트 링크할 수 없도록 정책이 바뀌어서


다른 클라우드를 이미지 호스팅 용도로 사용할 수 없을까 고민해봤습니다.


예전에는 구글 드라이브에 다이렉트 링크를 바로 생성해주는 메뉴가 있었는데 


언제부터인지 그 기능이 사라진 것 같더군요. 


다만 공유 링크를 https://drive.google.com/uc?export=view&id=의 형태로 수정해주면 


여전히 다이렉트 링크로서 동작한다는 사실을 알게되었습니다.


그래서 다음과 같은 간단한 매크로 프로그램을 오토핫키로 작성했습니다 ^^




GUI는 위와 같이 허접합니다 ㅜㅜ


그리고 오토핫키의 SciTE4Autohotkey 에디터에서 한글이 깨지기 때문에 


부득이 GUI에 한글을 넣지 못하고 콩글리쉬로 작성된 점을 양해 부탁드립니다 ㅠㅠ


사용법은 구글 드라이브에서 공유링크를 만들고 ctrl+c 한 후 


위 프로그램을 실행시켜 빈 칸에 ctrl+v 하고 하단의 submit 버튼을 클릭하면 다이렉트 링크로 변경해줍니다. 


<img src = " "> 스크립트로 바로 만들기 위해서는 하단의 체크버튼에 체크를 해주시면 됩니다 ^^



제가 작성한 오토핫키 스크립트는 다음과 같습니다.


제 실력이 부족해서 간결한 아름다움 내지 효율성과는 거리가 멀게 작성되었네요 ㅠㅠ


정규식과 관련된 부분을 너무 허술하게 만들었는데 조금 더 보완해야 될 필요가 있는 것 같습니다.


일단 스크립트 자체는 제가 테스트해본 한도 내에서는 문제없이 잘 작동합니다. 


Gui, Font, S12 CBlue Bold, Verdana
Gui, Add, Text, x40 y18 w430 h20 , Paste Google Drive link URL in the box below.
Gui, Font, S8 CBlack Normal, Verdana
Gui, Add, Edit, x12 y70 w450 h40 va1,
Gui, Add, Edit, x12 y150 w450 h40 va2,
Gui, Add, Edit, x12 y230 w450 h40 va3,
Gui, Add, Edit, x12 y310 w450 h40 va4,
Gui, Add, Edit, x12 y390 w450 h40 va5,
Gui, Add, Edit, x12 y470 w450 h40 va6,
Gui, Add, Edit, x12 y550 w450 h40 va7,
 
Gui, Add, Text, x12 y50 w100 h20, URL #1
Gui, Add, Text, x12 y130 w100 h20, URL #2
Gui, Add, Text, x12 y210 w100 h20, URL #3
Gui, Add, Text, x12 y290 w100 h20, URL #4
Gui, Add, Text, x12 y370 w100 h20, URL #5
Gui, Add, Text, x12 y450 w100 h20, URL #6
Gui, Add, Text, x12 y530 w100 h20, URL #7
 
Gui, Add, Button, x92 y610 w110 h30 gmain, Submit
Gui, Add, Button, x353 y50 w110 h20 gb1, Copy
Gui, Add, Button, x353 y130 w110 h20 gb2, Copy
Gui, Add, Button, x353 y210 w110 h20 gb3, Copy
Gui, Add, Button, x353 y290 w110 h20 gb4, Copy
Gui, Add, Button, x353 y370 w110 h20 gb5, Copy
Gui, Add, Button, x353 y450 w110 h20 gb6, Copy
Gui, Add, Button, x353 y530 w110 h20 gb7, Copy
 
Gui, Add, CheckBox, x250 y610 w190 h30 vcheck, <img src = " "> script
Gui, Add, Text, x147 y660 w430 h20 , Made by Innisfree (2018. 09. 22.)
 
Gui, Show, w480 h700, Google Drive Image URL Modifier for image hosting
 
return
 
GuiClose:
ExitApp
 
 
 
; 이하 Submit 버튼을 클릭하면 URL을 조작해주는 부분입니다.
main:
Gui, Submit, nohide
 
 
n = 1
loop, 7
{
    length%n% := strlen(a%n%)
    if (length%n% != 0) ; 올바른 URL을 입력하였는지 정규식으로 확인합니다.
    {
        filter1 := RegExMatch(a%n%, "^https\:\/\/drive\.google\.com\/file\/.\/")
        filter2 := RegExMatch(a%n%, "^https\:\/\/drive\.google\.com\/open\?id\=")
        errorcheck%n% := filter1 + filter2
    }
 
    if (errorcheck%n% == 0 and length%n% != 0) ;잘못된 URL을 입력하면 이를 알려줍니다.
    {
        GuiControl, , a%n%, Wrong URL!
    }
 
    if (errorcheck%n% == 1) ; 입력된 URL에서 파라미터(id)를 잘라내어 result1~7 변수에 넣어줍니다.
    {
         if (filter1 == 1)
        {
            result%n% := RegExReplace(a%n%, "https\:\/\/drive\.google\.com\/file\/.\/(.*)\/.*", "https://drive.google.com/uc?export=view&id=$1")
        }
        if (filter2 == 1)
        {
            result%n% := RegExReplace(a%n%, "https\:\/\/drive\.google\.com\/open\?id\=(.*)", "https://drive.google.com/uc?export=view&id=$1")
        }
    }
 
    n := n + 1
}
 
 
n = 1
loop, 7
{
    if (check == 0 and errorcheck%n% == 1) ; 이미지 파일의 외부링크 주소를 보여줍니다.
    {
        GuiControl, , a%n%, % result%n%
    }
 
 
    if (check == 1 and errorcheck%n% == 1) ; img 태그를 보여줍니다.
    {
        prefix := "<img src = """
        suffix := """>"
        fullscript := % prefix . result%n% . suffix
        length%n% := strlen(a%n%)
        if (length%n% == 0)
        {
            fullscript := ""
        }
        GuiControl, , a%n%, %fullscript%
    }
 
    n := n + 1
}
 
return
 
 
; 이하 copy 버튼을 클릭하면 클립보드에 붙여넣는 것에 대한 부분입니다.
b1:
Gui, Submit, nohide
 
if (check == 0 and errorcheck1 == 1)
{
    clipboard = % result1
}
 
if (check == 1 and errorcheck1 == 1)
{
    clipboard = % fullscript
}
 
return
 
 
b2:
Gui, Submit, nohide
 
if (check == 0 and errorcheck2 == 1)
{
    clipboard = % result2
}
 
if (check == 1 and errorcheck2 == 1)
{
    clipboard = % fullscript
}
 
return
 
b3:
Gui, Submit, nohide
 
if (check == 0 and errorcheck3 == 1)
{
    clipboard = % result3
}
 
if (check == 1 and errorcheck3 == 1)
{
    clipboard = % fullscript
}
 
return
 
 
b4:
Gui, Submit, nohide
 
if (check == 0 and errorcheck4 == 1)
{
    clipboard = % result4
}
 
if (check == 1 and errorcheck4 == 1)
{
    clipboard = % fullscript
}
 
return
 
 
b5:
Gui, Submit, nohide
 
if (check == 0 and errorcheck5 == 1)
{
    clipboard = % result5
}
 
if (check == 1 and errorcheck5 == 1)
{
clipboard = % fullscript
}
 
return
 
 
b6:
Gui, Submit, nohide
 
if (check == 0 and errorcheck6 == 1)
{
    clipboard = % result6
}
 
if (check == 1 and errorcheck6 == 1)
{
    clipboard = % fullscript
}
 
return
 
 
b7:
Gui, Submit, nohide
 
if (check == 0 and errorcheck7 == 1)
{
    clipboard = % result7
}
 
if (check == 1 and errorcheck7 == 1)
{
    clipboard = % fullscript
}
 
return



다른 회원님들께서도 다 알고 계시겠지만 


구글 클라우드에서 공유링크는 다음과 같은 두 가지 형태가 있습니다.


두 개의 URL 형태가 조금 다르지만 위 스크립트는 둘 다 처리할 수 있도록 작성하였습니다.




그리고 오토핫키를 설치하신 분이 그다지 많이 계시지는 않을 것 같아서 컴파일한 EXE 파일을 첨부하였습니다.


gcloudimglink.exe 


오토핫키 스크립트 자체에는 문제가 없지만 컴파일한 파일을 보안프로그램에서 멀웨어로 잡아내는 경우가 흔히 있는데요.


바이러스 토탈에서 EXE 파일을 검사해보니 역시나 Cylance, Jiangmin, 맥아피-GW-에디션에서 오진을 하는군요.

(그냥 맥아피에서는 클린하다고 나왔습니다)


안랩, 어배스트, 아비라, 이셋, 카스퍼스키, 비트디펜더, 시만텍 등 메이저 보안업체의 엔진에서는 클린하다고 나왔으니 


이 부분에 대해서는 걱정 안 하셔도 될 것 같습니다.


적어도 제 컴퓨터 환경에서는 이상없이 작동하며 보안 프로그램에서도 특별히 문제가 없었습니다.



장황한 글을 읽어주셔서 감사합니다!


그럼 스포어 회원님들께서도 남은 연휴 즐겁고 뜻깊게 보내시고 감기 조심하세요 ^^



추신:

컴파일한 파일의 아이콘은 무료 아이콘 사이트인 https://www.iconfinder.com/ 에 올라와 있는 중에서 

구글 아이콘과 비교적 유사한 것으로 사용했습니다.

Iconfinder is the leading search engine and market place for vector icons in SVG, PNG, CSH and AI for...





TAG •

Articles

1 2 3 4