크롬 확장에서 파이썬으로 변수를 보내는 데 도움이 필요합니다.

Gess1t

사용자가 게임 내 링크를 열면 자동으로 "지도"를 다운로드하는 작은 스크립트를 만들고 싶었습니다. 링크가 크롬에서 열리면 확장 프로그램은 현재 URL을 가져 와서 파이썬으로 보낸 다음 (지금 당장 멈춰있는 곳입니다) 성공하면 탭을 닫습니다 (파이썬 스크립트가 실행되지 않으면 실패하기 때문에? ). 파이썬에서 한 번 나는 문제의지도를 다운로드하고 노래 폴더에 추가하여 그가 할 유일한 일은 F5를 누르는 것입니다

지금은 다음과 같은 코드가 있습니다.

Manifest.json :

{
    "name": "Osu!AltDownload",
    "version": "1.0",
    "description": "A requirement to make osu!AltDownload work",
    "permissions": ["tabs","http://localhost:5000/"],
    "background": {
        "scripts": ["Osu!AltDownload.js"],
        "persistant": false
    },
    "manifest_version": 2
}

Osu! AltDownload.js

chrome.tabs.onUpdated.addListener( function (tabId, changeInfo, tab) {
    if (changeInfo.status == 'complete') {
        chrome.tabs.query({active: true, currentWindow: true}, tabs => {
        let url = tabs[0].url;
        });
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "http://localhost:5000/",true);
        xhr.send(url); 
    }
})

링크를 수신하고 "지도"를 다운로드하는 스크립트 :

import browser_cookie3
import requests
from bs4 import BeautifulSoup as BS
import re
import os
def maplink(osupath):
    link = link #obtain link from POST ?
    if link.split("/",4[:4]) == ['https:', '', 'osu.ppy.sh', 'beatmapsets']:
        Download_map(osupath, link.split("#osu")[0])

def Download_map(osupath, link):
    cj = browser_cookie3.load()
    print("Downloading", link)
    headers = {"referer": link}
    with requests.get(link) as r:
        t = BS(r.text, 'html.parser').title.text.split("·")[0]
    with requests.get(link+"/download", stream=True, cookies=cj, headers=headers) as r:
        if r.status_code == 200:
        try:
            id = re.sub("[^0-9]", "", link)
            with open(os.path.abspath(osupath+"/Songs/"+id+" "+t+".osz"), "wb") as otp:
                otp.write(r.content)
        except:
            print("You either aren't connected on osu!'s website or you're limited by the API, in which case you now have to wait 1h and then try again.")

내 확장에 다음 코드 줄을 사용했다는 것을 추가하고 싶습니다.

var xhr = new XMLHttpRequest();
xhr.open("POST", "http://localhost:5000/",true);
xhr.send(url);

그들은 내 Google 검색 중 하나에서 왔지만 파이썬에서 POST 요청을 처리하는 방법을 이해하지 못하며 올바른 방법으로 가고 있는지조차 모릅니다.

어떤 사람들은 내가이 주제에 대해 많은 연구를하지 않았다고 말할지 모르지만 약 50 개의 크롬 탭 중에서이 주제에 대한 올바른 접근 방식에 대한 아이디어를 실제로 찾을 수있는 것은 없습니다.

쉬운

웹 서버를 실행해야 http requests

Flask이것을 위해 사용할 수 있습니다 .

from flask import Flask, request

app = Flask(__name__)

@app.route('/', methods=['GET', 'POST'])
def index():
    if request.method == 'POST':
        #print(request.form)
        print(request.data)
    return "OK"

if __name__ == '__main__':
    app.run(port=5000)    

 

보내려면 대신 url사용 하고GETPOST

 http://localhost:5000/?data=your_url

어디는 your_url당신이 무엇을 얻을 것입니다 tab[0].url.

xhr.open("GET", "http://localhost:5000/?data=" + url, true);
xhr.send();  // or maybe xhr.send(null);

그리고 당신은 그것을 얻을 수 있습니다

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    print(request.args.get('data'))
    return "OK"
        
if __name__ == '__main__':
    app.run(port=5000)        

편집하다:

방문시 Flask직접 사용 하는 테스트 예JavaScripthttp://localhost:5000/test

from flask import Flask, request

app = Flask(__name__)

@app.route('/')
def index():
    print(request.args.get('data'))
    return "OK"

@app.route('/test/')
def test():
    return """
<script>
    var url = "https://stackoverflow.com/questions/65867136/need-help-about-sending-variable-from-chrome-extension-to-python/";
    var xhr = new XMLHttpRequest();
    xhr.open("GET", "http://localhost:5000/?data=" + url, true);
    xhr.send(); 
</script>
"""            

if __name__ == '__main__':
    app.run(port=5000)        

결국 나는 그것을 테스트 할 수 있습니다 bookmarklet

javascript:{window.location='http://localhost:5000/?data='+encodeURIComponent(window.location.href)}

즐겨 찾기의 북마크에 URL로 넣었지만이 페이지는

또는 현대 fetch()(old 대신 XMLHttpRequest())를 사용하고 페이지를 다시로드하지 않습니다.

javascript:{fetch('http://localhost:5000/?data='+encodeURIComponent(window.location.href))}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

파이썬으로 쿼리를 보내는 데 도움이 필요합니다.

분류에서Dev

저장 프로 시저 내에서 SQL 스크립트를 실행하는 데 도움이 필요합니다.

분류에서Dev

HTML에서 변수를 제출하는 데 도움이 필요합니다.

분류에서Dev

일반적으로 파이썬과 프로그래밍에 익숙하지 않고 변수 자체를 편집하는 데 도움이 필요합니다.

분류에서Dev

스크립트 사용 시간 / 날짜를 .txt 파일로 보내는 데 도움이 필요합니다.

분류에서Dev

Xcode에서 서버로 위치 데이터를 보내는 데 도움이 필요합니다.

분류에서Dev

파이썬-파이썬에서 awk 및 sed를 호출하는 데 도움이 필요합니다.

분류에서Dev

epoch 시간에서 마이크로 초를 제거하는 데 도움이 필요합니다.

분류에서Dev

내 파이썬 코드에 제어 루프를 추가하는 데 도움이 필요합니다.

분류에서Dev

내 파이썬 코드에 제어 루프를 추가하는 데 도움이 필요합니다.

분류에서Dev

자바에서 카산드라 스파크를 설정하는 데 도움이 필요합니다.

분류에서Dev

C에서 이진수를 문자열로 변환하는 데 도움이 필요합니다.

분류에서Dev

페이지에서 요소를 찾는 데 도움이 필요합니다.

분류에서Dev

PHP에서 데이터를 표시하는 데 도움이 필요합니다.

분류에서Dev

Firebase에서 데이터를 검색하는 데 도움이 필요합니다.

분류에서Dev

수업에서 Connections를 연결하는 데 도움이 필요합니다.

분류에서Dev

스칼라를 통해 아파치 스파크에서 rdd의 값을 기준으로 그룹화하는 데 도움이 필요합니다.

분류에서Dev

내 앱에서 내 데이터베이스 ListView를 새로 고치는 데 도움이 필요합니다.

분류에서Dev

파이썬에서 정수 나누기에서 목록을 분할하는 데 도움이 필요합니다.

분류에서Dev

Python 3.4.3에서 정수를 단어로 변경하는 데 도움이 필요합니다.

분류에서Dev

이 bash 스크립트를 이해하는 데 도움이 필요합니다.

분류에서Dev

SquareSpace에서 DOM 요소를 참조하는 데 도움이 필요합니다.

분류에서Dev

파이썬으로 파일을 읽는 데 도움이 필요합니다

분류에서Dev

CPU 주파수를 얻는 데 도움이 필요합니다.

분류에서Dev

Q : 네트워크에 위기를 전파하는 데 도움이 필요합니다.

분류에서Dev

스크롤로 다른 div 내부의 상단 막대를 수정하는 데 도움이 필요합니다.

분류에서Dev

Java에서 JSON 형식의 API 응답에서 변수를 정의하는 데 도움이 필요합니다.

분류에서Dev

유닉스 쉘 스크립팅에서 작은 오류를 해결하는 데 도움이 필요합니다.

분류에서Dev

ViewController간에 데이터를 전송하는 데 도움이 필요합니다.

Related 관련 기사

  1. 1

    파이썬으로 쿼리를 보내는 데 도움이 필요합니다.

  2. 2

    저장 프로 시저 내에서 SQL 스크립트를 실행하는 데 도움이 필요합니다.

  3. 3

    HTML에서 변수를 제출하는 데 도움이 필요합니다.

  4. 4

    일반적으로 파이썬과 프로그래밍에 익숙하지 않고 변수 자체를 편집하는 데 도움이 필요합니다.

  5. 5

    스크립트 사용 시간 / 날짜를 .txt 파일로 보내는 데 도움이 필요합니다.

  6. 6

    Xcode에서 서버로 위치 데이터를 보내는 데 도움이 필요합니다.

  7. 7

    파이썬-파이썬에서 awk 및 sed를 호출하는 데 도움이 필요합니다.

  8. 8

    epoch 시간에서 마이크로 초를 제거하는 데 도움이 필요합니다.

  9. 9

    내 파이썬 코드에 제어 루프를 추가하는 데 도움이 필요합니다.

  10. 10

    내 파이썬 코드에 제어 루프를 추가하는 데 도움이 필요합니다.

  11. 11

    자바에서 카산드라 스파크를 설정하는 데 도움이 필요합니다.

  12. 12

    C에서 이진수를 문자열로 변환하는 데 도움이 필요합니다.

  13. 13

    페이지에서 요소를 찾는 데 도움이 필요합니다.

  14. 14

    PHP에서 데이터를 표시하는 데 도움이 필요합니다.

  15. 15

    Firebase에서 데이터를 검색하는 데 도움이 필요합니다.

  16. 16

    수업에서 Connections를 연결하는 데 도움이 필요합니다.

  17. 17

    스칼라를 통해 아파치 스파크에서 rdd의 값을 기준으로 그룹화하는 데 도움이 필요합니다.

  18. 18

    내 앱에서 내 데이터베이스 ListView를 새로 고치는 데 도움이 필요합니다.

  19. 19

    파이썬에서 정수 나누기에서 목록을 분할하는 데 도움이 필요합니다.

  20. 20

    Python 3.4.3에서 정수를 단어로 변경하는 데 도움이 필요합니다.

  21. 21

    이 bash 스크립트를 이해하는 데 도움이 필요합니다.

  22. 22

    SquareSpace에서 DOM 요소를 참조하는 데 도움이 필요합니다.

  23. 23

    파이썬으로 파일을 읽는 데 도움이 필요합니다

  24. 24

    CPU 주파수를 얻는 데 도움이 필요합니다.

  25. 25

    Q : 네트워크에 위기를 전파하는 데 도움이 필요합니다.

  26. 26

    스크롤로 다른 div 내부의 상단 막대를 수정하는 데 도움이 필요합니다.

  27. 27

    Java에서 JSON 형식의 API 응답에서 변수를 정의하는 데 도움이 필요합니다.

  28. 28

    유닉스 쉘 스크립팅에서 작은 오류를 해결하는 데 도움이 필요합니다.

  29. 29

    ViewController간에 데이터를 전송하는 데 도움이 필요합니다.

뜨겁다태그

보관