bertrandmartel / tableau-scraping

Tableau scraper python library. R and Python scripts to scrape data from Tableau viz
MIT License
126 stars 20 forks source link

Ability to add tupleIds to tooltip API #34

Closed bertrandmartel closed 2 years ago

bertrandmartel commented 2 years ago

From this usecase https://replit.com/@bertrandmartel/ScrapeTableauTooltip, tupleIds can be injected along with the tooltip API.

This issue is about retrieving all the possible tupleIds if possible and pass the tupleIds property in the request if specified

bertrandmartel commented 2 years ago

This would need to add select-region-server API and input a specific coordinate to get the tupleIds. This would already gives the data back which makes the tooltip call useless. The coordinate are difficult to guess since it depends on the value of the specific zone (for the worksheet):

def selectRegion(scraper, worksheetName):
    delayExecution(scraper)
    payload = (
        ("worksheet", (None, worksheetName)),
        ("dashboard", (None, scraper.dashboard)),
        ("vizRegionRect", (None, json.dumps(
            {"x": 548, "y": 138, "w": 0, "h": 0, "r": "viz"}))),
        ("mouseAction", (None, "simple")),
        ("zoneSelectionType", (None, "replace"))
    )
    print(payload)
    r = scraper.session.post(
        f'{scraper.host}{scraper.tableauData["vizql_root"]}/sessions/{scraper.tableauData["sessionid"]}/commands/tabsrv/select-region-no-return-server',
        files=payload,
        verify=scraper.verify
    )
    scraper.lastActionTime = time.time()
    try:
        return r.json()
    except (ValueError, JSONDecodeError):
        raise APIResponseException(message=r.text)

Closing this issue for now since it required to iterate all possible coordinate to make it work which is a rare usecase, maybe for some server rendered dashboard