-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathframescrap.py
1 lines (1 loc) · 4.9 KB
/
framescrap.py
1
aW1wb3J0IHJlcXVlc3RzLCBnZXRwcm94eQpmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU291cApmcm9tIGJhc2U2NCBpbXBvcnQgYjY0ZGVjb2RlIGFzIG9wcwoKcHJveD17CiAgICAjICdodHRwJzonaHR0cDovLycrZ2V0cHJveHkuZ2V0cHJveHkoJ2h0dHAnKQp9CgpkZWYgZGVjKHN0cmluZ2EpOgogICAgcmV0dXJuIG9wcyhzdHJpbmdhKS5kZWNvZGUoInV0Zi04IikKCmRlZiBhbHRhZGVmZGFuY2UodXJsKToKICAgIGxpbmtzPSBbXQogICAgcmVxPXJlcXVlc3RzLmdldCh1cmwscHJveGllcz1wcm94KS50ZXh0CiAgICBzb3VwID0gQmVhdXRpZnVsU291cChyZXEsICdodG1sLnBhcnNlcicpCiAgICBsaW5rPXNvdXAuZmluZCgnaWZyYW1lJykKICAgIGlmIGxpbmsgaXMgTm9uZTogcmV0dXJuIFtdCiAgICBsaW5rcy5hcHBlbmQobGluay5nZXQoJ3NyYycpKQogICAgcmV0dXJuIGxpbmtzCgpkZWYgZXVyb3N0cmNhbXAodXJsKToKICAgICMjbm9uIGhhIGlmcmFtZQogICAgcmV0dXJuIFt1cmxdCgpkZWYgY2IwMWRpcih1cmwpOgogICAgbGlua3M9IFtdCiAgICByZXE9cmVxdWVzdHMuZ2V0KHVybCxwcm94aWVzPXByb3gpLnRleHQKICAgIHNvdXAgPSBCZWF1dGlmdWxTb3VwKHJlcSwgJ2h0bWwucGFyc2VyJykKICAgIHRlbXA9c291cC5maW5kQWxsKCJkaXYiLGNsYXNzXz0idGFicy1jYXRjaC1hbGwiKQogICAgaWYgdGVtcCBpcyBOb25lOiByZXR1cm4gW10KICAgIGZvciBpIGluIHRlbXA6CiAgICAgICAgaWYgaSBpcyBOb25lOiByZXR1cm4gW10KICAgICAgICBpPWkuZ2V0KCdkYXRhLXNyYycpCiAgICAgICAgaWYgaSBpcyBOb25lOiByZXR1cm4gW10KICAgICAgICBsaW5rcy5hcHBlbmQoaSkKICAgIHJldHVybiBsaW5rcwoKZGVmIGd1YXJkYXNlcmllKHVybCk6CiAgICAjZ2nDoCBlbWJlZGRlZAogICAgcmV0dXJuIFt1cmxdCgpkZWYgYWx0YWRlZm5hbWUodXJsKToKICAgICNwbGF5ZXItY29udGFpbmVyLXdyYXAgZ3VhcmRhaGQtcGxheWVyCiAgICBsaW5rcz0gW10KICAgIHJlcT1yZXF1ZXN0cy5nZXQodXJsLHByb3hpZXM9cHJveCkudGV4dAogICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocmVxLCAnaHRtbC5wYXJzZXInKQogICAgdHJ5OgogICAgICAgIGxpbms9c291cC5maW5kKCdkaXYnLCBpZD0nbWlyckZyb250JykKICAgICAgICBsaW5rPWxpbmsuZmluZEFsbCgnYScpCiAgICAgICAgZm9yIGkgaW4gbGluazoKICAgICAgICAgICAgdG1wPWkuZ2V0KCdkYXRhLXRhcmdldCcpCiAgICAgICAgICAgIGlmIG5vdCAnaHR0cCcgaW4gdG1wOiB0bXA9J2h0dHBzOicrdG1wCiAgICAgICAgICAgIGlmIG5vdCAnZmFrZTIvaW5kZXguaHRtbCcgaW4gdG1wOgogICAgICAgICAgICAgICAgbGlua3MuYXBwZW5kKHRtcCkKICAgIGV4Y2VwdDogcmV0dXJuIFtdCiAgICByZXR1cm4gbGlua3MKCmRlZiBjaW5lYmxvZ3JlZW4odXJsKToKICAgICM8dWwgY2xhc3M9Imxpc3QtaW5saW5lIGxpc3QtaW5saW5lLXNtIj4KICAgIGxpbmtzPSBbXQogICAgcmVxPXJlcXVlc3RzLmdldCh1cmwscHJveGllcz1wcm94KS50ZXh0CiAgICBzb3VwID0gQmVhdXRpZnVsU291cChyZXEsICdodG1sLnBhcnNlcicpCiAgICBsaW5rPXNvdXAuZmluZCgndWwnLGNsYXNzXz0ibGlzdC1pbmxpbmUgbGlzdC1pbmxpbmUtc20iKQogICAgaWYgbGluayBpcyBOb25lOiByZXR1cm4gW10KICAgIGxpbms9bGluay5maW5kQWxsKCdhJykKICAgIGlmIGxpbmsgaXMgTm9uZTogcmV0dXJuIFtdCiAgICBmb3IgaSBpbiBsaW5rOgogICAgICAgIGk9aS5nZXQoJ2RhdGEtbGluaycpCiAgICAgICAgaWYgaSBpcyBOb25lOiByZXR1cm4gW10KICAgICAgICBpZiBub3QgJ2h0dHAnIGluIGk6CiAgICAgICAgICAgIGk9J2h0dHBzOicraQogICAgICAgIGxpbmtzLmFwcGVuZChpKQogICAgcmV0dXJuIGxpbmtzCgpkZWYgdGFudGljb29sKHVybCk6CiAgICBsaW5rcz0gW10KICAgIHJlcT1yZXF1ZXN0cy5nZXQodXJsLHByb3hpZXM9cHJveCkudGV4dAogICAgc291cCA9IEJlYXV0aWZ1bFNvdXAocmVxLCAnaHRtbC5wYXJzZXInKQogICAgbGluaz1zb3VwLmZpbmQoJ2lmcmFtZScpCiAgICBpZiBsaW5rIGlzIE5vbmU6IHJldHVybiBbXQogICAgZGE9bGluay5nZXQoJ3NyYycpCiAgICBpZiBkYSBpcyBOb25lOiByZXR1cm4gW10KICAgIGxpbmtzLmFwcGVuZChkYSkKICAgIHJldHVybiBsaW5rcwoKZGVmIHBpcmF0ZXNjKHVybCk6CiAgICBpZiAnLXNlcmllLWEvJyBpbiB1cmw6IHJldHVybiBbdXJsXQogICAgZWxzZToKICAgICAgICAjZW1iZWQtcmVzcG9uc2l2ZS1pdGVtCiAgICAgICAgbGlua3M9IFtdCiAgICAgICAgbGlua3MuYXBwZW5kKHVybCkKICAgICAgICByZXE9cmVxdWVzdHMuZ2V0KHVybCxwcm94aWVzPXByb3gpLnRleHQKICAgICAgICBzb3VwID0gQmVhdXRpZnVsU291cChyZXEsICdodG1sLnBhcnNlcicpCiAgICAgICAgbGluaz1zb3VwLmZpbmRBbGwoJ2lmcmFtZScsY2xhc3NfPSJlbWJlZC1yZXNwb25zaXZlLWl0ZW0iKQogICAgICAgIGlmIGxpbmsgaXMgTm9uZTogcmV0dXJuIFtdCiAgICAgICAgZm9yIGkgaW4gbGluazoKICAgICAgICAgICAgaT1pLmdldCgnc3JjJykKICAgICAgICAgICAgaWYgbm90ICd5b3V0dWJlLmNvbScgaW4gaTogbGlua3MuYXBwZW5kKGkpCiAgICAgICAgcmV0dXJuIGxpbmtzCgpkZWYgZHJlYW1zdWIodXJsKToKICAgICMjbm9uIGhhIGlmcmFtZQogICAgcmV0dXJuIFt1cmxdCgpkZWYgc2ZyYW1lKHVybCk6CiAgICBhPVtdCiAgICBwcmludCgiRnJhbWU6IFByb2Nlc3NpbmcgIit1cmwpCiAgICBpZiAnYWx0YWRlZmluaXppb25lLnJlcG9ydCcgaW4gdXJsOgogICAgICAgIGE9IGFsdGFkZWZkYW5jZSh1cmwpCiAgICBlbGlmICdldXJvc3RyZWFtaW5nJyBpbiB1cmw6CiAgICAgICAgYT0gZXVyb3N0cmNhbXAodXJsKQogICAgZWxpZiAnY2IwMS55b2dhJyBpbiB1cmw6CiAgICAgICAgYT0gY2IwMWRpcih1cmwpCiAgICBlbGlmICdndWFyZGFzZXJpZScgaW4gdXJsOgogICAgICAgIGE9IGd1YXJkYXNlcmllKHVybCkKICAgIGVsaWYgJ2FsdGFkZWZpbml6aW9uZS5uYW1lJyBpbiB1cmw6CiAgICAgICAgYT0gYWx0YWRlZm5hbWUodXJsKQogICAgZWxpZiAnY2luZWJsb2cnIGluIHVybDoKICAgICAgICBhPSBjaW5lYmxvZ3JlZW4odXJsKQogICAgZWxpZiAndGFudGlmaWxtJyBpbiB1cmw6CiAgICAgICAgYT0gdGFudGljb29sKHVybCkKICAgIGVsaWYgJ3BpcmF0ZXN0cmVhbWluZycgaW4gdXJsOgogICAgICAgIGE9IHBpcmF0ZXNjKHVybCkKICAgIGVsaWYgJ2RyZWFtc3ViJyBpbiB1cmw6CiAgICAgICAgYT0gZHJlYW1zdWIodXJsKQogICAgZWxzZTogCiAgICAgICAgcHJpbnQoIk5vbiBzdXBwb3J0YXRvIikKICAgICAgICByZXR1cm4gW10KICAgIHByaW50KGEpCiAgICByZXR1cm4gYQoKZGVmIHNmcmFtZXN0cmluZyh1cmwpOgogICAgcmVzPScnCiAgICBsaXN0PXNmcmFtZSh1cmwpCiAgICBmb3IgaSBpbiBsaXN0OgogICAgICAgIGlmIG5vdCAnaHR0cHM6L2RlZmluaXppb25lL2luZGV4Lmh0bWwnIGluIGk6IHJlcys9aSsnXG4nCiAgICByZXR1cm4gcmVzCgpkZWYgbWFpbigpOiAjI3VzYWdlCiAgICAjdXJsPWlucHV0KCkKICAgIHVybD0iaHR0cHM6Ly9kcmVhbXN1Yi5zdHJlYW0vc2VhcmNoLz9xPWhlbGxib3kiCiAgICBmcmFtZXVybD1zZnJhbWUodXJsKQogICAgZm9yIGkgaW4gZnJhbWV1cmw6CiAgICAgICAgcHJpbnQoaSkKICAgICNwcmludChmcmFtZXVybCkKICAgIAppZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgbWFpbigp