[Problem]

Before filling the bug-report:

[x] 1. Make sure you added --api key to the webui-user.bat
[x] 2. Make sure you launched Automatic1111 with webui-user.bat
[ ] 3. Check if Houdini is not blocked in your firewall
[x] 4. Make sure you're using the right default URL in config.ini
[x] 5. Check if the Automatic1111 is working in browser
[x] 6. Try to find your error in this document: https://github.com/stassius/StableHoudini/wiki/Common-Errors

Describe the bug
Hello, i alrady do anything as i know to can to do, Houdini just cannot use the API
keep showing: Server returned: 500
i belive that i got some untend may small misstake
i already tried for a few days like force reinstall or changing some parts version of.
Screenshots

Desktop (please complete the following information):

OS: Win10 with Nvida(all in latest)
latest Automatic1111
latest Houdini

`API error: GET: http://<IP_ADDRESS>:7860/sdapi/v1/options {'error': 'ValidationError', 'detail': '', 'body': '', 'errors': '1 validation error for Options\nresponse -> sd_model_checkpoint\n  value is not None (type=type_error.not_none)'}
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 98, in receive
return self.receive_nowait()
^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait
raise WouldBlock
anyio.WouldBlock
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 78, in call_next
message = await recv_stream.receive()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 118, in receive
raise EndOfStream
anyio.EndOfStream
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\modules\api\api.py", line 152, in exception_handling
return await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 84, in call_next
raise app_exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 70, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 108, in call
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\modules\api\api.py", line 117, in log_and_time
res: Response = await call_next(req)
^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 84, in call_next
raise app_exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 70, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\cors.py", line 84, in call
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\gzip.py", line 24, in call
await responder(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\gzip.py", line 44, in call
await self.app(scope, receive, self.send_with_gzip)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in call
raise exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 718, in call
await route.handle(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\routing.py", line 255, in app
content = await serialize_response(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\routing.py", line 141, in serialize_response
raise ValidationError(errors, field.type_)
pydantic.error_wrappers.ValidationError: 1 validation error for Options
response -> sd_model_checkpoint
value is not None (type=type_error.not_none)
API error: GET: http://<IP_ADDRESS>:7860/sdapi/v1/options {'error': 'ValidationError', 'detail': '', 'body': '', 'errors': '1 validation error for Options\nresponse -> sd_model_checkpoint\n  value is not None (type=type_error.not_none)'}
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 98, in receive
return self.receive_nowait()
^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 93, in receive_nowait
raise WouldBlock
anyio.WouldBlock
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 78, in call_next
message = await recv_stream.receive()
^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\anyio\streams\memory.py", line 118, in receive
raise EndOfStream
anyio.EndOfStream
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "D:\SD\stable-diffusion-webui\modules\api\api.py", line 152, in exception_handling
return await call_next(request)
^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 84, in call_next
raise app_exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 70, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 108, in call
response = await self.dispatch_func(request, call_next)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\modules\api\api.py", line 117, in log_and_time
res: Response = await call_next(req)
^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 84, in call_next
raise app_exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\base.py", line 70, in coro
await self.app(scope, receive_or_disconnect, send_no_error)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\cors.py", line 84, in call
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\gzip.py", line 24, in call
await responder(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\gzip.py", line 44, in call
await self.app(scope, receive, self.send_with_gzip)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\exceptions.py", line 79, in call
raise exc
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\middleware\exceptions.py", line 68, in call
await self.app(scope, receive, sender)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 21, in call
raise e
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\middleware\asyncexitstack.py", line 18, in call
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 718, in call
await route.handle(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 276, in handle
await self.app(scope, receive, send)
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\starlette\routing.py", line 66, in app
response = await func(request)
^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\routing.py", line 255, in app
content = await serialize_response(
^^^^^^^^^^^^^^^^^^^^^^^^^
File "D:\SD\stable-diffusion-webui\venv\Lib\site-packages\fastapi\routing.py", line 141, in serialize_response
raise ValidationError(errors, field.type_)
pydantic.error_wrappers.ValidationError: 1 validation error for Options
response -> sd_model_checkpoint
value is not None (type=type_error.not_none)`

@FONGKA2 Hello! When you put down SD Switch Model node, do you see the list of available models in the dropdown menu? If so, try to choose one of them and cook the node.

@FONGKA2 Hello! When you put down SD Switch Model node, do you see the list of available models in the dropdown menu? If so, try to choose one of them and cook the node.

Yes, i saw the models in the list menu, the error screenshot that's happen after i select a StableHoudini models, that's cause the 500 error and API error

@FONGKA2 Try other nodes, like SD Dream, SD Preprocessor, SD Upscale. Do they work?

no, every node fail when i click them and return error500+api error
「stassius @.***>」在 2023年6月26日 週一，下午4:13 寫道：

@FONGKA2 https://github.com/FONGKA2 Try other nodes, like SD Dream, SD
Preprocessor, SD Upscale. Do they work?
—
Reply to this email directly, view it on GitHub
https://github.com/stassius/StableHoudini/issues/38#issuecomment-1606943389,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAKOYQWQPLHHCPFQJNPONB3XNFACNANCNFSM6AAAAAAZSOILV4
.
You are receiving this because you were mentioned.Message ID:
@.***>

I've found a couple of mentions of the same error. One was from a person who got this error while using Automatic1111 in the cloud with https:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9013
Another one was from a person who uses a Chinese codepage:
https://github.com/AUTOMATIC1111/stable-diffusion-webui/issues/9027#issuecomment-1484926437
None of them were resolved, but you can try to contact these people and ask if they found the solution.
If you have installed A1111 locally, I think it worth opening an issue in Automatic1111 repo, because it looks like an A1111 API bug to me. Maybe it has something to do with codepage, maybe something else.

@gfwfg Hello! What is your OS and codepage?

@gfwfg Hello! What is your OS and codepage?

os : linux-x86-64
with api server


Bump material from 1.2.1 to 1.3.0

Bumps material from 1.2.1 to 1.3.0.

Release notes
Commits

Signed-off-by: dependabot-preview[bot]<EMAIL_ADDRESS>

Untested - do not merge

Tested on Pixel 3 XL API 30 AOSP AVD. Works fine.


Configured Names for sub-switches are missing

Describe The Bug:
It seems that this plugin is having an issue like most other Homebridge plugins with subswitches under single device being named the same way in homekit. For example I have 4 LG Airconditioners and i see  5 switches under it and all have the same name, so it's pretty hard to know what they actually do.
Similar problems had plugins from HomeConnect and Unifi Protect and you can read about it here:

https://github.com/hjdhjd/homebridge-unifi-protect/issues/931
https://github.com/thoukydides/homebridge-homeconnect/issues/116

You can fix it with the information provided in those issues.
To Reproduce:
Just open homekit and go to any device.
Expected behavior:
It should show the name of the device + function it's supposed to turn on/off
Plugin Config:
{
            "country": "PL",
            "language": "pl-PL",
            "auth_mode": "token",
            "platform": "LGThinQ",
            "refresh_token": "98bd",
            "username": "prz",
            "password": "Z",
            "devices": [
                {
                    "id": "37261b78-",
                    "name": "Klimatyzacja Pokoj Lewy",
                    "type": "AC",
                    "ac_air_quality": false,
                    "ac_mode": "BOTH",
                    "ac_swing_mode": "BOTH",
                    "ac_buttons": [
                        {
                            "name": "Auto mode",
                            "op_mode": 6
                        },
                        {
                            "name": "Dry mode",
                            "op_mode": 1
                        },
                        {
                            "name": "Fan mode",
                            "op_mode": 2
                        },
                        {
                            "name": "Air clean",
                            "op_mode": 5
                        }
                    ]
                },
                {
                    "id": "8d00f0",
                    "name": "Klimatyzacja Pokoj Prawy",
                    "type": "AC",
                    "ac_air_quality": false,
                    "ac_mode": "BOTH",
                    "ac_swing_mode": "BOTH",
                    "ac_buttons": [
                        {
                            "name": "Auto mode",
                            "op_mode": 6
                        },
                        {
                            "name": "Dry mode",
                            "op_mode": 1
                        },
                        {
                            "name": "Fan mode",
                            "op_mode": 2
                        },
                        {
                            "name": "Air clean",
                            "op_mode": 5
                        }
                    ]
                },
                {
                    "id": "cbd0e",
                    "name": "Klimatyzacja Sypialnia",
                    "type": "AC",
                    "ac_air_quality": false,
                    "ac_mode": "BOTH",
                    "ac_swing_mode": "BOTH",
                    "ac_buttons": [
                        {
                            "name": "Auto mode",
                            "op_mode": 6
                        },
                        {
                            "name": "Dry mode",
                            "op_mode": 1
                        },
                        {
                            "name": "Fan mode",
                            "op_mode": 2
                        },
                        {
                            "name": "Air clean",
                            "op_mode": 5
                        }
                    ]
                },
                {
                    "id": "f30673",
                    "name": "Klimatyzacja Duzy Pokoj",
                    "type": "AC",
                    "ac_air_quality": false,
                    "ac_mode": "BOTH",
                    "ac_swing_mode": "BOTH",
                    "ac_buttons": [
                        {
                            "name": "Auto mode",
                            "op_mode": 6
                        },
                        {
                            "name": "Dry mode",
                            "op_mode": 1
                        },
                        {
                            "name": "Fan mode",
                            "op_mode": 2
                        },
                        {
                            "name": "Air clean",
                            "op_mode": 5
                        }
                    ]
                }
            ],
            "thinq1": false,
            "refresh_interval": 60,
            "_bridge": {
                "username": "0E:B8:EE:D8:D7:CF",
                "port": 57714
            }
        },

Environment:

Plugin Version: 1.5.1
Homebridge Version: 1.6.1
Node.js Version: 18.16.0
NPM Version:
Operating System: Ubuntu

+1 for this

I saw your commit, thank you for that. I've installed new release but I don't see the change? Am I required to remove all buttons and readd them?

I have the same issue, is it possible to hide these buttons?


Startingclient side

@CodiumAI-Agent   /review

PR Analysis

🎯 Main theme: Setting up the client side of the application
📝 PR summary: This PR sets up the client side of the application using React and Vite. It includes the creation of the main application component, the configuration for Vite and ESLint, and the necessary dependencies in the package.json file.
📌 Type of PR: Enhancement
🧪 Relevant tests added: No
⏱ Estimated effort to review [1-5]: 2, because the PR is straightforward and involves standard setup for a React and Vite application.
🔒 Security concerns: No security concerns found

PR Feedback
💡 General suggestions: The PR is well-structured and follows good practices for setting up a React application with Vite. However, it would be beneficial to add some tests to ensure the setup works as expected.
 🤖 Code feedback:relevant fileClient/Frontend/src/App.jsxsuggestion
Consider adding some state or props to the App component to demonstrate its functionality. [medium]
relevant linefunction App() {relevant fileClient/Frontend/package.jsonsuggestion
Consider adding a "start" script for running the application in production. [medium]
relevant line"scripts": {relevant fileClient/Frontend/.eslintrc.cjssuggestion
Consider adding more specific ESLint rules to enforce a consistent code style. [medium]
relevant linemodule.exports = {

 ✨ Usage guide:
Overview:
The review tool scans the PR code changes, and generates a PR review. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.
When commenting, to edit configurations related to the review tool (pr_reviewer section), use the following template:
/review --pr_reviewer.some_config1=... --pr_reviewer.some_config2=...

With a configuration file, use the following template:
[pr_reviewer]
some_config1=...
some_config2=...

  Utilizing extra instructions
The review tool can be configured with extra instructions, which can be used to guide the model to a feedback tailored to the needs of your project.
Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify the relevant sub-tool, and the relevant aspects of the PR that you want to emphasize.
Examples for extra instructions:
[pr_reviewer] # /review #
extra_instructions="""
In the code feedback section, emphasize the following:
- Does the code logic cover relevant edge cases?
- Is the code logic clear and easy to understand?
- Is the code logic efficient?
...
"""

Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable.

  How to enable\disable automation

When you first install PR-Agent app, the default mode for the review tool is:

pr_commands = ["/review", ...]

meaning the review tool will run automatically on every PR, with the default configuration.
Edit this field to enable/disable the tool, or to change the used configurations

  About the 'Code feedback' section
The review tool provides several type of feedbacks, one of them is code suggestions.
If you are interested only in the code suggestions, it is recommended to use the improve feature instead, since it dedicated only to code suggestions, and usually gives better results.
Use the review tool if you want to get a more comprehensive feedback, which includes code suggestions as well.

  Auto-labels
The review tool can auto-generate two specific types of labels for a PR:

a possible security issue label, that detects possible security issues (enable_review_labels_security flag)
a Review effort [1-5]: x label, where x is the estimated effort to review the PR (enable_review_labels_effort flag)

  Extra sub-tools
The review tool provides a collection of possible feedbacks about a PR.
It is recommended to review the possible options, and choose the ones relevant for your use case.
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
require_score_review, require_soc2_review, enable_review_labels_effort, and more.

  More PR-Agent commands

To invoke the PR-Agent, add a comment using one of the following commands:

/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs 💎: Generate docstring for new components introduced in the PR.
/generate_labels 💎: Generate labels for the PR based on the PR's contents.
/analyze 💎: Automatically analyzes the PR, and presents changes walkthrough for each component.

See the tools guide for more details.
To list the possible configuration parameters, add a /config comment.

See the review usage page for a comprehensive guide on using this tool.

PR Review

 ⏱ Estimated effort to review [1-5]
2, because the PR introduces a new client-side application setup with React and Vite, including basic configuration and structure. The changes are straightforward and follow common practices for setting up a React project with Vite. However, reviewing the configurations for best practices and compatibility issues requires some expertise.

 🧪 Relevant tests
No

 🔍 Possible issues
Possible Issue: The ESLint configuration in .eslintrc.cjs might not cover all potential issues for React projects. Consider adding more specific rules or plugins to catch common pitfalls and ensure code quality.

 🔒 Security concerns
No

 Code feedback:
relevant fileClient/Frontend/package.json
suggestion

Consider pinning the exact versions of your dependencies in package.json to ensure consistent builds and avoid potential issues caused by minor or patch updates of the packages. This can be done by removing the caret (^) symbol before the version numbers. [important]

relevant line"react": "^18.2.0",
relevant fileClient/Frontend/.eslintrc.cjs
suggestion

To improve code quality and catch common mistakes, consider adding eslint-plugin-jsx-a11y to your ESLint configuration. This plugin enforces accessibility best practices in JSX elements. [important]

relevant lineplugins: ['react-refresh'],
relevant fileClient/Frontend/index.html
suggestion

Add a <meta> tag for the description of your website to improve SEO and provide better information when shared on social media. [medium]

relevant line
relevant fileClient/Frontend/src/App.jsx
suggestion

Since the useState hook is imported but not used in App.jsx, consider removing the import to keep the code clean and maintainable. [important]

relevant lineimport { useState } from 'react'

 ✨ Review tool usage guide:
Overview:
The review tool scans the PR code changes, and generates a PR review. The tool can be triggered automatically every time a new PR is opened, or can be invoked manually by commenting on any PR.
When commenting, to edit configurations related to the review tool (pr_reviewer section), use the following template:
/review --pr_reviewer.some_config1=... --pr_reviewer.some_config2=...

With a configuration file, use the following template:
[pr_reviewer]
some_config1=...
some_config2=...

  Utilizing extra instructions
The review tool can be configured with extra instructions, which can be used to guide the model to a feedback tailored to the needs of your project.
Be specific, clear, and concise in the instructions. With extra instructions, you are the prompter. Specify the relevant sub-tool, and the relevant aspects of the PR that you want to emphasize.
Examples for extra instructions:
[pr_reviewer] # /review #
extra_instructions="""
In the 'possible issues' section, emphasize the following:
- Does the code logic cover relevant edge cases?
- Is the code logic clear and easy to understand?
- Is the code logic efficient?
...
"""

Use triple quotes to write multi-line instructions. Use bullet points to make the instructions more readable.

  How to enable\disable automation

When you first install PR-Agent app, the default mode for the review tool is:

pr_commands = ["/review", ...]

meaning the review tool will run automatically on every PR, with the default configuration.
Edit this field to enable/disable the tool, or to change the used configurations

  Auto-labels
The review tool can auto-generate two specific types of labels for a PR:

a possible security issue label, that detects possible security issues (enable_review_labels_security flag)
a Review effort [1-5]: x label, where x is the estimated effort to review the PR (enable_review_labels_effort flag)

  Extra sub-tools
The review tool provides a collection of possible feedbacks about a PR.
It is recommended to review the possible options, and choose the ones relevant for your use case.
Some of the feature that are disabled by default are quite useful, and should be considered for enabling. For example:
require_score_review, require_soc2_ticket, and more.

  Auto-approve PRs
By invoking:
/review auto_approve

The tool will automatically approve the PR, and add a comment with the approval.
To ensure safety, the auto-approval feature is disabled by default. To enable auto-approval, you need to actively set in a pre-defined configuration file the following:
[pr_reviewer]
enable_auto_approval = true

(this specific flag cannot be set with a command line argument, only in the configuration file, committed to the repository)
You can also enable auto-approval only if the PR meets certain requirements, such as that the estimated_review_effort is equal or below a certain threshold, by adjusting the flag:
[pr_reviewer]
maximal_review_effort = 5

  More PR-Agent commands

To invoke the PR-Agent, add a comment using one of the following commands:

/review: Request a review of your Pull Request.
/describe: Update the PR title and description based on the contents of the PR.
/improve [--extended]: Suggest code improvements. Extended mode provides a higher quality feedback.
/ask <QUESTION>: Ask a question about the PR.
/update_changelog: Update the changelog based on the PR's contents.
/add_docs 💎: Generate docstring for new components introduced in the PR.
/generate_labels 💎: Generate labels for the PR based on the PR's contents.
/analyze 💎: Automatically analyzes the PR, and presents changes walkthrough for each component.

See the tools guide for more details.
To list the possible configuration parameters, add a /config comment.

See the review usage page for a comprehensive guide on using this tool.


youtube export

Is it normal that after 4 video upload the api query limit of 10.000 is hit?

searched a bit and this query limit can be increased but takes time and you have to explain why.

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

does the application save the state, which are already uploaded? So it continues after you press upload all videos of streamer again?

it should yes, if the vod has an exported at field in the dashboard

yeah that looks alright, there's a list of actions and uploading is quite costly. in general you just gotta pay to get more i think, but i haven't tried verifying my channel for the extended api usage either

dunno if to much to ask. but could you build something like try at 9am every day kind of qeue thingy? because it resets everday at 9 I think.

since i don't have mine set up, could you provide some text strings or error codes for what happens when the upload fails due to quota?

since i don't have mine set up, could you provide some text strings or error codes for what happens when the upload fails due to quota?

thats the log I guess.
{"module":"YouTube","time":1690870443221,"level":"ERROR","text":"Could not upload video: The request cannot be completed because you have exceeded your quota.","pid":34,"metadata":{"response":{"config":{"url":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart","method":"POST","userAgentDirectives":[{"product":"google-api-nodejs-client","version":"5.1.0","comment":"gzip"}],"data":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":true,"closeEmitted":true},"allowHalfOpen":true},"headers":{"x-goog-api-client":"gdcl/5.1.0 gl-node/19.9.0 auth/7.14.1","content-type":"multipart/related; boundary=9016b555-b76c-46e7-9968-8a7afbe583ab","Accept-Encoding":"gzip","User-Agent":"google-api-nodejs-client/5.1.0 (gzip)","Authorization":"Bearer ya29.redacted","Accept":"application/json"},"params":{"part":["snippet","status"],"uploadType":"multipart"},"retry":true,"body":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":true,"closeEmitted":true},"allowHalfOpen":true},"responseType":"json","retryConfig":{"currentRetryAttempt":0,"retry":3,"httpMethodsToRetry":["GET","HEAD","PUT","OPTIONS","DELETE"],"noResponseRetries":2,"statusCodesToRetry":[[100,199],[429,429],[500,599]]}},"data":{"error":{"code":403,"message":"The request cannot be completed because you have exceeded your quota.","errors":[{"message":"The request cannot be completed because you have exceeded your quota.","domain":"youtube.quota","reason":"quotaExceeded"}]}},"headers":{"alt-svc":"h3=\":443\"; ma=2592000,h3-29=\":443\"; ma=2592000","cache-control":"private","connection":"close","content-encoding":"gzip","content-type":"application/json; charset=UTF-8","date":"Tue, 01 Aug 2023 06:14:03 GMT","server":"UploadServer","transfer-encoding":"chunked","vary":"Origin, X-Origin, Referer","warning":"214 UploadServer gzipped","x-guploader-response-body-transformations":"gzipped","x-guploader-uploadid":"redacted"},"status":403,"statusText":"Forbidden","request":{"responseURL":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart"}},"config":{"url":"https://youtube.googleapis.com/upload/youtube/v3/videos?part=snippet&part=status&uploadType=multipart","method":"POST","userAgentDirectives":[{"product":"google-api-nodejs-client","version":"5.1.0","comment":"gzip"}],"data":{"_readableState":{"objectMode":false,"highWaterMark":16384,"buffer":{"head":null,"tail":null,"length":0},"length":0,"pipes":[],"flowing":false,"ended":true,"endEmitted":true,"reading":false,"constructed":true,"sync":false,"needReadable":false,"emittedReadable":false,"readableListening":false,"resumeScheduled":false,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"destroyed":true,"errored":null,"closed":true,"closeEmitted":true,"defaultEncoding":"utf8","awaitDrainWriters":null,"multiAwaitDrain":false,"readingMore":false,"dataEmitted":true,"decoder":null,"encoding":null},"_events":{},"_eventsCount":2,"_writableState":{"objectMode":false,"highWaterMark":16384,"finalCalled":true,"needDrain":false,"ending":true,"ended":true,"finished":true,"destroyed":true,"decodeStrings":true,"defaultEncoding":"utf8","length":0,"writing":false,"corked":0,"sync":false,"bufferProcessing":false,"writecb":null,"writelen":0,"afterWriteTickInfo":null,"buffered":[],"bufferedIndex":0,"allBuffers":true,"allNoop":true,"pendingcb":0,"constructed":true,"prefinished":true,"errorEmitted":false,"emitClose":true,"autoDestroy":true,"errored":null,"closed":tr{"module":"log","time":1690871423705,"level":"INFO","text":"Starting new log file for 2023-08-01, git hash undefined","pid":34}
01.08.2023 09:39:44
SyntaxError: Unexpected token '{', ..."closed":tr{"module":"... is not valid JSON
01.08.2023 09:39:44
    at JSON.parse (<anonymous>)
01.08.2023 09:39:44
    at <anonymous> (/usr/local/share/twitchautomator/server/src/Core/Log.ts:72:57)
01.08.2023 09:39:44
    at Array.map (<anonymous>)
01.08.2023 09:39:44
    at readTodaysLog (/usr/local/share/twitchautomator/server/src/Core/Log.ts:72:22)
01.08.2023 09:39:44
    at Function.init (/usr/local/share/twitchautomator/server/src/Core/LiveStreamDVR.ts:128:9)
01.08.2023 09:39:44

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

ok thanks will test and see what happens.

currently building on dev which has a scheduler option for exporting all channels, aborts when it gets a quota error and hopefully should reset during the next day

Setup the dev container and added some channels to force reaching the daily limit. The container seems to be crashing even after a manual upload:

08.08.2023 19:00:58
Create exporter youtube vod {
08.08.2023 19:00:58
  title_template: '[{internalName}] {title}_{date}_{resolution}',
08.08.2023 19:00:58
  directory: '',
08.08.2023 19:00:58
  host: '',
08.08.2023 19:00:58
  username: '',
08.08.2023 19:00:58
  password: '',
08.08.2023 19:00:58
  description: 'Test',
08.08.2023 19:00:58
  tags: 'Test',
08.08.2023 19:00:58
  category: '20',
08.08.2023 19:00:58
  file_source: 'segment',
08.08.2023 19:00:58
  privacy: 'private',
08.08.2023 19:00:58
  vod: '52f9a819-ae1e-4d40-88b9-7f2866eb0540',
08.08.2023 19:00:58
  remote: '',
08.08.2023 19:00:58
  playlist_id: 'PLqBFPPTpZzdHd8QSOOgORAfSPodwVyIsD'
08.08.2023 19:00:58
}
08.08.2023 19:00:58
/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218
08.08.2023 19:00:58
            message: (error as Error).message
08.08.2023 19:00:58
                                      ^
08.08.2023 19:00:58
08.08.2023 19:00:58
08.08.2023 19:00:58
TypeError: Cannot read properties of undefined (reading 'message')
08.08.2023 19:00:58
    at ExportFile (/usr/local/share/twitchautomator/server/src/Controllers/Exporter.ts:218:39)
08.08.2023 19:00:58
    at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
08.08.2023 19:00:58
08.08.2023 19:00:58
Node.js v19.9.0
Container stopped

are there any related log entries just before this?
also this new formatting is really strange

wow i'm really at a loss, nowhere in the exporter code can i find a place where an error is returned undefined

wow pretty useful to have a debugger huh

wow pretty useful to have a debugger huh

Working again we will see what happens

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

hmm, wonder how far it gets. so nothing is logged regarding exporter stuff after stream end?

wow pretty useful to have a debugger huh

Stream are being recorded but auto exported does nothing and I cannot find anything in the logs after stream end that they are being exported to YouTube.

hmm, wonder how far it gets. so nothing is logged regarding exporter stuff after stream end?

found something:
2023-08-11 06:23:35
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 62979/63162 seconds (100%)
2023-08-11 06:23:36
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63002/63162 seconds (100%)
2023-08-11 06:23:37
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63023/63162 seconds (100%)
2023-08-11 06:23:37
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63053/63162 seconds (100%)
2023-08-11 06:23:38
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63081/63162 seconds (100%)
2023-08-11 06:23:38
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63112/63162 seconds (100%)
2023-08-11 06:23:39
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63151/63162 seconds (100%)
2023-08-11 06:23:39
 Create MOOV atom for bonjwa_2023-08-10T12_25_13Z_40976634536.ts (this usually takes a while)
2023-08-11 06:51:33
 🎞 Remuxing bonjwa_2023-08-10T12_25_13Z_40976634536.ts - 63162/63162 seconds (100%)
2023-08-11 06:51:34
 2023-08-11T06:51:34.280Z | exec.startJob <success> Process 1496 for remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts closed with code 0
2023-08-11 06:51:34
 2023-08-11T06:51:34.281Z | job.clear <info> Clear job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts with PID 1496
2023-08-11 06:51:34
 2023-08-11T06:51:34.282Z | job.clear <success> Job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts removed from jobs list
2023-08-11 06:51:34
 2023-08-11T06:51:34.282Z | job.clear <warn> Job remux_bonjwa_2023-08-10T12_25_13Z_40976634536.ts not found in jobs list
2023-08-11 06:51:34
 2023-08-11T06:51:34.291Z | video.remux <success> Remuxed /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.ts to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:51:34
 2023-08-11T06:51:34.291Z | automator.convertVideo <success> Converted video /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.ts to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:51:34
 😴 Sleeping for 10000 ms
2023-08-11 06:51:45
 2023-08-11T06:51:45.307Z | automator.download <info> Conversion done, add segment '/usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4' to 'bonjwa_2023-08-10T12_25_13Z_40976634536'
2023-08-11 06:51:45
 2023-08-11T06:51:45.307Z | vod.addSegment <info> Adding segment bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 to bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:51:45
 2023-08-11T06:51:45.311Z | vod.saveJSON <success> Saving JSON of bonjwa_2023-08-10T12_25_13Z_40976634536  (add segment)
2023-08-11 06:51:45
 2023-08-11T06:51:45.369Z | automator.download <info> Sleep 30 seconds for bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:51:45
 😴 Sleeping for 30000 ms
2023-08-11 06:52:15
 2023-08-11T06:52:15.381Z | automator.download <info> Do metadata on bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:15
 2023-08-11T06:52:15.381Z | vod.finalize <info> Finalize bonjwa_2023-08-10T12_25_13Z_40976634536 @ /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:15
 2023-08-11T06:52:15.395Z | vod.getMediainfo <info> Fetching mediainfo of bonjwa_2023-08-10T12_25_13Z_40976634536, segment #0
2023-08-11 06:52:15
 2023-08-11T06:52:15.398Z | helper.mediainfo <info> Run mediainfo on /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:52:18
 2023-08-11T06:52:18.230Z | helper.execSimple <info> Process 1506 for 'mediainfo' exited with code 0
2023-08-11 06:52:18
 2023-08-11T06:52:18.232Z | helper.videometadata <success> /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 is a video file 17:32:41 long at 1080p59.
2023-08-11 06:52:18
 2023-08-11T06:52:18.232Z | vod.saveLosslessCut <info> Saving lossless cut csv for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv
2023-08-11 06:52:18
 2023-08-11T06:52:18.308Z | vod.saveFFMPEGChapters <info> Saving FFMPEG chapters file for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt
2023-08-11 06:52:18
 2023-08-11T06:52:18.328Z | vod.saveVTTChapters <info> Saving VTT chapters file for bonjwa_2023-08-10T12_25_13Z_40976634536 to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt
2023-08-11 06:52:18
 2023-08-11T06:52:18.347Z | vod.matchProviderVod <info> Trying to match bonjwa_2023-08-10T12_25_13Z_40976634536 to provider...
2023-08-11 06:52:18
 2023-08-11T06:52:18.352Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.352Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536-llc-edl.csv
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536-ffmpeg-chapters.txt
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | vod.watch <info> VOD file /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt changed (change)!
2023-08-11 06:52:18
 2023-08-11T06:52:18.353Z | clientBroker.notify <info> (system) VOD file changed externally: bonjwa_2023-08-10T12_25_13Z_40976634536.chapters.vtt
2023-08-11 06:52:18
 2023-08-11T06:52:18.665Z | vod.matchProviderVod <success> Found matching VOD for bonjwa_2023-08-10T12_25_13Z_40976634536 (2023-08-10T12:25:13.000Z):<PHONE_NUMBER> (Donnerstag, 10.08.2023)
2023-08-11 06:52:18
 2023-08-11T06:52:18.670Z | helper.videoContactSheet <info> Requested video contact sheet of /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 with width 1920 and grid 3x5, output to /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536-contact_sheet.png
2023-08-11 06:52:49
 2023-08-11T06:52:49.323Z | helper.execSimple <info> Process 1507 for 'vcsi video contact sheet' exited with code 0
2023-08-11 06:52:49
 2023-08-11T06:52:49.323Z | helper.videoContactSheet <success> Created video contact sheet for /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4
2023-08-11 06:52:49
 2023-08-11T06:52:49.324Z | vod.saveJSON <success> Saving JSON of bonjwa_2023-08-10T12_25_13Z_40976634536  (finalized)
2023-08-11 06:52:49
 2023-08-11T06:52:49.377Z | automator.download <info> Cleanup old VODs for Bonjwa
2023-08-11 06:52:49
 2023-08-11T06:52:49.377Z | tw.channel.cleanupVods <info> Cleanup VODs for bonjwa, ignore 4a5d69f2-01a8-4ec5-af79-7f27c7947e92
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | tw.channel.roundupCleanupVodCandidates <info> Chose 0 vods to delete
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | tw.channel.cleanupVods <info> Not enough vods to delete for bonjwa
2023-08-11 06:52:49
 2023-08-11T06:52:49.378Z | automator.download <success> All done for bonjwa_2023-08-10T12_25_13Z_40976634536
2023-08-11 06:52:49
 Create exporter youtube vod {
2023-08-11 06:52:49
   vod: '4a5d69f2-01a8-4ec5-af79-7f27c7947e92',
2023-08-11 06:52:49
   directory: undefined,
2023-08-11 06:52:49
   host: undefined,
2023-08-11 06:52:49
   username: undefined,
2023-08-11 06:52:49
   password: undefined,
2023-08-11 06:52:49
   description: 'Test',
2023-08-11 06:52:49
   tags: 'Test',
2023-08-11 06:52:49
   category: '20',
2023-08-11 06:52:49
   remote: undefined,
2023-08-11 06:52:49
   title_template: '[{internalName}] {title}_{date}_{resolution}',
2023-08-11 06:52:49
   privacy: 'private'
2023-08-11 06:52:49
 }
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'comment', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'absolute_episode', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'resolution', using template '[{internalName}] {title}_{date}_{resolution}'
2023-08-11 06:52:49
 2023-08-11T06:52:49.381Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/bonjwa/bonjwa_2023-08-10T12_25_13Z_40976634536/bonjwa_2023-08-10T12_25_13Z_40976634536.mp4 to YouTube...
2023-08-11 06:52:49
 2023-08-11T06:52:49.382Z | YouTubeExporter.export <error> Could not upload video: No access, refresh token, API key or refresh handler callback is set.
2023-08-11 06:52:49
 2023-08-11T06:52:49.383Z | automator.onEndDownload <error> Export error: No access, refresh token, API key or refresh handler callback is set.
2023-08-11 10:00:00
 2023-08-11T10:00:00.013Z | vod.checkMutedVod <info> Check muted VOD for bonjwa_2023-08-07T19_59_54Z_40969158360 using streamlink
2023-08-11 10:00:01
 2023-08-11T10:00:01.147Z | helper.execSimple <info> Process 1681 for 'vod mute check' exited with code 0
2023-08-11 10:00:01
 2023-08-11T10:00:01.147Z | vod.checkMutedStreamlink <success> VOD bonjwa_2023-08-07T19_59_54Z_40969158360 is not muted!

but youtube is authorized? Looks like it keeps getting unauthorized.

yeah their api is really unstable and difficult to work with, does it work fetching status before and after this?

yeah their api is really unstable and difficult to work with, does it work fetching status before and after this?

Cannot realy say just authorized it again and then it worked to export obviously.

i think i might have figured it out now, it should automatically fetch the token now both on startup and when it expires using the refresh token

i think i might have figured it out now, it should automatically fetch the token now both on startup and when it expires using the refresh token

Still losing login the login expires in 1h.
2023-08-12T21:52:26.882Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/giantwaffle/giantwaffle_2023-08-12T16_05_19Z_42598078683/giantwaffle_2023-08-12T16_05_19Z_42598078683.mp4 to YouTube...
23:52:26
2023-08-12T21:52:26.883Z | YouTubeExporter.export <error> Could not upload video: No refresh token is set.
23:52:26
2023-08-12T21:52:26.883Z | automator.onEndDownload <error> Export error: No refresh token is set.

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube.
on my end it still works, even over a day later

Yep did authenticate again, will try to kill the session completely an authenticate again.

hmm, did you authenticate again? maybe you need to delete the related files in cache concerning youtube.
on my end it still works, even over a day later

still keeps loosing authentication.
YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-14T09:51:30.448Z)
13.08.2023 22:29:27
Create exporter youtube vod {
13.08.2023 22:29:27
  vod: '5d472caa-854a-4dd8-87d8-0d27b7ef2096',
13.08.2023 22:29:27
  directory: undefined,
13.08.2023 22:29:27
  host: undefined,
13.08.2023 22:29:27
  username: undefined,
13.08.2023 22:29:27
  password: undefined,
13.08.2023 22:29:27
  description: 'Test',
13.08.2023 22:29:27
  tags: 'Test',
13.08.2023 22:29:27
  category: '20',
13.08.2023 22:29:27
  remote: undefined,
13.08.2023 22:29:27
  title_template: '[{internalName}] {title}_{date}_{resolution}',
13.08.2023 22:29:27
  privacy: 'private'
13.08.2023 22:29:27
}
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'comment', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'absolute_episode', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | BaseExporter.getFormattedTitle <warn> No value for replacement literal 'resolution', using template '[{internalName}] {title}_{date}_{resolution}'
13.08.2023 22:29:27
2023-08-13T20:29:27.996Z | YouTubeExporter.export <info> Uploading /usr/local/share/twitchautomator/data/storage/vods/cohhcarnage/cohhcarnage_2023-08-13T16_55_13Z_49087871293/cohhcarnage_2023-08-13T16_55_13Z_49087871293.mp4 to YouTube...
13.08.2023 22:29:27
2023-08-13T20:29:27.998Z | YouTubeExporter.export <error> Could not upload video: No refresh token is set.
13.08.2023 22:29:27
2023-08-13T20:29:27.998Z | automator.onEndDownload <error> Export error: No refresh token is set.

so the button to check status works but not the upload?

so the button to check status works but not the upload?

this is about the auto exporter, everything manual works just fine I can login and press export all. But as soon as the auto exporter gets to do its thing it cannot because the authentication is expored.

the auto exporter fails even if it is done just right after the authentication is done?

this next build will have some more info when you press check status about what tokens are set, might help debug this

the auto exporter fails even if it is done just right after the authentication is done?

that I cannot say because it expires after 1h atleast thats what the ui says. Since I cannot say when some streamers end their stream I cannot time it correctly.

hmm well at least i think it should refresh on its own regardless of what method. when the new one has been built, can you test authenticating and then check status after the date it says when it expires (1 hour)?

hmm well at least i think it should refresh on its own regardless of what method. when the new one has been built, can you test authenticating and then check status after the date it says when it expires (1 hour)?
also check what "yes/no" checks it outputs on all status checks

so far it says the new things you implemented, will report back tomrrow after streams have been recorded.
YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-14T18:22:38.443Z). Refresh token: no. Access token: yes. OAuth2 cred token: yes. OAuth2 cred refresh token: no.

that is a bit odd that it doesn't have a refresh token, it's the thing that allows for new tokens to be generated.
wonder if this is a google api issue depending on how you set it up

If you tell me what to look for I can check in the dev console?

i'm really not sure what to check for, anything with offline access or refresh tokens? it should be logging on the server if either are set

hmm well at least i think it should refresh on its own regardless of what method. when the new one has been built, can you test authenticating and then check status after the date it says when it expires (1 hour)?
also check what "yes/no" checks it outputs on all status checks

so far it says the new things you implemented, will report back tomrrow after streams have been recorded.
YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-14T18:22:38.443Z). Refresh token: no. Access token: yes. OAuth2 cred token: yes. OAuth2 cred refresh token: no.

i'm really not sure what to check for, anything with offline access or refresh tokens? it should be logging on the server if either are set

found this online:
https://stackoverflow.com/questions/40811386/not-getting-refresh-token-in-youtube-oauth
I cannot change this can I

Note: Google does not return a refresh token by default. In order to receive a refresh token on authorization from a Google API, you need to add an extra query parameter to your auth URL. Modify your auth URL to https://accounts.google.com/o/oauth2/v2/auth?access_type=offline, which includes a query parameter of access_type set to offline. The default state is online, and you need to explicitly set it to offline.

that's enabled already, so hopefully shouldn't be related

that's enabled already, so hopefully shouldn't be related

than I dont understand why it is not working.

do the logs say anywhere that it gets a refresh token?

https://stackoverflow.com/a/10857806
maybe revoke the app completely from your channel and redo it?

https://stackoverflow.com/a/10857806
maybe revoke the app completely from your channel and redo it?

as far as I can see no:

15.08.2023 08:23:35
2023-08-15T06:23:35.292Z | YouTube.Authenticate <info> Begin auth process...
15.08.2023 08:23:35
2023-08-15T06:23:35.293Z | YouTube.Authenticate <success> Send user to: https://accounts.google.com/o/oauth2/v2/auth?access_type=offline&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly%20https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner&response_type=code&client_id=redacred-redactede%2Fapi%2Fv0%2Fyoutube%2Fcallback
15.08.2023 08:23:35
<IP_ADDRESS> - - [15/Aug/2023:06:23:35 +0000] "GET /api/v0/youtube/authenticate HTTP/1.1" 302 1062 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:36
<IP_ADDRESS> - - [15/Aug/2023:06:23:36 +0000] "GET /workbox-e71b7dbd.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:36
<IP_ADDRESS> - - [15/Aug/2023:06:23:36 +0000] "GET /sw.js HTTP/1.1" 304 - "-" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"
15.08.2023 08:23:38
2023-08-15T06:23:38.240Z | YouTube.Callback <info> Got callback from YouTube...
15.08.2023 08:23:38
2023-08-15T06:23:38.327Z | YouTubeHelper.setupClient <warn> Got new tokens, but no refresh.
15.08.2023 08:23:38
2023-08-15T06:23:38.327Z | YouTubeHelper.applyToken <info> Applying regular token to OAuth2Client, keeping old refresh token.
15.08.2023 08:23:38
2023-08-15T06:23:38.328Z | YouTube.Callback <success> Authenticated with YouTube
15.08.2023 08:23:38
2023-08-15T06:23:38.328Z | YouTube.Callback <warn> No refresh token received
15.08.2023 08:23:38
<IP_ADDRESS> - - [15/Aug/2023:06:23:38 +0000] "GET /api/v0/youtube/callback?code=4%2F0redactedFLogDw&scope=profile+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.upload+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutubepartner+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fyoutube.readonly+https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fuserinfo.profile HTTP/1.1" 200 70 "https://accounts.google.com/" "Mozilla/5.0 (X11; Linux x86_64; rv:109.0) Gecko/20100101 Firefox/116.0"

https://stackoverflow.com/a/10857806
maybe revoke the app completely from your channel and redo it?

that fixed it thank you:
YouTube authenticated with user: redacted, expires in about 1 hour (2023-08-15T07:31:21.398Z). Refresh token: yes. Access token: yes. OAuth2 cred token: yes. OAuth2 cred refresh token: yes.

nice to finally get that sorted, i'll put some kind of disclaimer on the auth component

nice to finally get that sorted, i'll put some kind of disclaimer on the auth component

thanks for the help. Left a little tip.

thanks! of note though, it seems that unverified apps only has the refresh token be valid for 7 days or something like that, so it still needs to be occasionally refreshed

working on it


Fix UIKit example

Thanks for your suggestion, @jakubknejzlik. With substantial delay, I close this PR without merging. I prefer the simpler version without explicitly stating the default 0-section. The purpose of the example is to show the simplicity of updating your table/collection view with this package. I keep changeset.edit to make the relationship between changeset and edits clear.


fix the "Frequently changing state should not be directly read in com…

fix

@kazemcodes remove all the white space changes (use tabs), Then I will merge.

my Idea setting is a little bit different from yours, I change the setting and it didn't seems to fix this issue

I also found that there is small issue in LazyColumn performance, I'm not sure where this issue comes from, but this issue can slow down the scrolling and cause lags during the usage

Will clean up the whitespace.

Ok, my bad. Seems I had tabs in one file and spaces in another.


Make dep ensure work offline

store which revision was pulled in some cache folder
verify it matches lock
... would make this a ton faster, atm it's really annoying that dep ensure cannot be part of red-green cycle since it's too slow and does not work when offline

Dep was officially deprecated earlier this year, and the proposal to archive this repository was accepted. As such, I'm closing outstanding issues before archiving the repository. For any further comments, please use the proposal thread on the Go issue tracker. Thanks!


fix: if self._async_conn is None raise AttributeError

if self._async_conn is None
raise
AttributeError: 'NoneType' object has no attribute 'cursor'
Peewee-async used in our production environment,
When high concurrency, the following error is raised
AttributeError: 'NoneType' object has no attribute 'cursor'
  File "sanic/app.py", line 603, in handle_request
    response = await response
  File "utils/decorators.py", line 133, in decorated_function
    response = await f(request, *args, **kwargs)
  File "utils/decorators.py", line 237, in decorated_function
    response = await f(request, *args, **kwargs)
  File "handler/user.py", line 942, in get_users_info
    users = await mysql.execute(User.select().where(User.id.in_(otheruid)))
  File "site-packages/peewee_async.py", line 258, in execute
    return (await execute(query))
  File "site-packages/peewee_async.py", line 418, in execute
    return (await coroutine(query))
  File "site-packages/peewee_async.py", line 556, in select
    cursor = await _execute_query_async(query)
  File "site-packages/peewee_async.py", line 1446, in _execute_query_async
    return (await _run_sql(database, *query.sql()))
  File "site-packages/peewee_async.py", line 1426, in _run_sql
    cursor = await database.cursor_async()
  File "site-packages/peewee_async.py", line 854, in cursor_async
    return (await self._async_conn.cursor(conn=conn))

So I made a suggestion to fix it.

Hello @fanjindong! Thank you for reporting and PR, I still don't understand this issue. Guess we need some specific tests here to better understand conditions. From what you're saying I see that under high concurrency cursor can't be acquired. So we need to understand how to properly handle that. Could you explain your approach?

We need a policy for such situations. What is expected behaviour?
Current implementation assumes that is we failed to acquire cursor, something is wrong with connection and it should be re-created.
Also exception is re-raised:
# ...
except:
    await self.close_async()
    raise

So, most likely we get some internal database exception here. I'm trying to get an idea of your approach but need more explanation here.

Looking at the whole method:
    async def cursor_async(self):
        """Acquire async cursor.
        """
        await self.connect_async(loop=self._loop)

        if self.transaction_depth_async() > 0:
            conn = self.transaction_conn_async()
        else:
            conn = None

        try:
            return (await self._async_conn.cursor(conn=conn))
        except:
            await self.close_async()
            raise

Assume we have 2 concurrent requests for cursor_async():

both of them passed await self.connect_async
first of them failed and closed connection
second failed at await self._async_conn with Attribute error

Yes, this is unexpected. This is important piece of code and we need to work out better and consistent approach here.

Yes, so in a short period of time, it caused tens of thousands of mistakes. Scared me to death.
Minimum expected behavior: Wrong single mysql request does not affect requests in other parallels

@fanjindong The difficulty here is to distinguish between two situations:

Connection is overloaded by many requests
Connection is corrupted and needs to be re-initiated

Both scenarios will end up with exception at line (await self._async_conn.cursor(conn=conn)).
BTW, did you try to increase connection pool size?

It should be fixed since the lock has been added here We are on testing stage.


Library doesn't handle emojis

Discordie doesn't yet handle guild emojis. Guild creates return emojis in the data object, and there's also an emoji update event.

fixed by 0b255249826708fbd3184477940f210d60c5d3f9


Does the sql "SHOW COLUMNS IN home" support syntax in the influxdb which is the version of 1.7+?

Describe the issue here.
Relevant URLs

https://docs.influxdata.com/influxdb/clustered/query-data/sql/explore-schema/
Provide other relevant URLs (project issues, community threads, etc.)
i use the java api to query,but the result throw the exception that error parsing query: found columns, expected CONTINUOUS, DATABASES, DIAGNOSTICS, FIELD, GRANTS, MEASUREMENT, MEASUREMENTS, QUERIES, RETENTION, SERIES, SHARD, SHARDS, STATS, SUBSCRIPTIONS, TAG,

@Watson-kubernetes the InfluxDB 1.x SQL-like query language is InfluxQL. With InfluxDB 3.0 (Cloud Serverless, Cloud Dedicated, and Clustered), InfluxDB supports native SQL. The SHOW COLUMNS query is a SQL query, not an InfluxQL query. The InfluxDB v1 Java client library only supports InfluxQL.
If you're using InfluxDB Clustered, you should use the InfluxDB v3 Java client library. This allows you to execute SQL queries.
If you want to use InfluxQL, you can continue to use the InfluxDB v1 Java client library, but you'll need to use InfluxQL commands such as SHOW FIELD KEYS and SHOW TAG KEYS.

got it ,thanks a lot @sanderson


use of expired token

in my user table there is token_expiration field and token field so when user login then token generated by
private function generateToken(int $length = 36, string $expiration = '+6 hours')
{
  $random = base64_encode(Security::randomBytes($length));
  $cleaned = preg_replace('/[^A-Za-z0-9]/', '', $random);
  return [$cleaned, strtotime($expiration)];
}

and saved into users table in token field with token_expiration time but plugin does not prevent access data if toke expire so please give me solution how does it work?

First you should check what token_expiration value is set in your database when the user logs in.
The plugin checks if the token did not expired (https://github.com/rrd108/api-token-authenticator/blob/e3c8e7d737d92977da337f5fb8cb929d5140ce44/src/Authentication/Authenticator/ProvisoryTokenAuthenticator.php#L29) and give you an error message.

Well it seems you are right, I should fix the issue.

I added a test and it passes.
So it seems something is missing from your code.

Application.php
UsersController.php login method

whats going wrong here? plugin does not check token expire time

I added a test and it passes. So it seems something is missing from your code.
think plugin does not check token

can you share your /config/apiTokenAuthenticator.php file also?

can you share your /config/apiTokenAuthenticator.php file also?

nope! i do't create apiTokenAuthenticator.php because i am following the default convention as plugin mention in docs... like In users table must be token and token_expiration column but if users table different field name then need to create apiTokenAuthenticator.php file in /config directory! May I Right or Not?

Ok, so that is the part you are missing.
You should do the folowwing steps:

Remove loadIdentifier and loadAuthenticator parts from your Application.php file. You do not have to add any of these, the plugin handle these. In the Application.php file you just have to disable CSRF as mentioned here Disable CSRF protection
As you use token_expiration you should have your own config/apiTokenAuthenticator.php file with the following content.

<?php

return [
    'ApiTokenAuthenticator' => [
        'header' => 'Authorization',
        'tokenExpiration' => 'token_expiration',
    ]
];

This will do 2 things.

enable token expiration checks
Set the header for authentication as Authorization. By default the plugin watching a header named Token, but as I see you use Authorization instead of the default.

In the same time there is a problem. If you want to use Bearer it goes to the value od the token, not into the name. Because of this the check will fail.
You have 2 options:

Use a different authentication header. For example if you can use Token as the authorization header it will be handled automatically by the plugin.
If you want I can add support for Bearer

I just tagged a new relase where the use of Bearer is more clear as using prefix was not documented yet.

2. Authorization

step 1 :-
As you said sir, I Removed loadIdentifier and loadAuthenticator parts from your Application.php file so now My Api stop to work because cakephp 5  Authentication(3.X) plugin recommended to add loadIdentifier and loadAuthenticator if token based access system developed.
step 2
So As you said as the Authorization Header.. but there is already Authorization header
$service->loadAuthenticator('Authentication.Token', [                 'queryParam' => 'token',                 'header' => 'Authorization',                 'tokenPrefix' => 'Token'             ]);
I replace Bearer to Token again but the result are same now plugin does not check token expire or not even I created apiTokenAuthenticator.php file into config folder..
And please Add the support for Bearer, because it really necessary when developer use React or Vuejs then token send through Bearer so please Add on support for Bearer.
And Sir your plugin is really Awesome..

I just tagged a new relase where the use of Bearer is more clear as using prefix was not documented yet.

:+1:

I Removed loadIdentifier and loadAuthenticator parts from your Application.php file so now My Api stop to work because cakephp 5  Authentication(3.X) plugin recommended to add loadIdentifier and loadAuthenticator if token based access system developed.

Yes, you are totally right, but if you use this plugin it does it for you. You do not have to add anything by yourself.

So As you said as the Authorization Header.. but there is already Authorization header
Check my answer about. I hope it clarify.

The main thing is your config/apiTokenAuthenticator.php file. There you can set anything you want and the plugin should handle them well.

please share me example or code!! how can I handle this thing from config/apiTokenAuthenticator.php

Ok so first we should clarify a few things. What is the name of the token header you send to your API?

http://localhost:8765/api/users/view.json?token=g1UBEpFcJzz5JaSo1zkOKEvb9Trkt3XoFvrAIHRFjNqMWwXJ
config/apiTokenAuthenticator.php
return [     'ApiTokenAuthenticator' => [         'header' => 'Authorization',         'tokenExpiration' => 'token_expiration',     ] ];

Wait the axmpla you linked sends the tone is the url, not in a header. Is it what you want?

It is up to you how you send the token.
If you do not have to adjust yourself to others I would recommend the following:
From the screenshot I think you use Postman for testing.

Do not use this Authorization tab at all, remove what you have here.
On the Headers tab add a new Header with the name Token and with the value you have here in your example.

In this case your config/apiTokenAuthenticator.php should be this:
<?php
return [ 'ApiTokenAuthenticator' => ['tokenExpiration' => 'token_expiration', ] ];

It is up to you how you send the token. If you do not have to adjust yourself to others I would recommend the following:
From the screenshot I think you use Postman for testing.

Do not use this Authorization tab at all, remove what you have here.
On the Headers tab add a new Header with the name Token and with the value you have here in your example.

In this case your config/apiTokenAuthenticator.php should be this:
<?php
return [ 'ApiTokenAuthenticator' => ['tokenExpiration' => 'token_expiration', ] ];

ok i will try it, but if i am using query string parameter like ?token=oklkdk032okej-0j23 so then plugin handle it or not? please add on this functioning in your plugin..
Thanks
I will test it tomorrow

Currently the plugin does not support query string parameters, onyle headers

still its not working sir, i think plugin does not care about token expire or not

I can confirm that the plugin checks token expiration.
So please share your config/apiTokenAuthenticator.php here.
Then try to log in and share details how you try to login. Also I need to see if you get any errors in your error log.

continued at #11


[Find Resources] Add text pointing user in direction of chatbot

Enhancement
Desired Functionality
We need to add text to the top of this page that encourages users to utilize the chatbot for financial and misc. resources.
Current Functionality
Currently there is no supporting text and users may not understand the importance of the chatbot here.
Other remarks
Related to: https://github.com/CovidSC/covidsc-web/issues/52

Designs still in progress but here is some process work:


[Event Request] Table 38: OnAfterValidateShortcutDimCode

We need the following publisher to implement additional logic after the ValidateShortcutDimCode function is executed:
Table 38 - Function ValidateShortcutDimCode:
OnAfterValidateShortcutDimCode(Rec,xRec,FieldNumber,ShortcutDimCode) (event at the end of the function)
Thank you!

This repository is no longer dedicated to handling application requests and enhancements
Instead please use the following repository: https://github.com/Microsoft/ALAppExtensions

Event request was moved to the mentioned repository: https://github.com/Microsoft/ALAppExtensions/issues/29


Run blog with jekyll

@dalgos
Are you changing to jekyll? 😃
I was thinking about changing my blog to jekyll!


Fix undefined local variable or method error

Fixes the following error
path/to/ruby/2.2.0/gems/jekyll-tidy-0.2.1/lib/jekyll/tidy.rb:36:in `ignore_env?': undefined local variable or method `config' for Jekyll::Tidy:Module (NameError)

We're just killing it today. Thanks for the PR.

@abeMedia Thanks. We've pushed this out as 0.2.2.

@wkirby Awesome! Again, thanks for the speed!


Unsported attribute: distance_off of get_status.

Hallo:
Adapter v0.1.6
Roborock Q7 Max
Nach https://github.com/copystring/ioBroker.roborock/issues/134 und dev Installation kommt die Meldung
`

roborock.0
2023-04-24 22:16:09.749
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:15:09.798
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:14:09.820
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:13:09.753
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:12:09.719
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:11:09.800
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:10:09.868
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:09:09.757
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:08:09.761
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:07:09.770
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

roborock.0
2023-04-24 22:06:09.988
error
Unsported attribute: distance_off of get_status. Please contact the dev to add the newly found attribute of your robot.

`

Hi, müsste in der neuen dev behoben sein.

Hi
mit der neue
`

roborock.0
2023-04-25 08:27:15.616
error
Failed to execute get_room_mapping. Error: Error: Request with id 1053 timed out after 10 seconds for response.102

roborock.0
2023-04-25 08:27:15.593
error
Failed to execute get_clean_summary. Error: Error: Request with id 3691 timed out after 10 seconds for response.102

roborock.0
2023-04-25 08:27:15.592
error
Failed to execute get_carpet_clean_mode. Error: Error: Request with id 3199 timed out after 10 seconds for response.102

roborock.0
2023-04-25 08:27:15.591
error
Failed to execute get_status. Error: Error: Request with id 2676 timed out after 10 seconds for response.102

roborock.0
2023-04-25 08:27:15.590
error
Failed to execute get_multi_map_list. Error: Error: Request with id 4256 timed out after 10 seconds for response.102

roborock.0
2023-04-25 08:27:15.588
error
Failed to execute get_fw_features. Error: Error: Request with id 8656 timed out after 10 seconds for response.102

`


Node.js

This looks incredible!
Is there any way to run this on node.js?
What would I need to set up to make it happen?

Hi!
What exactly is your goal?
You can serve a website from node.js which contains p5.js and p5.scribble.js to draw sketchy things like you can do it with any other webseite too.
Or are you looking to render such images on the server to serve them as static images?

Thanks for your reply.
I wanted to do both - draw things but also render them into *.pngs.
The general problem with JS libraries for *.svg processing that I ran into (without being an expert myself yet) is that JS requires the browser environment to parse / manipulate the DOM which is not given in node.js.
So you have two options: use a browser like PhantomJS or you use JSDOM.
There were other problems I encountered with other libraries, too, that were written with JS and a browser in mind.
Any ideas what - if anything - I would need to take care of to make p5 work with node?

Sorry for the late response.
I think the only way is to use phantom.js at the moment.
I was able to run p5.js with phantom.js headless but not the p5.scribble.js lib.
Trying to get this working in the next days.

Is this still a point of interest for you?

Hi, yes!
This is still of interest to me!

Hi!
I've changed the lib to work with a reference to the p5 instance. This was necessary to get this work with phantomJS. In the example directory you will find a phantomjs fiolder with the bar graph example in it.
Also you can use this as a skeleton project for further work with phantomJS and p5.js.
Hope this helps you! Let me know if you need further help with this.

Thank you! I will look into this over the next days!


Make docutils and requests non-mandatory

@takluyver Can this be closed? There's no explanation.

There's no explanation.

The title is the explaination itself.

@KOLANICH Can you explain the reasoning for removing the dependencies?

The features of flit using these dependencies are not needed on CI for me and I don't want CI to install unneeded packages. This is both an overhead and a security risk.

If you really don’t want them installed, you can install flit with pip using the ‘—no-dependencies’ flag and handle installing the dependencies you want manually.

It is not a correct approach.

@KOLANICH out of curiosity, how are you using flit such that you don’t require those dependencies?

Just install it and then install packages relying on flit to be built. I install packages from git repos of their authors, not from pypi, so I have to build them locally, but I don't need to upload anything to pypi (for my packages I use setuptools and my position is that my (and not only my) packages should be installed from their git, when it is feasible). ReadMe conversion is also not needed, I don't run CI pipelines to make them show ReadMe of packages, also I prefer MarkDown to ReSructuredText.

@KOLANICH Ah, that might be the problem. Packages shouldn't require flit to be built.  flit is primarily a standalone build front-end and development tool.
The build backend should only require flit_core, which doesn't have either of the dependencies you listed.  If you're not using flit as a standalone tool and build front-end, there's no need to install flit or its dependencies.  If a package you are building has listed flit as a dependency, you may want to open a PR to have them change their dependency to flit_core instead.

Thanks for the info. So I probably should remove flit from my base docker image, and for a frontend I can use pep517.

Yeah, pep517 should work.  The latest versions of pip can also build pep517 packages.

Yeah, I'd generally recommend using pip as a frontend. pep517 has a kind of demo frontend, but it's been a recurring source of complaints (people assume it's meant to be a general purpose frontend and then file bugs when it doesn't do what they want), so we're planning to split it out to make the core API clearer.

How can I insgall flit_core without installing flit using pip (and without using pypi or doing it manualy)? Should flit_core have an own pyproject.toml?

How can I insgall flit_core without installing flit using pip (and without using pypi or doing it manualy)?

I'm not exactly sure what your aim is. Normally, a frontend like pip will install flit_core automatically as part of the build process. If you want to install it separately, the obvious way is to get it from PyPI with pip install flit_core.

Should flit_core have an own pyproject.toml?

It does!. So if you really need to install it from source, you can use pip on the directory containing that.


Workspace dependencies are not resolved correctly

Hello,
I'm having trouble using cargo-bitbake to generate a recipe for a crate that has workspace dependencies. For example, if a dependency is declared like this in one of the workspace members:
foo123 = { workspace = true }

I have the following error:
error: no matching package named `foo123` found
location searched: registry `crates-io`
required by package `foo v0.1.0 (...)`

Something interesting is that if instead of foo123 I use a name that exists on crates.io it will resolve to this crate instead of the crate defined in the workspace Cargo.toml.
I made a minimal example that reproduces this bug here.
Please let me know if I can be of any help for resolving this issue!

Hello, just submitted a PR with a solution, if it's still an issue for you please try my fork and and let me know here whether it fixed the problem for you.
cargo install --git https://github.com/Bravo555/cargo-bitbake.git --branch upgrade-deps


Option to skip prompt and use defaults

Like the --yes flag in npm init?

@egoist I'd love that

Try<EMAIL_ADDRESS>which ships the --yes -y flag for this.


Cell selection in Schedule Menu cause other cells to change in same column

Cell selection in Schedule Menu cause other cells to change in the same column.   Caused by  modifying the state of the model from within an editor.

resolved in patch 6.2.8


gazebo process dies after loading ros2 controller

Hey,
I was able to run the cart_position_example demo a while back but now, all of a sudden when I launch the demo I get the following error after the joint trajectory controller is loaded -
[gzserver-1] [INFO] [1685047419.007274481] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[gzserver-1] [INFO] [1685047419.007380154] [joint_trajectory_controller]: Using 'splines' interpolation method.
[gzserver-1] [INFO] [1685047419.008779607] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[gzserver-1] [INFO] [1685047419.011421384] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ros2-6] Sucessfully loaded controller joint_trajectory_controller into state active
[INFO] [ros2-6]: process has finished cleanly [pid 34551]
[ERROR] [gzserver-1]: process has died [pid 34363, exit code -11, cmd 'gzserver -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so'].

I tried manually loading the controllers and it happens repeatedly after I load the joint_trajectory_controller

This info is not enough to help you, can you provide all the log ?

Yes sure!
 ros2 launch gazebo_ros2_control_demos cart_example_position.launch.py
[INFO] [launch]: All log files can be found below /home/vrex/.ros/log/2023-05-25-19-36-43-358833-robo-133196
[INFO] [launch]: Default logging verbosity is set to INFO
[INFO] [gzserver-1]: process started with pid [133198]
[INFO] [gzclient-2]: process started with pid [133200]
[INFO] [robot_state_publisher-3]: process started with pid [133202]
[INFO] [spawn_entity.py-4]: process started with pid [133204]
[robot_state_publisher-3] [INFO] [1685057804.730060747] [robot_state_publisher]: got segment cart
[robot_state_publisher-3] [INFO] [1685057804.730194634] [robot_state_publisher]: got segment slideBar
[robot_state_publisher-3] [INFO] [1685057804.730213547] [robot_state_publisher]: got segment world
[spawn_entity.py-4] [INFO] [1685057805.219355615] [spawn_entity]: Spawn Entity started
[spawn_entity.py-4] [INFO] [1685057805.219770010] [spawn_entity]: Loading entity published on topic robot_description
[spawn_entity.py-4] /opt/ros/humble/local/lib/python3.10/dist-packages/rclpy/qos.py:307: UserWarning: DurabilityPolicy.RMW_QOS_POLICY_DURABILITY_TRANSIENT_LOCAL is deprecated. Use DurabilityPolicy.TRANSIENT_LOCAL instead.
[spawn_entity.py-4]   warnings.warn(
[spawn_entity.py-4] [INFO] [1685057805.222041022] [spawn_entity]: Waiting for entity xml on robot_description
[spawn_entity.py-4] [INFO] [1685057805.223898228] [spawn_entity]: Waiting for service /spawn_entity, timeout = 30
[spawn_entity.py-4] [INFO] [1685057805.224297948] [spawn_entity]: Waiting for service /spawn_entity
[spawn_entity.py-4] [INFO] [1685057806.229527477] [spawn_entity]: Calling service /spawn_entity
[spawn_entity.py-4] [INFO] [1685057806.348208767] [spawn_entity]: Spawn status: SpawnEntity: Successfully spawned entity [cartpole]
[gzserver-1] [INFO] [1685057806.476919037] [gazebo_ros2_control]: Loading gazebo_ros2_control plugin
[gzserver-1] [INFO] [1685057806.480847009] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in namespace: /
[gzserver-1] [INFO] [1685057806.481034493] [gazebo_ros2_control]: Starting gazebo_ros2_control plugin in ros 2 node: gazebo_ros2_control
[gzserver-1] [INFO] [1685057806.482027798] [gazebo_ros2_control]: Loading parameter files /home/vrex/workspaces/ros2_ws/install/gazebo_ros2_control_demos/share/gazebo_ros2_control_demos/config/cartpole_controller.yaml
[gzserver-1] [INFO] [1685057806.517989576] [gazebo_ros2_control]: connected to service!! robot_state_publisher
[gzserver-1] [INFO] [1685057806.522457626] [gazebo_ros2_control]: Recieved urdf from param server, parsing...
[INFO] [spawn_entity.py-4]: process has finished cleanly [pid 133204]
[INFO] [ros2-5]: process started with pid [133310]
[gzserver-1] [WARN] [1685057806.691381274] [gazebo_ros2_control]: The position_proportional_gain parameter was not defined, defaulting to: 0.1
[gzserver-1] [INFO] [1685057806.733179591] [gazebo_ros2_control]: Loading joint: slider_to_cart
[gzserver-1] [INFO] [1685057806.733421418] [gazebo_ros2_control]: 	State:
[gzserver-1] [INFO] [1685057806.733474243] [gazebo_ros2_control]: 		 position
[gzserver-1] [INFO] [1685057806.733898139] [gazebo_ros2_control]: 			 found initial value: 1.000000
[gzserver-1] [INFO] [1685057806.733930568] [gazebo_ros2_control]: 		 velocity
[gzserver-1] [INFO] [1685057806.734117337] [gazebo_ros2_control]: 		 effort
[gzserver-1] [INFO] [1685057806.734193986] [gazebo_ros2_control]: 	Command:
[gzserver-1] [INFO] [1685057806.734217804] [gazebo_ros2_control]: 		 position
[gzserver-1] [INFO] [1685057806.735019751] [resource_manager]: Initialize hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.736212343] [resource_manager]: Successful initialization of hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.736489599] [resource_manager]: 'configure' hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.736497187] [resource_manager]: Successful 'configure' of hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.736502492] [resource_manager]: 'activate' hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.736507030] [resource_manager]: Successful 'activate' of hardware 'GazeboSystem'
[gzserver-1] [INFO] [1685057806.737123941] [gazebo_ros2_control]: Loading controller_manager
[gzserver-1] [WARN] [1685057806.919715853] [gazebo_ros2_control]:  Desired controller update period (0.01 s) is slower than the gazebo simulation period (0.001 s).
[gzserver-1] [INFO] [1685057806.921863472] [gazebo_ros2_control]: Loaded gazebo_ros2_control.
[gzserver-1] [INFO] [1685057807.632086956] [controller_manager]: Loading controller 'joint_state_broadcaster'
[gzserver-1] [INFO] [1685057807.688403811] [controller_manager]: Setting use_sim_time=True for joint_state_broadcaster to match controller manager (see ros2_control#325 for details)
[gzserver-1] [INFO] [1685057807.708741177] [controller_manager]: Configuring controller 'joint_state_broadcaster'
[gzserver-1] [INFO] [1685057807.709196433] [joint_state_broadcaster]: 'joints' or 'interfaces' parameter is empty. All available state interfaces will be published
[ros2-5] Sucessfully loaded controller joint_state_broadcaster into state active
[INFO] [ros2-5]: process has finished cleanly [pid 133310]
[INFO] [ros2-6]: process started with pid [133367]
[gzserver-1] [INFO] [1685057809.047349793] [controller_manager]: Loading controller 'joint_trajectory_controller'
[gzserver-1] [INFO] [1685057809.142096569] [controller_manager]: Setting use_sim_time=True for joint_trajectory_controller to match controller manager (see ros2_control#325 for details)
[gzserver-1] [INFO] [1685057809.161664595] [controller_manager]: Configuring controller 'joint_trajectory_controller'
[gzserver-1] [INFO] [1685057809.161949530] [joint_trajectory_controller]: No specific joint names are used for command interfaces. Using 'joints' parameter.
[gzserver-1] [INFO] [1685057809.162027822] [joint_trajectory_controller]: Command interfaces are [position] and state interfaces are [position velocity].
[gzserver-1] [INFO] [1685057809.162096532] [joint_trajectory_controller]: Using 'splines' interpolation method.
[gzserver-1] [INFO] [1685057809.163305651] [joint_trajectory_controller]: Controller state will be published at 50.00 Hz.
[gzserver-1] [INFO] [1685057809.164476862] [joint_trajectory_controller]: Action status changes will be monitored at 20.00 Hz.
[ros2-6] Sucessfully loaded controller joint_trajectory_controller into state active
[INFO] [ros2-6]: process has finished cleanly [pid 133367]
[ERROR] [gzserver-1]: process has died [pid 133198, exit code -11, cmd 'gzserver -slibgazebo_ros_init.so -slibgazebo_ros_factory.so -slibgazebo_ros_force_system.so'].

Thank you for helping me out!

Another peculiar thing that is happening is:
when I run ros2 action list
I can see the joint trajectory controller /joint_trajectory_controller/follow_joint_trajectory
But when I run the node I get the following:
$ros2 run gazebo_ros2_control_demos example_position
node created
terminate called after throwing an instance of 'std::runtime_error'
  what():  could not get action server
[ros2run]: Aborted

Update on this:
Strangely, the velocity example runs without any issues for me.
While the position example keeps on dying!
Can it be an issue with the action server?


Mod disables the "priority" selection button in Clan screen, for companion-led parties

This is for latest mod version, and game version 1.1.3
The button to select (neutral/aggressive/defensive) is unclickable with this mod installed.

That's interesting.
Are you certain that the mod does it? Did you try to look at it with and without the mod?

Yes, I disabled the mod and the button works again. Enabled it and it stops working. Later on I installed Harmony, UIExtenderEx, Butterlib (didn't have them at the time of my first post), and the button works with RTS Camera.

That's good to know. I don't think the mod relies on any of them, so it's curious to hear that something helped it.

UIExtenderEx does fix something related to this. I am adding this as a dependency.


Singleton value not coerced to array

In conform-zod, singleton values are coerced to arrays. This allows usage of multiple checkboxes with the same name where a single value is selected. conform-to-valibot does not wrap singleton values, so checkboxes with a single value selected do not work.
For example,
// Schema
v.object({
  tasks: v.array(v.string()),
});

// Data
{
  tasks: 'foo'
}

// Expected parseWithValibot:
{
  status: 'success',
  value: { tasks: ['foo'] },
}

// Actual parseWithValibot:
{
  status: 'error',
  error: { tasks: [ 'Invalid type: Expected Array but received "foo"' ] }
}

Hi @evaogbe
Thank you for always finding the problem.
I fixed it, so please try it.


Question: Current types limitation

Hello guys,
First, this is great work, congrats!
I have been playing around and created a custom (but simple) .wit, implemented in Python a function defined in that WIT file, built the .wasm module and then I tried to call the function from a Rust application.
I was able to provide a custom record type as parameter of the function and the component built succeeded (I mean, I generated the .wasm file correctly). However, using either the wasmer or wasmtime crates, the supported set of types you can use in the call function as Value/Val is very small. Ref: https://docs.rs/wasmtime/latest/wasmtime/enum.Val.html
So my question is, am I missing something or it is actually not possible to use a custom record right now as parameter or return type of a function?
I know this is probably not related to the componentize-py tool but a more general question, but I am not sure which would be the best place to ask.

Hi, @miguelaeh.  Good question.  The Val type you linked to is part of Wasmtime's API for working with core Wasm modules, whereas componentize-py and WIT use the Component Model API: https://docs.rs/wasmtime/latest/wasmtime/component/index.html.
The equivalent call function and Val type in that API are https://docs.rs/wasmtime/latest/wasmtime/component/struct.Func.html#method.call and https://docs.rs/wasmtime/latest/wasmtime/component/enum.Val.html, respectively.  However, you probably don't want to use either of those.  Instead, you'll want to use https://docs.rs/wasmtime/latest/wasmtime/component/macro.bindgen.html, which will generate host bindings for your .wit file, and those bindings will generally be easier to use and more efficient than using the dynamic call/Val API.  See e.g. https://github.com/bytecodealliance/componentize-py/blob/main/src/test/tests.rs for an example of using that macro.  We should probably add a simple example to the examples directory, too, since the tests are pretty complicated.
Hope that helps.  I'm happy to answer any follow-up questions here, and https://bytecodealliance.zulipchat.com/#narrow/stream/217126-wasmtime is also a great place to ask questions.

Thank you very much @dicej for the clarifications!
I will try with the path you mentioned and let you know.
Feel free to close this issue since is actually not an issue.

Hi @miguelaeh,
I just pushed a complete test case which works for me here: https://github.com/dicej/pipeless.
Note that it is important to build the host with the --release flag, since the default debug build is much slower.  Cranelift (which is the compiler Wasmtime uses to compile Wasm to native code) has a lot of work to do with components generated by componentize-py since they include the entire CPython interpreter and native library code.  Even with --release compiling the component takes over 5 seconds on my Mac M2 Pro, and the debug build takes a lot longer.
For reference, you can pre-compile a .wasm file to a native .cwasm file using wasmtime compile if performance is an issue.  You can also use instantiate_pre instead of instantiate if you find you need to make a lot of instantiations of the same component.

One more thing: I noticed you mentioned that the OS is killing your process before it finishes compiling the component.  That might mean it's running out of memory, which --release might help with.  If that doesn't help, you might need to use wasmtime compile to generate a .cwasm on a machine with more memory.


Numpy array content not displayed fully in preview version

In the recent preview versions the displays of numpy arrays has been changed so that it is impossible to see the content of longer arrays as they get cut-off:

In the regular version (screenshot from Version 17.7.5), the content of the same variable can be accessed by scrolling vertically.

Removing the functionality to display longer arrays is ill-conceived. Please add back.

It's a bug in debugpy, see https://github.com/microsoft/debugpy/issues/1408. Going to close this one and please track the issue there. Thanks!


Duplicated records

I am getting duplicated records in big query compared to the offsets in kafka for the same topic. Is this an an expected results? Thanks!

Hey infinex, that doesn't sound like an expected result in general.  Is every single record being duplicated, or just some? Is there any additional detail you can give us?
My immediate thought is that you may be seeing duplicate records if your connector is encountering a lot of errors. If the connector encounters an error when sending rows to BQ, it will retry those rows, because it has no way of evaluating if some of those rows succeeded.
However, I will note that kcbq doesn't promise only once delivery. If it's really important that you not see duplicate rows in BQ, the best solution would be implement some sort of deduplicated view within BQ.

Hi mtagle, it is some of the records being duplicated. I will try to deduplicate from the BQ side.Thanks!


adding project tts

adding Kom tts Making Text to  speech by openai model to present the repository

Thank you for your contributing :)


Fix #63490

Fix #63490

Yup... I broke it here somehow: https://github.com/Microsoft/vscode/commit/af5f77bb5f21e740a32d921c5570297c250f2d3d#r31381307


Security Issue Fix - SECURITY-3214

https://issues.jenkins.io/browse/SECURITY-3214 Security Issue Fix

Testing done

### Submitter checklist
- [x] Make sure you are opening from a **topic/feature/bugfix branch** (right side) and not your main branch!
- [x] Ensure that the pull request title represents the desired changelog entry
- [x] Please describe what you did
- [x] Link to relevant issues in GitHub or Jira
- [x] Link to relevant pull requests, esp. upstream and downstream changes
- [x] Ensure you have provided tests - that demonstrates feature works or fixes the issue

Looks good to me as well.


MRG, ENH: Add sphere method to decimate_surface

Closes #7259
@christian-oreilly can you see how well method='sphere' works once you have a suitable (not broken, no holes, etc.) high-res mesh?

@christian-oreilly any chance you can check and report back here if it's good to go from your end?

BTW @agramfort this is part of what we'll need for #6784 so feel free to look / try / merge if you're happy