Close hamburger menu when navbar link is clicked

This pull request modifies the JavaScript code to ensure that the hamburger menu is closed when a user clicks on any link inside the navbar.

It adds an event listener to all navbar links, which removes the 'active' class from the navbar and closes the hamburger menu by removing the 'bx-x' class from the menu icon when a link is clicked.

This enhances user experience by providing consistent behavior and ensuring that the menu does not remain open unnecessarily after a selection is made.

https://github.com/Suchitra-Sahoo/AgriLearnNetwork/assets/140513098/fa91c1d4-3a15-4fbd-8039-6483166ea19b
Due to size limitations, the video quality is not good. @Suchitra-Sahoo

@Suchitra-Sahoo check this please


optimize consume to return bigger nulks on default when feasable

indirectly related to #238
if neither gqp nor xg/yg was supplied, we can handle a much larger chunk (a reasonable size can be 3K instead of 100).
in case we also need to supply data, we can do it "reactively" without postponing reponse, using a chunked response.
if gqp/xg/yg were supplied, we should stick to a smaller chunk size to not over burden the system.
This translate directly to better performance of regular consumes → dc sync should benefit a lot from this.

@nruppin @YoniMataraso
This change should be reflected in documentation -
https://github.com/thomsonreuters/CM-Well/blob/master/docs/API.Stream.ConsumeNextChunk.md

I agree @Ivan-Shestakov - we will update the documentation.

Gilad, please specify exactly what to add to documentation and where.
What does "we should stick to a smaller chunk size" mean? CM-Well determines the chunk size and not the user, correct? Are you saying that if xg/yg/gqp is used, CMW returns a chunk size of about 100 (and with no traversal, 3000)? Is this relevant to both consume and bulk-consume?

@nruppin bulk-consume cannot be "expanded" at all. xg/yg/gqp will be ignored.
this only relevant to regular consume.
Up until now, consume started by performing a sorted search with a length of 100.
Now, the default is 3000, unless xg/yg/gqp is also supplied, which in this case it is still 100.


weird behaviour on x86 (OpenBSD)

On OpenBSD x86 architecture, I have a weird behaviour when using M_CLI2.
I first noticed it while build fpm on x86, and next reduced the example code to the following:
program show
  use M_CLI2, only : set_args, lget, rget, sget, igets
  implicit none
  call set_args('-l F')
  print *, "lget", lget('l')
end program show

Please note, that there is no problem with real and rget (I don't specialy tested others types).
On x86_64, the program seems to work well:
$ ./test
 lget F
$ ./test -l
 lget T
$ ./test -l xxx
 lget T
$ ./test -h
./test --version F
 --usage F
 --help F
 --version F -l F

On x86, I have the following behaviour:
$ ./test
 lget*get_anyarray_l* expected one value found 3
$ ./test -l
 lget T
$ ./test -l xxx
 lget*get_anyarray_l* bad logical expression for l=XXX
 F
$ ./test -h
 lget T

I tested with both gfortan 8.4.0 and gfortran 11.2.0 (both available on OpenBSD) with the same result.

Explicitly using the "F" value on the definition is correct, but actually using it on the command line is not doing what you expect; it should be left off on the command line; but that is not the problem.  I cannot reproduce the behavior so far.
Something seems messed up in the dictionary, so I would normally ask you to run "./test  .... -usage", but it looks like the -usage switch might not work either;  so can you run this program instead?
 program show
use M_CLI2, only : set_args, lget, rget, sget, igets
use M_CLI2, only : print_dictionary
use M_CLI2, only : args, remaining, unnamed

implicit none
   call set_args('-l F')
   print *, "lget", lget('l')
   call print_dictionary('Dictionary')
   print *,'ARGS'
   write(*,"('[',a,']')")args
   print *,'REMAINING'
   write(*,"('[',a,']')")remaining
   print *,'UNNAMED'
   write(*,"('[',a,']')")unnamed
end program show

Are you using the latest version of M_CLI2 or a specific version? (ie. is there a tag in the fpm.toml file for M_CLI2, assuming you are building via fpm?)
Had you used M_CLI2 on BSD before?  I hope a recent change did not break something.
I meant to just make a "trivial" change to the code style, as I tend to almost always use ".eq.,.lt.,...." and wanted to change it to "==, <, ...";  still passed my QA and the CD/CI tests that are automatically triggered by a "git push" but I do not have a BSD platform in the list (maybe there is one available now);  and do not have up on my own machine right now.

I am using M_CLI2 ea6bbffc1c2fb0885e994d37ccf0029c99b19f24 (it is the wanted version for building fpm 0.7.0).
My original problem was to build fpm on x86, so I don't have fpm to build M_CLI2. I am using M_CLI2/src/Makefile to build the test program (I added it with examples).
It is the first time that M_CLI2 is tried. I don't know if previous version was working or not. It could also been a compiler codegen bug, as we don't have so many compiled fortran programs in OpenBSD).
My original problem is we (at OpenBSD) recently ported fpm to ports infrastructure (packaged third parties programs). I did the work on x86_64, and once commited, it is also build on others architectures. But while building on x86, it failed, and it looks like that arguments were corrupted (below, it is an extract of build log, I simplified it a bit):
# build the bootstrap (stage0)
cd /pobj/fpm-0.7.0/build-i386/stage0
/usr/bin/env FPM_FC="gfortran"  FPM_FFLAGS="-O2 "  FPM_CC="cc"  FPM_CFLAGS="-O2 -pipe  "  FPM_CXX="c++"
FPM_CXXFLAGS="-O2 -pipe  "  FPM_LDFLAGS=""  gfortran -O2  -o "/pobj/fpm-0.7.0/build-i386/stage0/fpm" "/pobj/fpm-0.7.0/fpm-0.7.0.F90"

# build fpm (stage1) using the bootstrap (stage0)
cd /pobj/fpm-0.7.0/fpm-0.7.0
/usr/bin/env FPM_FC="gfortran"  FPM_FFLAGS="-O2 "  FPM_CC="cc"  FPM_CFLAGS="-O2 -pipe  "  FPM_CXX="c++"  FPM_CXXFLAGS="-O2 -pipe  "  FPM_LDFLAGS="" "/pobj/fpm-0.7.0/build-i386/stage0/fpm" build  --profile release  --verbose
*get_anyarray_l* bad logical expression for verbose=RELEASE
*get_anyarray_l* bad logical expression for list=RELEASE
*get_anyarray_l* bad logical expression for show-model=RELEASE
*get_anyarray_l* bad logical expression for tests=RELEASE
*get_anyarray_l* bad logical expression for no-prune=RELEASE
[Error] Failed to change directory to 'release'
STOP 1
*** Error 1 in devel/fpm (Makefile:78 'do-build')

So I tried to reduce the problem to simpler reproducer.
With your program, I have the following output:
$ ./test .... -usage
 lget T
Dictionary
KEYWORD  SHORT PRESENT VALUE
version        F        [F    F]
usage          T        []

UNNAMED
000001[....  ]
 ARGS
[
 REMAINING
[]
 UNNAMED
[....  ]

That gives a hint;  makes me want to look at the procedures that preprocess the command line for subcommands and response files and nulls versus spaces in strings.  I tried  a CD/CI setup for github for OpenBSD but it did not work right, currently do not have enough room to a full install of OpenBSD so will probably have to boot off a stick to get a nice test
environment.  The output should have looked like this, so short names are wrong, strings have duplicates, etc. That version of M_CLI2 has been around for a while on a lot of platforms, so a bit surprised so far. Looking at your compiler options as well, as those are different than any particular build I did.  Thanks for all the details, that helps a lot; but unless I get lucky I probably need to stand up an OS (it is on my short list anyway). It would be useful to know if you use a standalone build like
wget https://raw.githubusercontent.com/urbanjost/index/main/bootstrap/fpm.F90
gfortran fpm.F90 -o fpm_test
that would eliminate a few variables.  Great to see fpm being added to the bundle.
 lget .
 ARGS
[
 REMAINING
[]
 UNNAMED
[...]

I am unsure that github supports OpenBSD as CD/CI.
Regarding installing OpenBSD for testing, it should be relatively simple under qemu, with some tricks:

use i386 (it failed on this architecture, but run fine under amd64)

i386 architecture is x86 under Linux, and amd64 is x86_64

once base system installed, install a package for get gfortran

as root: pkg_add g95%8
it will install gfortran 8.4.0 (package named g95, the %8 is for selectionning 8 serie without asking)
please note that the binary is named egfortran (as all gcc stuff from packages is prefixed with e)

optionally, if you want some development tools: pkg_add git gmake wget

The standalone build, built fine but run badly... (it is somehow what the port was doing):
$ ftp -o fpm.F90 'https://raw.githubusercontent.com/urbanjost/index/main/bootstrap/fpm.F90'
Requesting https://raw.githubusercontent.com/urbanjost/index/main/bootstrap/fpm.F90
100% |*********************************************************************************************|   966 KB    00:01
989750 bytes received in 1.54 seconds (625.70 KB/s)
$ egfortran fpm.F90 -o fpm_test
$ ./fpm_test
*get_anyarray_l* expected one value found 3
$ ./fpm_test -h

 build [--compiler COMPILER_NAME] [--profile PROF] [--flag FFLAGS] [--list]
       [--tests] [--no-prune]
 help [NAME(s)]
 new NAME [[--lib|--src] [--app] [--test] [--example]]|
          [--full|--bare][--backfill]
 update [NAME(s)] [--fetch-only] [--clean] [--verbose]
 list [--list]
 run  [[--target] NAME(s) [--example] [--profile PROF] [--flag FFLAGS] [--all]
      [--runner "CMD"] [--compiler COMPILER_NAME] [--list] [-- ARGS]
 test [[--target] NAME(s)] [--profile PROF] [--flag FFLAGS] [--runner "CMD"]
      [--list] [--compiler COMPILER_NAME] [-- ARGS]
 install [--profile PROF] [--flag FFLAGS] [--no-rebuild] [--prefix PATH]
         [options]
 clean [--skip] [--all]

$ git clone https://github.com/urbanjost/M_CLI2
Cloning into 'M_CLI2'...
remote: Enumerating objects: 7382, done.
remote: Counting objects: 100% (520/520), done.
remote: Compressing objects: 100% (314/314), done.
remote: Total 7382 (delta 331), reused 330 (delta 196), pack-reused 6862
Receiving objects: 100% (7382/7382), 29.16 MiB | 709.00 KiB/s, done.
Resolving deltas: 100% (3831/3831), done.
  Due to time constraints will probably not till tomorrow that I get a good look at it; but plan to have a workaround soon; in a clone; and then push a PR and get gfortran bugzilla report in, I suspect.

I updated the github project M_CLI2 and put in a Pull Request for fpm to change the fpm.toml file to use the new version of M_CLI2, and it passed the built-in CD/CI tests; and has passed all the basic tests in my OpenBSD instance. Thanks for the help on qemu. I updated that one line on the bootstrap version from my ID;  the bleeding-edge single-file on the fpm site should be updated too although I have not tested it yet (will soon). So not sure how long it will be to be in a released version of fpm, as it has to be reviewed and approved, etc. But you should be able to build from my clone or the bootstrap version to test it out.

I confirm that the fix work. Thanks for your work to find the problem.
I have backported it to the port of fpm in order to have a working fpm on all OpenBSD platforms.

Great. Note that there seems to be a problem with the NINT()
intrinsic on the i386 platform that has been discussed and
reported in gfortran ...
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107716

https://groups.google.com/g/comp.lang.fortran/c/cz2mml9WW7w

That a good number of packages build, such as from this site ...
Passed
 M_CLI2        M_color       M_list        M_time
 M_calculator  M_display     M_sort        M_uuid
 M_change      M_history     M_strings     orderpack

but getting
Program received signal SIGABRT: Process abort signal.

from several packages (mine and others). Three that produce
that on this site
 M_draw
 M_intrinsics
 fpm-search

This could be something as simple as my test platform does not
have much memory; still looking.
And not passing tests in several others that may be bugs in
the code on i386 platforms but might be additional compiler/system
issues.
And that a patching PR is in for fpm.
Will try to follow up on other packages and let you know if there is any change to fpm(1) itself that results. Odd that M_intrinsics does not build, but using the single-file build of
https://raw.githubusercontent.com/urbanjost/index/main/bootstrap/fman.F90
compiles with no issue  (which if renamed  "fpm-man"  can be used with fpm(1) so you can do "fpm man  atan2" or most any intrinsic and get a description of the intrinsic).

I did some tests, using OpenBSD i386 and gfortran 11.

M_draw : fail to build. it is expecting termio.h, which doesn't exist on OpenBSD.
M_intrinsics : build fine
fpm-search : build fine (after changing fpm.toml to use HEAD version of M_CLI2)

I needed to run fpm with: fpm build --flag '-static' to avoid an unrelated error at link time when using gfortran 11.
Using gfortran 8, I saw some errors like:
...
M_intrinsics.f90                       done.
main.f90                               done.
M_CLI2.F90                             done.
M_match.f90                            done.
M_strings.F90                          failed.
[ 41%] Compiling...
build/dependencies/M_strings/src/M_strings.F90:8854:35:

 real,parameter    :: XMAXREAL=real(huge(1))
                                   1
Warning: Change of value in conversion from 'INTEGER(4)' to 'REAL(4)' at (1) [-Wconversion]
build/dependencies/M_strings/src/M_strings.F90:6711:50:

 integer                      :: matrix(0:len_trim(a), 0:len_trim(b))
                                                  1
Error: Dummy argument 'a' not allowed in expression at (1)
compilation terminated due to -fmax-errors=1.
<ERROR> Compilation failed for object " build_dependencies_M_strings_src_M_strings.F90.o "
<ERROR>stopping due to failed compilation
STOP 1

Thanks. Did not expect the testing. All makes sense (gfortran version 8 did not implement a feature that version 11 does for M_string, termio.h is something I have a fix for, others built ...). My test platforms probably have insufficient memory, possibly I am building in parallel which would conflate that, ...). I was immediately getting segfaults with no traceback. So looks good all things considered. I will make corresponding package changes to use the new M_CLI2, etc based on your findings.  When I get a moment I should be able to confirm it was just my configurations' limitations and get versions of at least my packages all deployable  with gfortran 11. Very encouraging. Not sure if including fpm-man and fpm-search is anything you desire to add to the fpm package, but feel free if so, and of course feel free not to as well.  So for someone to use the package they will be able to do "pkg_add fpm"? Hoping you will announce the package on comp.lang.fortran, Fortran Discourse, ... (?)

Yes, pkg_add fpm is enough to install fpm on OpenBSD. It is already available on -current (which is the developpment HEAD and the upcoming 7.3 version).
the import of fpm inside OpenBSD has already be announced on Fortran Discourse. For comp.lang.fortran, I am reading it, but I don't have a setup to post, so feel free to announce it if you want.
regarding fpm-man or fpm-search, as we don't mix differents upstreams inside one package, it would be different packages.


Implement AppContext.BaseDirectory for Linux

While you are on it, it may be nice to get the implementation move compatible with CoreCLR and add support for the APP_CONTEXT_BASE_DIRECTORY override. It would alleviate my concern about hardcoding the base directory in corelib as well.
The shared logic in the platform neutral file can be something like:
        private static string s_DefaultBaseDirectory;

        public static string BaseDirectory => (string)GetData("APP_CONTEXT_BASE_DIRECTORY") ??
           (s_DefaultBaseDirectory ?? (s_DefaultBaseDirectory = GetBaseDirectoryCore()));

and GetBaseDirectoryCore() would be existing platform specific impl.


Disclaimer text overlaps over GitHub logo link

Title says all :P
Example screenshots:

Ways to remedy this:
idk, maybe adjust the font with a media call (text might get unreadable though)
or adjusting the margin may be a good way to fix this

Tbh, it's happening on my site too and I have jet to find a solution.

and I have jet to find a solution.

"Finding solution..."

I am such a smart mfer i accidentally pushed to the wrong branch.

neat xd
On Sat, Sep 28, 2024, 23:30 eveee00 @.***> wrote:

image.png (view on web)
https://github.com/user-attachments/assets/5f5bae4e-f997-4c7d-963a-fe34f91ebe22
I am such a smart mfer i accidentally pushed to the wrong branch.
—
Reply to this email directly, view it on GitHub
https://github.com/Icey67/Icey67.github.io/issues/5#issuecomment-2380935389,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AONJBAXJVZKX25B62CKJGSDZY4NYRAVCNFSM6AAAAABPAS2FFOVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGOBQHEZTKMZYHE
.
You are receiving this because you were assigned.Message ID:
@.***>


The JavaScript kit returns a wrong result when using Hono's html helper

Describe the bug
I developed an application that uses the html helper from Hono. The original code is the following one (before bundling it with esbuild):
import { Hono } from 'hono'
import { html } from 'hono/html'

const app = new Hono()

app.get('/:username', (c) => {
  const { username } = c.req.param()
  return c.html(
    html`<!DOCTYPE html>

Hello! ${username}!
`
  );
})

export default app;

Wasm Workers Server returns an "error running the function" message.
Reproduction steps

Create a new folder

Create an index.js file with the content above

Bundle it with esbuild:
npx esbuild index.js --format=esm --bundle --outfile=dist/[...app].js

Run the current main branch of the project and pass the dist folder as an argument:
cargo run -- ../PATH_TO_HONO_PROJECT_FOLDER/dist

Try to access http://localhost:8080/hi

Expected behavior
The following application returns a correct HTML code instead of an error.
Additional context
No response

The error comes from the Response type in the JS kit shims. Currently, we store the body parameter as it is regardless of the type. We assumed this variable would be always a string. However, Hono is returning an String object, which is slightly different than string primitives.


SRE-1226: twistlock chart

twistlock console, defender chart

document: https://docs.twistlock.com/docs/

You need access token...

You can install defender with daemonset or deployment

Default is daemonset.

An access token is also required to pull image, the test cannot be performed and Makefile is dummy.

@cw-sakamoto
Does Ingress need to support twistlock-console?
I think there are use cases that need it. For example, to allow users with specific IP access to twistlock-console on EKS.

https://github.com/chatwork/charts/pull/108#issuecomment-556652526
I forgot ingress!! I'll add template for ingress.


mfcobol-errformat2 has invalid regex

mfcobol-errformat2  has the regex
"^\\*+\\s+COBCH\\d+([a-zA-Z])\\s+([^:]+):\\s+(\\S*)\\((\\d+),(\\d+),.*\\)$"
and the correct should be
"^\\*+\\s+COBCH\\d+([a-zA-Z])\\s+([^:]+):\\s+(\\S*)\\((\\d+),(\\d+).*\\)$"
Link to working regex
https://regex101.com/r/KDdavB/1/

On further investigation, the error format your are using is an old ERRFORMAT"2", which only has
two fields,
**    COBCH0012S Operand WS-DATE is not declared  :
  \\<IP_ADDRESS>\Sistemas\Promax\<IP_ADDRESS>\usuario\xxx.xx\fontes\PW00070S.cbl(90,50)

The new format has three fields:
**    COBCH0368S Exception phrase inappropriate  : CEESAMPLE.cbl(90,18,15)

Therefore, I will be including "mfcobol-errformat2-old" to cover this old product.

Thanks, we are using Net Express V5 and I made some changes to adjust its extension to our work environment.
Other developers at the company are using Net Express, but I prefer to use modern editors. I used sublime with its extension until I discovered that I can compile COBOL with vscode. So, I just have to thank you for developing this extension.

Glad you like it.
I will change the -end to -netx-sx in the problem matcher name, so it is
more reflective of the product it is usable with and update the docs.
On Sat, 6 Jun 2020, 23:43 Vlad Hietala<EMAIL_ADDRESS>wrote:

Thanks, we are using Net Express V5 and I made some changes to adjust its
extension to our work environment.
Other developers at the company are using Net Express, but I prefer to use
modern editors. I used sublime with its extension until I discovered that I
can compile COBOL with vscode. So, I just have to thank you for developing
this extension.
—
You are receiving this because you modified the open/close state.
Reply to this email directly, view it on GitHub
https://github.com/spgennard/vscode_cobol/issues/146#issuecomment-640127544,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ABNWWGDVO275CMVNREWPQEDRVLBAJANCNFSM4NVKKB2A
.


Transition Nuget package to bandwidth user

I created a new nuget user called bandwidth.  We need to transition ownership of the package to that user.

@avbel is this still open?


syscall: Statfs_t on OpenBSD with f_

What version of Go are you using (go version)?

$ go version
go version go1.16.2 openbsd/amd64

Does this issue reproduce with the latest release?

This is related to https://github.com/nats-io/nats-server/issues/2445
I want to build nats-server on openbsd but it fails due to undefined fields in syscall.Statfs_t on OpenBSD.
I tracked it somewhat down and can tell that this syscalls to Statfs work fine when calling with an "F_" prefix:
var fs syscall.Statfs_t
if err := syscall.Statfs(path, &fs); err == nil {
    fmt.Println(fs.F_bavail)
    fmt.Println(fs.F_bsize)
}

The field definition on OpenBSD can be found here: http://man.openbsd.org/statfs
But they look the same  (with that 'f_' prefix) on Linux and Darwin where nats-server builds fine.
What did you expect to see?
This should compile on OpenBSD
var fs syscall.Statfs_t
if err := syscall.Statfs(path, &fs); err == nil {
    fmt.Println(fs.Bavail)
    fmt.Println(fs.Bsize)
}

What did you see instead?
This compiles and runs on OpenBSD fine but is different from other OSes
var fs syscall.Statfs_t
if err := syscall.Statfs(path, &fs); err == nil {
	fmt.Println(fs.F_bavail)
	fmt.Println(fs.F_bsize)
}

syscall is frozen, golang.org/x/sys/unix had the right definitions https://cs.opensource.google/go/x/sys/+/master:unix/ztypes_openbsd_amd64.go;l=87?q=Bavail &ss=go%2Fx%2Fsys:unix%2F&start=31


Update unittests_codecov.yml

Just updating the CodeCov action to v4 due to -
Run unit tests with codecov upload (macos-latest, 3.9)
Node.js 16 actions are deprecated. Please update the following actions to use Node.js 20: codecov/codecov-action@v1. For more information see: https://github.blog/changelog/2023-09-22-github-actions-transitioning-from-node-16-to-node-20/.
There might be a few changes required but hard to test as it will require a real upload to CodeCov.  Happy to troubleshoot if the first run fails.

Thanks


Cannot retrieving posts from profile

Describe the bug
Cannot retrieving posts from profile when logging in
When I delete --login, retrieving posts from profile only gets the last 4 posts and --fast-update is not working
When I delete --login and --fast-update, retrieving posts from profile stops at 12 posts, responses a 401 error (Please wait a few minutes before you try again.)
To Reproduce
instaloader --max-connection-attempts=1 --login=myaccount --stories --no-metadata-json --abort-on=302,400,429,401 username --fast-update
instaloader --max-connection-attempts=1 --stories --no-metadata-json --abort-on=302,400,429,401 username --fast-update
Expected behavior
retrieve all the posts from profile and download them successfully
Error messages and tracebacks
with --login:
Loaded session from C:\Users\XXXXXXX\AppData\Local\Instaloader\session-myaccount.
Logged in as myaccount.
[1/1] Downloading profile username
username\2024-06-03_15-56-51_UTC_profile_pic.jpg already exists
Retrieving posts from profile username.
Downloading stories
[1/1] Retrieving stories from profile username.
[  1/  2] username\2024-07-30_10-11-45_UTC.mp4 exists username\2024-07-30_10-11-45_UTC.jpg exists
Saved session to C:\Users\XXXXXXX\AppData\Local\Instaloader\session-myaccount.
without --login:
--login=USERNAME required to download stories.
Hint: Use --login to download higher-quality versions of pictures.
[1/1] Downloading profile username
username\2024-06-03_15-56-51_UTC_profile_pic.jpg already exists
Retrieving posts from profile username.
[ 1/14] username\2024-07-30_08-41-43_UTC.jpg exists [XXXXXXXXX…] unchanged
[ 2/14] username\2024-07-27_11-43-53_UTC.jpg exists [XXXXXXXXX…] unchanged
[ 3/14] username\2024-07-25_08-17-28_UTC.jpg exists [XXXXXXXXX…] unchanged
[ 4/14] username\2024-07-10_08-26-49_UTC.jpg exists [XXXXXXXXX…] unchanged
Instaloader version
4.12.1 (also test in 4.10.2 , and it shows the same problem)

I can confirm that. When logged in, no posts are downloaded. When not logged in, posts are downloaded (until IG decides to block you).
Happens even without --latest-stamps or --fast-update.
I haven't investigated it much, but no errors are returned. It seems like the query is simply returning no posts.

та же фигня

I did some more investigation.
When running anonymously, the query to fetch a profile contains a edge_owner_to_timeline_media key with a sub-key edges with the first page of posts.
When running logged in, edge_owner_to_timeline_media is present, but it does not list media:
 'edge_owner_to_timeline_media': {'count': 2672,
                                  'edges': [],
                                  'page_info': {'end_cursor': '',
                                                'has_next_page': True}},

This lack of data causes a further query when fetching the posts, but it also returns an empty list:
{'count': 2672,
 'edges': [],
 'page_info': {'end_cursor': '', 'has_next_page': True}}

And the iterator then returns no posts.
(end_cursor is also blank for logged in queries and present when not logged in.)
So, as suspected, IG has changed something on their end, and now the queries are returning as if there are no posts.

Happening in 4.12.1 but I don't think that's a surprise to anyone. I was hopeful when I saw the update that it had been a hotfix for this

I am having the same issue in 4.12.1 using update_cookies() instead of login :(. This worked last night at 7:30PM-ish PST for me.

I am having the same issue in 4.12.1 using update_cookies() instead of login() :(. This worked last night at 7:30PM-ish PST for me.
My last functioning run stopped at [300/665] completely randomly without making the iterator so I thought something must have broken.

I got a "Too many queries in the last time. Need to wait 25 seconds, until 18:21" message at some point and hour or two before the failure so that so that lines up. I know it was working at least then for me

в итоге это исправят или можно искать другие решения?

@ekalin or anyone understood whats changed and how to patch it?

Is there a solution to this problem? Can the request or parameters be changed???

Happening in 4.12.1 but I don't think that's a surprise to anyone. I was hopeful when I saw the update that it had been a hotfix for this

Same, was hoping 4.12.1 was a hotfix, but I can confirm all the above. Logged in doesn't work at all, logged out only grabs a handful or so. I'll be patient (and thankful) for when this is fixed if possible. Godspeed

When not logged in, only the first 12 posts (which are returned in the query for the user profile) are downloaded, and then instaloader exits as if there were no more posts.
So I guess the old query does not work anymore, not even to get further pages.
Inspecting the request in the developer console, I saw that different queries are being made to get the posts[0]. Seems to be the same endpoint, but with different parameters. The top-level object returned is different (and the name does not readily indicate that it is a list of posts), but the structures inside seem similar.
[0] This might also explain why IG has been flagging accounts more often (well, at least for me it is) - no real browser should be using "old" queries.

does not matter what happens this apify instagram scrapper does not goes down
but its expensive as fk cant afford to use that

Unfortunately I cannot change the title, but it would be nice to indicate that downloads are also not working even when not logged in - it stops at 12 posts.
Not that it would matter that much, since no one looks for similar issues before opening another one.

When not logged in, only the first 12 posts (which are returned in the query for the user profile) are downloaded, and then instaloader exits as if there were no more posts.
So I guess the old query does not work anymore, not even to get further pages.
Inspecting the request in the developer console, I saw that different queries are being made to get the posts[0]. Seems to be the same endpoint, but with different parameters. The top-level object returned is different (and the name does not readily indicate that it is a list of posts), but the structures inside seem similar.
[0] This might also explain why IG has been flagging accounts more often (well, at least for me it is) - no real browser should be using "old" queries.

Not to be redundant, but to echo the last part of what you've said, I've been having to dismiss scraping flags/redo captcha a lot more lately. So, anecdotally, I believe that adds credence to your assessment of the (likely) issue. And, as stated, the issue persists whether I'm logged in (no downloads) or not logged in (stops at 12).

Yep problem persists here as well

Is there a way to escalate or prioritize this? Get eyes on it? Idk how GitHub does that kind of thing. All I know is that this tool is dead in the water right now. I'm hoping people are looking at it but just haven't said anything yet.

I got a warning when I visited instagram after some fails with login. Something along the lines of: "stop doing this or you'll be banned" and told me to be careful with my login credentials in case is was somebody else using my account to scrap.

From the DevTools (while logged in), it seems posts are retrieved with a POST to https://www.instagram.com/graphql/query with a body with these parameters (application/x-www-form-urlencoded, not JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Who knows what these parameters mean, where they come from, and what's really necessary. I haven't tried making custom requests.
The return is something like
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

I'm not sure if what's returned inside each node is the same object in the old queries, but it seems to contain what's necessary (meta information and URLs to various versions (resolutions) of the media). For images, it includes resolutions up to 1350x1080, which is not the highest that is (or was) available - probably a further request to the "iphone query" is necessary (and hopefully that has not changed...)
Further queries are similar, changing the variables parameter to include an after key with the received end_cursor. Some of the seemingly random values also changed, but most remain the same.
As a matter of fact, even querying the profile data is done in a similar way (but with different variables). The "old" endpoint still works, but does not seem to be used by the current web interface.

From the DevTools (while logged in), it seems posts are retrieved with a POST to https://www.instagram.com/graphql/query with a body with these parameters (application/x-www-form-urlencoded, not JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Who knows what these parameters mean, where they come from, and what's really necessary. I haven't tried making custom requests.
The return is something like
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

I'm not sure if what's returned inside each node is the same object in the old queries, but it seems to contain what's necessary (meta information and URLs to various versions (resolutions) of the media). For images, it includes resolutions up to 1350x1080, which is not the highest that is (or was) available - probably a further request to the "iphone query" is necessary (and hopefully that has not changed...)
Further queries are similar, changing the variables parameter to include an after key with the received end_cursor. Some of the seemingly random values also changed, but most remain the same.
As a matter of fact, even querying the profile data is done in a similar way (but with different variables). The "old" endpoint still works, but does not seem to be used by the current web interface.

I was able to fix the problem with exactly the same method yesterday :)
According to my review, only "doc_id" is important among these parameters. Of course, I don't know exactly what it is and where it comes from, but in any case, it is necessary to send this parameter.
Of course, the items inside "variables" must be complete.
If you want to continue to use "instaloader", you must be careful to remove "query_hash" parameter. If this parameter is set, you will receive an error.

Из DevTools (при входе в систему) следует, что записи извлекаются с помощью POST-запроса https://www.instagram.com/graphql/queryс телом со следующими параметрами (application/x-www-form-urlencoded, а не JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Кто знает, что означают эти параметры, откуда они берутся и что на самом деле необходимо. Я не пробовал делать пользовательские запросы.
Возврат - это что-то вроде
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

Я не уверен, что то, что возвращается внутри каждого из них, nodeявляется тем же объектом в старых запросах, но, похоже, он содержит то, что необходимо (метаинформацию и URL-адреса различных версий (разрешений) медиа). Для изображений он включает разрешения до 1350x1080, что не является самым высоким из доступных (или доступных) — вероятно, необходим дополнительный запрос к "запросу iPhone" (и, надеюсь, это не изменилось...)
Дальнейшие запросы аналогичны, изменяя variablesпараметр, чтобы включить afterключ с полученным end_cursor. Некоторые из, казалось бы, случайных значений также изменились, но большинство осталось прежними.
На самом деле, даже запрос данных профиля выполняется аналогичным образом (но с другим variables). «Старая» конечная точка все еще работает, но, похоже, не используется текущим веб-интерфейсом.

Вчера мне удалось решить эту проблему точно таким же способом :)
Согласно моему обзору, из этих параметров важен только "doc_id". Конечно, я не знаю точно, что это и откуда берется, но в любом случае этот параметр необходимо отправлять. Конечно, элементы внутри "переменных" должны быть полными.
Если вы хотите продолжать использовать "instaloader", вам следует быть осторожным и удалить параметр "query_hash". Если этот параметр установлен, вы получите сообщение об ошибке.
Я обновил библиотеку и задал новые параметры. Конечно, помимо отправки запроса, следует также обратить внимание на ответ. Способ обработки ответа также необходимо изменить, что я и сделал для себя.

Расскажите ка подробнее

From the DevTools (while logged in), it seems posts are retrieved with a POST to https://www.instagram.com/graphql/query with a body with these parameters (application/x-www-form-urlencoded, not JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Who knows what these parameters mean, where they come from, and what's really necessary. I haven't tried making custom requests.
The return is something like
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

I'm not sure if what's returned inside each node is the same object in the old queries, but it seems to contain what's necessary (meta information and URLs to various versions (resolutions) of the media). For images, it includes resolutions up to 1350x1080, which is not the highest that is (or was) available - probably a further request to the "iphone query" is necessary (and hopefully that has not changed...)
Further queries are similar, changing the variables parameter to include an after key with the received end_cursor. Some of the seemingly random values also changed, but most remain the same.
As a matter of fact, even querying the profile data is done in a similar way (but with different variables). The "old" endpoint still works, but does not seem to be used by the current web interface.

I was able to fix the problem with exactly the same method yesterday :)
According to my review, only "doc_id" is important among these parameters. Of course, I don't know exactly what it is and where it comes from, but in any case, it is necessary to send this parameter. Of course, the items inside "variables" must be complete.
If you want to continue to use "instaloader", you must be careful to remove "query_hash" parameter. If this parameter is set, you will receive an error.
I updated the library and set new parameters. Of course, in addition to sending the request, you should also pay attention to the response. The way the response is processed also needs to be changed, which I handled for myself.

I'm not super technically inclined regarding code. I found references to "query_hash" in instaloadercontext.py, but I don't understand how you'd edit that to something else based on your comment. If this is a temporary/manual fix to get back up until the devs push out a code change, can you please be more detailed in what needs to be done?

From the DevTools (while logged in), it seems posts are retrieved with a POST to https://www.instagram.com/graphql/query with a body with these parameters (application/x-www-form-urlencoded, not JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Who knows what these parameters mean, where they come from, and what's really necessary. I haven't tried making custom requests.
The return is something like
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

I'm not sure if what's returned inside each node is the same object in the old queries, but it seems to contain what's necessary (meta information and URLs to various versions (resolutions) of the media). For images, it includes resolutions up to 1350x1080, which is not the highest that is (or was) available - probably a further request to the "iphone query" is necessary (and hopefully that has not changed...)
Further queries are similar, changing the variables parameter to include an after key with the received end_cursor. Some of the seemingly random values also changed, but most remain the same.
As a matter of fact, even querying the profile data is done in a similar way (but with different variables). The "old" endpoint still works, but does not seem to be used by the current web interface.

I was able to fix the problem with exactly the same method yesterday :)
According to my review, only "doc_id" is important among these parameters. Of course, I don't know exactly what it is and where it comes from, but in any case, it is necessary to send this parameter. Of course, the items inside "variables" must be complete.
If you want to continue to use "instaloader", you must be careful to remove "query_hash" parameter. If this parameter is set, you will receive an error.
I updated the library and set new parameters. Of course, in addition to sending the request, you should also pay attention to the response. The way the response is processed also needs to be changed, which I handled for myself.

I'm not super technically inclined regarding code. I found references to "query_hash" in instaloadercontext.py, but I don't understand how you'd edit that to something else based on your comment. If this is a temporary/manual fix to get back up until the devs push out a code change, can you please be more detailed in what needs to be done? I'm pretty sure most people are "users" of the tool but not as much "understanders" of the tool

maybe you can send a merge request with a fix?

From the DevTools (while logged in), it seems posts are retrieved with a POST to https://www.instagram.com/graphql/query with a body with these parameters (application/x-www-form-urlencoded, not JSON):
av=17841403536203522
__d=www
__user=0
__a=1
__req=5
__hs=19937.HYP:instagram_web_pkg.2.1..0.1
dpr=1
__ccg=UNKNOWN
__rev=1015353162
__s=7yoafm:2is2x5:in7r0j
__hsi=7398530319282566869
__dyn=<big random-looking string>
__csr=<big random-looking string>
__comet_req=7
fb_dtsg=<medium random-looking string>
jazoest=26193
lsd=<small random-looking string>
__spin_r=1015353162
__spin_b=trunk
__spin_t=1722604576
fb_api_caller_class=RelayModern
fb_api_req_friendly_name=PolarisProfilePostsDirectQuery
variables={"data":{"count":12,"include_relationship_info":true,"latest_besties_reel_media":true,"latest_reel_media":true},"username":"XXXXX","__relay_internal__pv__PolarisFeedShareMenurelayprovider":false}   <-- User name, not ID
server_timestamps=true
doc_id=7898261790222653

Who knows what these parameters mean, where they come from, and what's really necessary. I haven't tried making custom requests.
The return is something like
{
  "data": {
    "xdt_api__v1__feed__user_timeline_graphql_connection": {
      "edges": [
        {
          "node": { <POST INFO> }
        },
        .....
      ],
      "page_info": {
        "end_cursor": "3417269810470705039_56051830",
        "has_next_page": true,
        "has_previous_page": false,
        "start_cursor": null
      }
    },
    "xdt_viewer": {
      "user": {
        "id": "XXXX"   < Not the requested user. My user ID?
      }
    }
  },
  "extensions": {
    "is_final": true
  },
  "status": "ok"
}

I'm not sure if what's returned inside each node is the same object in the old queries, but it seems to contain what's necessary (meta information and URLs to various versions (resolutions) of the media). For images, it includes resolutions up to 1350x1080, which is not the highest that is (or was) available - probably a further request to the "iphone query" is necessary (and hopefully that has not changed...)
Further queries are similar, changing the variables parameter to include an after key with the received end_cursor. Some of the seemingly random values also changed, but most remain the same.
As a matter of fact, even querying the profile data is done in a similar way (but with different variables). The "old" endpoint still works, but does not seem to be used by the current web interface.

I was able to fix the problem with exactly the same method yesterday :)
According to my review, only "doc_id" is important among these parameters. Of course, I don't know exactly what it is and where it comes from, but in any case, it is necessary to send this parameter. Of course, the items inside "variables" must be complete.
If you want to continue to use "instaloader", you must be careful to remove "query_hash" parameter. If this parameter is set, you will receive an error.
I updated the library and set new parameters. Of course, in addition to sending the request, you should also pay attention to the response. The way the response is processed also needs to be changed, which I handled for myself.

Are you submitting something so this can be fixed based on your findings? Can you tell other people what to do/fix for themselves? The tool is dead for everyone except you apparently lol. Please let us know what to do from a not-high-level view

If @hmobinizade has a working version, even if only partially working, it would be really helpful if you could share it.
It does not seem to me as something simple to fix. Querying is relatively easy: as noted, only variables and doc_id are necessary, and doc_id is always<PHONE_NUMBER>222653 when querying the list of posts. I suppose this is the new equivalent to queryhash. One can even do a GET instead of a POST.[0] This would need some changes to the querying function, to support both "new-style" queries and the old ones.
[0] This might trigger IG's scraper detection, but so could sending a request without all the parameters that the interface sends.
The object returned, however, is different than what the current version expects. It seems like it is what is returned is the same as what the "iphone struct" returns, but I need to confirm that. So a quick hack might be to create a Post using from_iphone_struct().
Ideally, though, a more through restructuring of the code seems ideal: if the "iphone struct" is now the standard, then perhaps the old code can be removed and replaced by the "iphone struct" code, which is not really iphone-specific anymore. The code for downloading a single post would need to be changed, in other to use a query that returns that post's metadata in the new format. I have not been able to find such a query yet.
On the other hand, it seems that, contrary to my initial statement, the highest resolution versions are returned by this query, so no there is no need for futher queries.

OK, I will explain the changes I made in order.
Of course, there are many changes and it may confuse you! Please ask if you have any questions, I will help as much as I know.
I hope this answer is helpful for you too :)
you need to customize library.

change "structures.py" , "get_posts()" method:

`def get_posts(self, end_cursor = None):
    if end_cursor is not None:
        _query_variables = {"after": end_cursor, "before": None,
             "data": {"count": 50, "include_relationship_info": True,
                      "latest_besties_reel_media": True, "latest_reel_media": True},
                     "first": 12, "last": None, "username": self.username,
                     "__relay_internalpvPolarisFeedShareMenurelayprovider": False}

    else:
        _query_variables = {"data": {"count": 50, "include_relationship_info": True, "latest_besties_reel_media": True,
                  "latest_reel_media": True}, "username": self.username,
         "__relay_internalpvPolarisFeedShareMenurelayprovider": False}

    _query_referer = 'https://www.instagram.com/{0}/'.format(self.username)

    data = self._context.graphql_query(
        '', {**_query_variables}, _query_referer
    )

    posts = []
    posts_node = data['data']['xdt_apiv1feed__user_timeline_graphql_connection']['edges']
    page_info = data['data']['xdt_apiv1feed__user_timeline_graphql_connection']['page_info']

    for node in posts_node:
        # posts.append(node["node"])
        post = Post(self._context, node["node"], self)
        posts.append(post._asdict())

    return posts, page_info

`
Here the request is prepared and the response is processed.
*** You can do this answer processing as it suits your cartoon. ***
In addition, "end_cursor" also means an offset. At the end of each request, if "has_next_page" is equal to "True", this "end_cursor" value is also present, and by sending it in the next request, you can get the next page :)

change :

`def graphql_query(self, query_hash: str, variables: Dict[str, Any],
referer: Optional[str] = None, rhx_gis: Optional[str] = None) -> Dict[str, Any]:
"""
Do a GraphQL Query.
    :param query_hash: Query identifying hash.
    :param variables: Variables for the Query.
    :param referer: HTTP Referer, or None.
    :param rhx_gis: 'rhx_gis' variable as somewhere returned by Instagram, needed to 'sign' request
    :return: The server's response dictionary.
    """
    with copy_session(self._session, self.request_timeout) as tmpsession:
        tmpsession.headers.update(self._default_http_header(empty_session_only=True))
        del tmpsession.headers['Connection']
        del tmpsession.headers['Content-Length']
        tmpsession.headers['authority'] = 'www.instagram.com'
        tmpsession.headers['scheme'] = 'https'
        tmpsession.headers['accept'] = '*/*'
        if referer is not None:
            tmpsession.headers['referer'] = urllib.parse.quote(referer)

        variables_json = json.dumps(variables, separators=(',', ':'))

        if rhx_gis:
            #self.log("rhx_gis {} query_hash {}".format(rhx_gis, query_hash))
            values = "{}:{}".format(rhx_gis, variables_json)
            x_instagram_gis = hashlib.md5(values.encode()).hexdigest()
            tmpsession.headers['x-instagram-gis'] = x_instagram_gis

        if query_hash == '':
            params = {"server_timestamps": "true",
                        "doc_id": "7898261790222653",
                        'variables': variables_json}
        else:
            params = {'query_hash': query_hash,
                        'variables': variables_json}

        resp_json = self.get_json('graphql/query',
                                  params=params,
                                  session=tmpsession)
    if 'status' not in resp_json:
        self.error("GraphQL response did not contain a \"status\" field.")
    return resp_json`

As I mentioned in the previous message, it is very important that the parameters are set correctly. This is where "doc_id" is added and "query_hash" is removed.

In the "get_json()" method, change this line:
is_graphql_query =   'graphql/query' in path

If @hmobinizade has a working version, even if only partially working, it would be really helpful if you could share it.
It does not seem to me as something simple to fix. Querying is relatively easy: as noted, only variables and doc_id are necessary, and doc_id is always<PHONE_NUMBER>222653 when querying the list of posts. I suppose this is the new equivalent to queryhash. One can even do a GET instead of a POST.[0] This would need some changes to the querying function, to support both "new-style" queries and the old ones.
[0] This might trigger IG's scraper detection, but so could sending a request without all the parameters that the interface sends.
The object returned, however, is different than what the current version expects. It seems like it is what is returned is the same as what the "iphone struct" returns, but I need to confirm that. So a quick hack might be to create a Post using from_iphone_struct().
Ideally, though, a more through restructuring of the code seems ideal: if the "iphone struct" is now the standard, then perhaps the old code can be removed and replaced by the "iphone struct" code, which is not really iphone-specific anymore. The code for downloading a single post would need to be changed, in other to use a query that returns that post's metadata in the new format. I have not been able to find such a query yet.
On the other hand, it seems that, contrary to my initial statement, the highest resolution versions are returned by this query, so no there is no need for futher queries.

I put all the changes in this comment for you and all those who have problems:
https://github.com/instaloader/instaloader/issues/2319#issuecomment-2267152232
I have been using this method for 3 days and I have no problem.
Of course, error handling has a little bug that I need to fix, but anyway, 99% of the problem is solved for me.
As for your comment, I think doc_id is something like query_hash but I still don't know where the value comes from!

Hey @hmobinizade
Appreciate your help. But I'm not finding what you're updating for some reason. You're on 4.12.1 right? structures.py file that is found generally in "AppData\Local\Programs\Python\Python311\Lib\site-packages\instaloader" right?
Could you maybe include the line number that you're editing with all the following code? For example, "def get_posts(self, end_cursor = None):" does not exist. So you're saying either to add a new line or update an old one. On line 1171 there is "def get_posts(self) -> NodeIterator[Post]:". If we are changing that to what you have and then the additional code under it, that will help.
Next, I can't follow your step 2 at all. "def graphql_query" does not exist at all in the code. And just searching for "graphql_query" has 7 items that don't look like they would belong with what you added. What line is your edit?
Lastly, "is_graphql_query" also does not exist in the code at all. What line is it?
I'm looking at the same thing as here https://github.com/instaloader/instaloader/blob/master/instaloader/structures.py

Если@hmobinizadeесть рабочая версия, пусть даже частично рабочая, было бы очень полезно, если бы вы могли ею поделиться.
Мне не кажется, что это можно легко исправить. Запросы относительно просты: как уже отмечалось, необходимы только variablesи и всегда при запросе списка постов. Полагаю, это новый эквивалент . Можно даже использовать GET вместо POST.[0] Это потребует некоторых изменений в функции запроса, чтобы поддерживать как запросы "нового стиля", так и старые.doc_id``doc_id``7898261790222653``queryhash
[0] Это может привести к обнаружению скрапера IG, но то же самое может произойти и при отправке запроса без всех параметров, которые отправляет интерфейс.
Однако возвращаемый объект отличается от того, что ожидает текущая версия. Похоже, что то, что возвращается, то же самое, что возвращает "iphone struct", но мне нужно это подтвердить. Поэтому быстрый хак может заключаться в создании Postusing from_iphone_struct().
В идеале, однако, более сквозная реструктуризация кода кажется идеальной: если "iphone struct" теперь является стандартом, то, возможно, старый код можно удалить и заменить кодом "iphone struct", который больше не является специфичным для iPhone. Код для загрузки отдельного поста нужно будет изменить, в противном случае использовать запрос, который возвращает метаданные этого поста в новом формате. Я пока не смог найти такой запрос.
С другой стороны, похоже, что, вопреки моему первоначальному утверждению, этот запрос возвращает версии с самым высоким разрешением, так что нет необходимости в дальнейших запросах.

Я поместил все изменения в этот комментарий для вас и всех тех, у кого возникли проблемы: #2319 (комментарий) Я использую этот метод уже 3 дня и у меня нет никаких проблем. Конечно, в обработке ошибок есть небольшой баг, который мне нужно исправить, но в любом случае, 99% проблемы для меня решены.
Что касается вашего комментария, я думаю, что doc_id — это что-то вроде query_hash, но я все еще не знаю, откуда берется это значение!

можете выложить измененные код в гитхаб если не сложно

@hmobinizade
Hello, can you either elaborate on the lines where this changes has to be done and/or if these replace the existing get_posts() which one of them and where the other method get_json() is supposed to be or we create it? Please.
By replacing the get_posts in line 1171 i get some inconsistency  and Errors(?)
Can anyone share their already modified "structures.py" or uploade it to a text server or something ? please.

Hey @hmobinizade Appreciate your help. But I'm not finding what you're updating for some reason. You're on 4.12.1 right? structures.py file that is found generally in "AppData\Local\Programs\Python\Python311\Lib\site-packages\instaloader" right?
Could you maybe include the line number that you're editing with all the following code? For example, "def get_posts(self, end_cursor = None):" does not exist. So you're saying either to add a new line or update an old one. On line 1171 there is "def get_posts(self) -> NodeIterator[Post]:". If we are changing that to what you have and then the additional code under it, that will help.
Next, I can't follow your step 2 at all. "def graphql_query" does not exist at all in the code. And just searching for "graphql_query" has 7 items that don't look like they would belong with what you added. What line is your edit?
Lastly, "is_graphql_query" also does not exist in the code at all. What line is it?
I'm looking at the same thing as here https://github.com/instaloader/instaloader/blob/master/instaloader/structures.py

Hello,
Yes, you have to change the library codes.
You need to change the get_posts() method, I added the "end_cursor" parameter. I also explained the reason for use.
I will give you the path of two other files.

@hmobinizade  , followed all the steps , but changing "is_graphql_query =   'graphql/query' in path"  gives "KeyError: 'query_hash'" .

можете выложить измененные код в гитхаб если не сложно

Because I customized the library for myself, it is a bit difficult for me to send changes.

the change i did in get_json()

Hello, can you either elaborate on the lines where this changes has to be done and/or if these replace the existing get_posts() which one of them and where the other method get_json() is supposed to be or we create it? Please.
By replacing the get_posts in line 1171 i get some inconsistency and Errors(?)
Can anyone share their already modified "structures.py" or uploade it to a text server or something ? please.

Hello, please report the error. I will help if I can.

OK, I will explain the changes I made in order. Of course, there are many changes and it may confuse you! Please ask if you have any questions, I will help as much as I know. I hope this answer is helpful for you too :)
you need to customize library.

change "structures.py" , "get_posts()" method:
https://github.com/instaloader/instaloader/blob/7dac8ad1e59a99388511618eebeaaa88777a9906/instaloader/structures.py#L1171

` def get_posts(self, end_cursor = None):
    if end_cursor is not None:
        _query_variables = {"after": end_cursor, "before": None,
             "data": {"count": 50, "include_relationship_info": True,
                      "latest_besties_reel_media": True, "latest_reel_media": True},
                     "first": 12, "last": None, "username": self.username,
                     "__relay_internalpvPolarisFeedShareMenurelayprovider": False}

    else:
        _query_variables = {"data": {"count": 50, "include_relationship_info": True, "latest_besties_reel_media": True,
                  "latest_reel_media": True}, "username": self.username,
         "__relay_internalpvPolarisFeedShareMenurelayprovider": False}

    _query_referer = 'https://www.instagram.com/{0}/'.format(self.username)

    data = self._context.graphql_query(
        '', {**_query_variables}, _query_referer
    )

    posts = []
    posts_node = data['data']['xdt_apiv1feed__user_timeline_graphql_connection']['edges']
    page_info = data['data']['xdt_apiv1feed__user_timeline_graphql_connection']['page_info']

    for node in posts_node:
        # posts.append(node["node"])
        post = Post(self._context, node["node"], self)
        posts.append(post._asdict())

    return posts, page_info

`
Here the request is prepared and the response is processed. *** You can do this answer processing as it suits your cartoon. *** In addition, "end_cursor" also means an offset. At the end of each request, if "has_next_page" is equal to "True", this "end_cursor" value is also present, and by sending it in the next request, you can get the next page :)

change  graphql_query()  :
https://github.com/instaloader/instaloader/blob/7dac8ad1e59a99388511618eebeaaa88777a9906/instaloader/instaloadercontext.py#L475

`def graphql_query(self, query_hash: str, variables: Dict[str, Any], referer: Optional[str] = None, rhx_gis: Optional[str] = None) -> Dict[str, Any]:
    with copy_session(self._session, self.request_timeout) as tmpsession:
        tmpsession.headers.update(self._default_http_header(empty_session_only=True))
        del tmpsession.headers['Connection']
        del tmpsession.headers['Content-Length']
        tmpsession.headers['authority'] = 'www.instagram.com'
        tmpsession.headers['scheme'] = 'https'
        tmpsession.headers['accept'] = '*/*'
        if referer is not None:
            tmpsession.headers['referer'] = urllib.parse.quote(referer)

        variables_json = json.dumps(variables, separators=(',', ':'))

        if rhx_gis:
            #self.log("rhx_gis {} query_hash {}".format(rhx_gis, query_hash))
            values = "{}:{}".format(rhx_gis, variables_json)
            x_instagram_gis = hashlib.md5(values.encode()).hexdigest()
            tmpsession.headers['x-instagram-gis'] = x_instagram_gis

        if query_hash == '':
            params = {"server_timestamps": "true",
                        "doc_id": "7898261790222653",
                        'variables': variables_json}
        else:
            params = {'query_hash': query_hash,
                        'variables': variables_json}

        resp_json = self.get_json('graphql/query',
                                  params=params,
                                  session=tmpsession)
    if 'status' not in resp_json:
        self.error("GraphQL response did not contain a \"status\" field.")
    return resp_json`

As I mentioned in the previous message, it is very important that the parameters are set correctly. This is where "doc_id" is added and "query_hash" is removed.

In the "get_json()" method, change this line:
https://github.com/instaloader/instaloader/blob/7dac8ad1e59a99388511618eebeaaa88777a9906/instaloader/instaloadercontext.py#L402
is_graphql_query =   'graphql/query' in path

### I edited again and referenced each change. I hope the ambiguities will disappear.

hi @hmobinizade
i did follow all the steps in your previous comment but I'm stuck with an error
Traceback (most recent call last):
  File "C:\Users\Asca2\OneDrive\First Files\Python Stuff\Instaloader GUI\test4.py", line 31, in <module>
    instaloader_posts(data)
  File "C:\Users\Asca2\OneDrive\First Files\Python Stuff\Instaloader GUI\test4.py", line 20, in instaloader_posts
    posts = instaloader.Profile.from_username(L.context, dataUsername).get_posts()
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\structures.py", line 1204, in get_posts
    data = self._context.graphql_query(
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\instaloadercontext.py", line 546, in graphql_query
    resp_json = self.get_json('graphql/query',
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\instaloadercontext.py", line 411, in get_json
    self._rate_controller.wait_before_query(params['query_hash'])
KeyError: 'query_hash'

i did an output for the params thats being passed to get_json()
{'server_timestamps': 'true', 'doc_id': '7898261790222653', 'variables': '{\n    "data":{\n        "count":50,\n        "include_relationship_info":true,\n        "latest_besties_reel_media":true,\n        "latest_reel_media":true\n    },\n    "username":"shuffledistrict",\n    "__relay_internalpvPolarisFeedShareMenurelayprovider":false\n}'}
tested with and without session File

Got the same error as the other guy query harsh thingy:

Traceback (most recent call last):
File "", line 198, in run_module_as_main
File "", line 88, in run_code
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader_main.py", line 597, in
main()
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader_main.py", line 563, in main
exit_code = main(loader,
^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader_main.py", line 300, in _main
instaloader.download_profiles(profiles,
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloader.py", line 1499, in download_profiles
posts_to_download = profile.get_posts()
^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\structures.py", line 1189, in get_posts
data = self._context.graphql_query(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloadercontext.py", line 511, in graphql_query
resp_json = self.get_json('graphql/query',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloadercontext.py", line 409, in get_json
self._rate_controller.wait_before_query(params['query_hash'])
~~~~~~^^^^^^^^^^^^^^
KeyError: 'query_hash'

Can you help? please.

hi @hmobinizade i did follow all the steps in your previous comment but I'm stuck with an error
Traceback (most recent call last):
  File "C:\Users\Asca2\OneDrive\First Files\Python Stuff\Instaloader GUI\test4.py", line 31, in <module>
    instaloader_posts(data)
  File "C:\Users\Asca2\OneDrive\First Files\Python Stuff\Instaloader GUI\test4.py", line 20, in instaloader_posts
    posts = instaloader.Profile.from_username(L.context, dataUsername).get_posts()
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\structures.py", line 1204, in get_posts
    data = self._context.graphql_query(
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\instaloadercontext.py", line 546, in graphql_query
    resp_json = self.get_json('graphql/query',
  File "C:\Users\Asca2\.conda\envs\Instaloader_Conda\lib\site-packages\instaloader\instaloadercontext.py", line 411, in get_json
    self._rate_controller.wait_before_query(params['query_hash'])
KeyError: 'query_hash'

i did an output for the params thats being passed to get_json()
{'server_timestamps': 'true', 'doc_id': '7898261790222653', 'variables': '{\n "data":{\n "count":50,\n "include_relationship_info":true,\n "latest_besties_reel_media":true,\n "latest_reel_media":true\n },\n "username":"shuffledistrict",\n "__relay_internalpvPolarisFeedShareMenurelayprovider":false\n}'}
tested with and without session File

Yes, that's right, as it appears in the error, the problem is from this part:
https://github.com/instaloader/instaloader/blob/7dac8ad1e59a99388511618eebeaaa88777a9906/instaloader/instaloadercontext.py#L409
I said that I customized the library for myself, I removed this wait_before_query part for myself so that I don't have a delay before requests.
But to solve your problem,
It seems to want to set the appropriate delay for each request.
I think that in a try/except, you should first find the query_hash, if it doesn't exist, insert the doc_id. Ok?

Got the same error as the other guy query harsh thingy:

Traceback (most recent call last):
File "", line 198, in run_module_as_main
File "", line 88, in run_code
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader__main.py", line 597, in
main()
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader__main__.py", line 563, in main
exit_code = main(loader,
^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader__main_.py", line 300, in _main
instaloader.download_profiles(profiles,
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloader.py", line 1499, in download_profiles
posts_to_download = profile.get_posts()
^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\structures.py", line 1189, in get_posts
data = self._context.graphql_query(
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloadercontext.py", line 511, in graphql_query
resp_json = self.get_json('graphql/query',
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "C:\Users\User\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.11_qbz5n2kfra8p0\LocalCache\local-packages\Python311\site-packages\instaloader\instaloadercontext.py", line 409, in get_json
self._rate_controller.wait_before_query(params['query_hash'])
KeyError: 'query_hash'

Can you help? please.

Yes, I answered.
https://github.com/instaloader/instaloader/issues/2319#issuecomment-2267476611

I've opened a PR for a change that uses the new query.
I haven't tested it extensively, but my preliminary tests show that it works both logged in and anonymously (I was able to download more than 12 posts, but IG will probably kick you out eventually if used anonymously.)
It would be really helpful if other people could test the code. Since python is not my first language, I'm not sure exactly how to update a version installed with pip to my branch, but maybe this helps: https://stackoverflow.com/questions/13561618/pip-how-to-install-a-git-pull-request. Or hopefully someone has more detailed instructions.

would it help if the queries would be done randomized ? (not all at fixed time intervals). and maybe with a custom delay. let's say, 1 second or 2 seconds delay between the posts ? (but still randomized) so let's say, for 2 seconds you get queries after:

2231 ms
2515 ms
2192 ms
2109 ms

would this still be detected as automation ?

I've opened a PR for a change that uses the new query.
I haven't tested it extensively, but my preliminary tests show that it works both logged in and anonymously (I was able to download more than 12 posts, but IG will probably kick you out eventually if used anonymously.)
It would be really helpful if other people could test the code. Since python is not my first language, I'm not sure exactly how to update a version installed with pip to my branch, but maybe this helps: https://stackoverflow.com/questions/13561618/pip-how-to-install-a-git-pull-request. Or hopefully someone has more detailed instructions.

@ekalin I don't know how to make the updates either so...I just made backups of the original files and made the changes manually from your PR. The old fashioned way. I got a few runtime errors in my first couple runs cause I had extra spaces from copy/paste issues but eventually...IT WORKED. I was able to scrape a profile that had 19 new posts (with --latest-stamps if that makes a difference). And a few others before I got a 401 Unauthorized error.
I think there is definitely still going to be a rate limiter issue globably. As of last night, I was even just scrolling profiles logged into my account on the web, and it was logging me out and giving me the challenge. But as far as functionality, my test was fine.
Are there any specific things you want tested?

If you would like to install the experimental failed pull request version (WHICH DOES GET IMAGES right now but have its limitations) You can do this:
To install and override this experimental pull request package, you would need to follow these steps:

Clone the repository:
git clone https://github.com/instaloader/instaloader.git
cd instaloader

Fetch the pull request branch:
git fetch origin pull/2330/head:docid-query-posts

Checkout the branch:
git checkout docid-query-posts

Install the package in editable mode:
pip install -e .

This will install the experimental version with the changes from the pull request.
However, I would advise caution when evaluating this pull request:

It's labeled as a "work in progress" (wip) and the author states it's still a draft.

The changes haven't been extensively tested yet.

The documentation hasn't been updated.

The author is requesting help with testing in various scenarios.

Given these factors, this code is not ready for production use. It's suitable only for experimental testing and providing feedback to the author. When testing, be prepared for potential bugs or unexpected behavior.
If you decide to test it, focus on:

Verifying the new query retrieves user posts correctly
Checking behavior with different types of posts (images, videos, carousels)
Comparing results with the previous "iphone queries" method
Providing suggestions for code improvements

Remember to report any issues or suggestions back to the pull request discussion on GitHub to help improve the implementation.

I don't think what triggers IG's scraper detection is the query rate. Or rather, it might be one of the factors, but certainly not the only one.
(For what's worth, I have tried (long ago) adding a delay between each query, and it didn't make much difference.)
The fact is, the behavior of this (and any other tool) is somewhat different from that of a user browsing or using the app. We try to simulate as best as possible, but it's very difficult to reproduce what the site does, especially since the site is always changing.
But we're getting too off-topic with this discussion.

AS A REMINDER...always do your testing from a burner account. I tested this on a burner a bit ago and it worked great. I tried it again and got a message the account was suspended. Maybe I was just unlucky, but be careful.

The initial version had a small bug that might cause some types of downloads to fail (it did not affect posts and stories, though - at least when the number is small), so I'd suggest updating again.

I made a pull request that seems to work for now and is much simpler, but I am not sure about possible side effects for other queries.

About burner accounts yes: absolutely do use that and what is strange is that Insta doesnt send warning to my burner account at all but it does with my real account.

AS A REMINDER...always do your testing from a burner account. I tested this on a burner a bit ago and it worked great. I tried it again and got a message the account was suspended. Maybe I was just unlucky, but be careful.

How do you make burners? I seem to be one of those few people who cannot make instagram accounts. No matter the device used or even a differnt IP I am always hit with a never ending "Try again later" when signing up

@ekalin @Caramel7 Just now I tried to get stories from a profile. And it crashed. I'm wondering if that's something to test for later
site-packages\instaloader\structures.py", line 1664, in _fetch_iphone_struct     self._iphone_struct_ = data['reels'][str(self.owner_id)]                            ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^ KeyError: '6863057068'
That was the last bit. If I understand, the code hit that item, ran through all the varaibles and parameters and landed at an error cause it couldn't get a reel that was set in the stories? Did either of you see this as you went about your business?

am I being a biff?
followed the editing py scripts.
python % instaloader --login=X--stories --highlights --no-captions --no-metadata-json --filename-pattern="{profile} {date_utc}"
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.12/bin/instaloader", line 5, in
from instaloader.main import main
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/instaloader/init.py", line 16, in
from .instaloader import Instaloader
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/instaloader/instaloader.py", line 22, in
from .instaloadercontext import InstaloaderContext, RateController
File "/Library/Frameworks/Python.framework/Versions/3.12/lib/python3.12/site-packages/instaloader/instaloadercontext.py", line 486
with copy_session(self._session, self.request_timeout) as tmpsession:
IndentationError: unexpected indent

i tested the workaround from @ekalin
tried on 200 profiles for feed posts
works with both login and without* login
(*except the private and age restricted accounts)
a warning for scrape every 2-3 runs (possibly because the profiles are already updated and it doesn't have much to download)

Tested both #2330 and #2332 (separately and together) and I'm getting caught with 400s and 401s after the first few profiles. It is working better than without them, though.

Used Elakin's first fix.
I made a new account and ran it not hardcore but intensely for 2 days. Not a single error in 2 days. Not even a "To many requests in the last X. Must wait X". Which is honestly a little scary

Hi there,  I still met error that no posts downloaded or got while logging in. I tried to get location information of posts so I must log in instead of not logging in. So any idea to this case?  ^ ^

i tested the workaround from @ekalin
tried on 200 profiles for feed posts works with both login and without* login (*except the private and age restricted accounts)
a warning for scrape every 2-3 runs (possibly because the profiles are already updated and it doesn't have much to download)

@Avisz Hey can u please share the code to get 200 profiles
or else can you please guide me to do that

i tested the workaround from @ekalin
tried on 200 profiles for feed posts works with both login and without* login (*except the private and age restricted accounts)
a warning for scrape every 2-3 runs (possibly because the profiles are already updated and it doesn't have much to download)

@Avisz Hey can u please share the code to get 200 profiles or else can you please guide me to do that

its on instaloader documentations page , check python section and you have to manually feed in a list of usernames

i tested the workaround from @ekalin
tried on 200 profiles for feed posts works with both login and without* login (*except the private and age restricted accounts)
a warning for scrape every 2-3 runs (possibly because the profiles are already updated and it doesn't have much to download)

@Avisz Hey can u please share the code to get 200 profiles or else can you please guide me to do that

just follow this #2319 (comment)

@Avisz @yuyoiuyoiu
i have a code that works but i need to speed it up without getting blocked
is it ok if we have a discussion on optimizing my code
it will be of great help
thanks in advance


Calling then() on FutureArray or FutureValue returns a new FutureArray or FutureValue, not just a PromiseInterface

When calling then() on a FutureArray or FutureValue, an instance of FutureInterface is returned. It would be nice if an instance of FutureArray or FutureValue would be returned instead.
Typical use case
I have a service that communicates with ElasticSearch via their PHP library (that for async calls returns a FutureArray) and the service somehow processes the result (the ES response contains lots of stuff I don't need) - that's where the then() method comes to play.
I want to use the service output in both a cli command (for one-time testing/debug/...) and a worker that runs completely asynchronously in an event loop. That means in the first case, I would get the result by calling wait() and in the second one, I would simply chain another then() call to the service output.
Problem
Calling then() on the FutureArray returns a PromiseInterface (the result of calling then() on the wrapped promise) and I am unable to block until a result is available using the wait() method because it simply does not exist in React promises.
Solution
The then() method can return a new FutureArray that simply wraps the result originally returned.
Considering the FutureArray already implements PromiseInterface, this should be no BC break.
Instead of new self(...) the method could use late static binding and call new static(...) but the only difference would be if someone subclassed FutureArray. And in such case, it is quite possible that they created their own constructor with a different signature.
The same applies to FutureValue.
I have included two unit tests that test that the then() method returns the apprioriate class instance and that the returned value was processed by the callback.

+1

Thanks for the PR, but I'm going to close this since this repo has been EOL for a while now.


loki.source.file component - automatically determine file encoding

Request
loki.source.file could automatically determine the file encoding instead of requiring it to be set as one of the arguments.
UTF-16 files have a BOM, byte order mark, as the first two bytes of a file that could be used to automatically determine the encoding.  Linux and Windows do have other ways to determine the file encoding.
Use case
We don't always know what the encoding of some files are, and users can change the encoding without notifying us.
SSRS in Windows create some log files with UTF-16 LE BOM instead of the normal UTF-8 encoded files in the same directory.
In our environment, different machines have different encodings for some of the log files.

I have a the same issue (UTF-16 LE BOM source file)
Meanwhile, what is the proper way to set the proper encoding ?
I tried :

UTF-16 (got http 400 from loki)
UTF-16BE (got http 400 from loki)
UTF-16LE (got chinese chars in Grafana)
UTF-8 (working but with weird large space encoding in Grafana)

loki.source.file "test" {
	targets    = local.file_match.test.targets
	forward_to = [loki.process.logs_integrations_integrations_mssql_windows.receiver]

	encoding = "UTF-16BE"   // tested the values, here
}


new search command compatible with npm search

Hello,
I added the search command to be compatible with the search command of npm, for now I'm only processing one term for search.
With this command we can retrieve the result of the search in json with the command npm-search.
Thank you
example:  npm search --json @verdaccio
result:
[{"name":"@verdaccio/local-storage","description":"local storage implementation","maintainers":[{"username":"jotadeveloper","email":"juanpicado19@gmail.com"}],"keywords":["verdaccio","local-storage"],"version":"0.0.11","date":"2017-10-22T08:44:45.906Z"}
,{"name":"@verdaccio/streams","description":"helper to delay streams","maintainers":[{"username":"jotadeveloper","email":"juanpicado19@gmail.com"}],"keywords":["streams"],"version":"0.0.2","date":"2017-08-02T05:33:34.992Z"}
,{"name":"@verdaccio/types","description":"verdaccio flow types definitions","maintainers":[{"username":"jotadeveloper","email":"juanpicado19@gmail.com"}],"version":"0.0.9","date":"2017-11-22T06:00:57.589Z"}
,{"name":"@verdaccio/file-locking","description":"library that handle file locking","maintainers":[{"username":"jotadeveloper","email":"juanpicado19@gmail.com"}],"keywords":["lock","fs"],"version":"0.0.3","date":"2017-07-08T14:07:19.907Z"}
]

Sorry, in order to release I need you update (https://github.com/verdaccio/verdaccio/blob/master/CONTRIBUTING.md#git-commit-guidelines) commit messages. We have an automated process, otherwise, the CI won't do the release.

Could you update as well this section? https://github.com/verdaccio/verdaccio/blob/master/README.md#compatibility

Please review the lint, it fails
><EMAIL_ADDRESS>lint /home/ubuntu/verdaccio
> eslint .

/home/ubuntu/verdaccio/src/api/endpoint/api/search.js
   99:1    warning  Trailing spaces not allowed                                                                                no-trailing-spaces
  100:3    error    Expected space or tab after '//' in comment                                                                 spaced-comment
  132:1    warning  Trailing spaces not allowed                                                                                no-trailing-spaces
  158:90   error    Missing semicolon                                                                                semi
  159:11   error    Expected { after 'if' condition                                                                             curly
  159:95   warning  Trailing spaces not allowed                                                                                no-trailing-spaces
  160:2    warning  Mixed spaces and tabs                                                                                no-mixed-spaces-and-tabs
  160:12   error    The body of a for-in should be wrapped in an if statement to filter unwanted properties from the prototype  guard-for-in
  160:134  error    Missing semicolon                                                                                semi
  163:11   error    Opening curly brace does not appear on the same line as controlling statement                               brace-style
  166:1    warning  Line 166 exceeds the maximum line length of 160                                                             max-len
  166:4    error    Expected space or tab after '//' in comment                                                                 spaced-comment
  189:1    error    Missing JSDoc comment                                                                                require-jsdoc
  189:24   error    Unexpected space before function parentheses                                                                space-before-function-paren
  193:55   error    Unexpected space before function parentheses                                                                space-before-function-paren
  194:14   error    There should be no space after '{'                                                                          object-curly-spacing
  194:49   error    There should be no space before '}'                                                                         object-curly-spacing
  194:50   error    Missing semicolon                                                                                semi
  202:14   error    Missing trailing comma                                                                                comma-dangle
  203:4    error    Missing semicolon                                                                                semi

/home/ubuntu/verdaccio/src/utils/string.js
  2:21  warning  Use the rest parameters instead of 'arguments'  prefer-rest-params

✖ 21 problems (15 errors, 6 warnings)

Does work for you? It does not for me.
➜ npm search jquery --json --registry http://localhost:5555 -dd
npm info it worked if it ends with ok
npm verb cli [ '/Users/user/.nvm/versions/node/v8.7.0/bin/node',
npm verb cli   '/Users/user/.nvm/versions/node/v8.7.0/bin/npm',
npm verb cli   'search',
npm verb cli   'jquery',
npm verb cli   '--json',
npm verb cli   '--registry',
npm verb cli   'http://localhost:5555',
npm verb cli   '-dd' ]
npm info using<EMAIL_ADDRESS>npm info using<EMAIL_ADDRESS>npm verb esearch creating remote entry stream
npm verb request uri http://localhost:5555/-/v1/search?text=jquery&size=20
npm verb request no auth needed
npm info attempt registry request try #1 at 22:18:26
npm verb request using bearer token for auth
npm verb request id 02d6cd49fe2dfb3f
npm http request GET http://localhost:5555/-/v1/search?text=jquery&size=20
[
]
npm verb exit [ 0, true ]
npm info ok

yes, the search only works on packages that have been published in the server npm verdaccio, it does not launch the search commands on packages that is published in other server npm for example: "https: //registry.npmjs. org /. "

yes, the search only works on packages that have been published in the server npm verdaccio, it does not launch the search commands on packages that is published in other server npm for example: "https: //registry.npmjs. org /. "


[libra framework][move prover] enable calling of Move native functions from specs

Motivation
This PR

Defines the spec version of most applicable Move public native functions in prelude.bpl,
Enables the direct and indirect calling of aforementioned Move public native functions from specifications,
Modifies specs to take advantage of the new feature.

Have you read the Contributing Guidelines on pull requests?
Yes.
Test Plan
Added a test case.

@bors-libra land


Traefik docker does not reload config

Hello,
I've an issue on docker container, wich is launched like that:
docker run -d -p 8080:8080 -p 80:80 --name lbal -v /root/traefik.toml:/etc/traefik/traefik.toml -v /root/acme:/acme traefik
When I change my traefik.toml on host, the process does not detect configuration change.
It's the same with nano or vim editor.
Do someone already had this issue ?
Thanks,
Nicolas

Thanks for your interest in Traefik !
Every question asked in issues means less features 😉.
The issue tracker is for reporting bugs and feature requests only.
For end-user related support questions, refer to one of the following:

Stack Overflow using the "traefik" tag
the Traefik community Slack channel


"cssClass: embed-strict" no longer works

Is the bug present when using the default Obsidian theme?
No
Is the bug present when snippets and plugins are disabled?
Yes
Minimal theme version
6.1.12
Describe the bug
After upgrading to v1.1.0 the css class "cssClass: embed-strict" no longer works - even I added "cssClass: embed-strict" to YAML there are no changes to the document. Is there any way you can fix it please?
The first photo shows that I have added the helper class in the YAML section, while the second photo shows that I have removed the helper class. As you can see, whether adding the helper class or not does not change anything.

Debug info
SYSTEM INFO:
Obsidian version: v1.1.0
Installer version: v0.15.8
Operating system: Darwin Kernel Version 22.1.0: Sun Oct  9 20:14:54 PDT 2022; root:xnu-8792.41.9~2/RELEASE_X86_64 22.1.0
Login status: logged in
Catalyst license: insider
Insider build toggle: on
Live preview: on
Legacy editor: off
Base theme: light
Community theme: Minimal v6.1.12
Snippets enabled: 1
Restricted mode: off
Plugins installed: 40
Plugins enabled: 36
1: Admonition v9.0.5
2: Minimal Theme Settings v6.1.0
3: Advanced Tables v0.18.0
4: Better Word Count v0.8.1
5: Calendar v1.5.10
6: Checklist v2.2.10
7: Dataview v0.5.47
8: Hider v1.2.3
9: Hotkeys++ v0.2.7
10: Icons v0.3.0
11: Kanban v1.5.1
12: Mind Map v1.1.0
13: Outliner v4.1.1
14: Paste URL into selection v1.7.0
15: Style Settings v0.4.12
16: Indentation Guides v1.0.8
17: Electron Window Tweaker v1.0.8
18: Sortable v0.2.6
19: Tag Wrangler v0.5.5
20: Book Search v0.5.8
21: Buttons v0.4.19
22: Icon Folder v1.4.3
23: Contextual Typography v2.2.4
24: Smart Typography v1.0.18
25: Highlightr v1.2.2
26: Annotator v0.2.8
27: Folder Note v0.7.3
28: File Tree Alternative Plugin v2.2.4
29: Linter v1.9.0
30: Templater v1.16.0
31: QuickAdd v0.7.0
32: Natural Language Dates v0.6.1
33: Recent Files v1.3.5
34: Hover Editor v0.11.8
35: Readwise Official v2.0.1
36: Banners v1.3.3
RECOMMENDATIONS:
Custom theme and snippets: for cosmetic issues, please first try updating your theme and disabling your snippets. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community theme and snippets.
Community plugins: for bugs, please first try updating all your plugins to latest. If still not fixed, please try to make the issue happen in the Sandbox Vault or disable community plugins.

Fixed in 6.1.13


wrong data

Hello,
I think there is some wrong data in the db.
An example is the stock ENI (.MI, .MU, .SG, .BE, .DE, etc).
Data columns describe it as Franklin Resources in United States, wich is completely wrong.
ENI.MI is an italian company.

Can you verify?
Thank you.

Seems to be wrong indeed, please create a PR to update this.
https://github.com/JerBouma/FinanceDatabase/blob/main/CONTRIBUTING.md


make truncating input simpler by limiting the STAR input

Need to discuss about parallelizing total read counts.

the max_lines are set by us (which is x4 for fastq). The original implementation with sed is really not performant which transforms the content back and forth and is basically doing head -{4x#reads}

Just an aside, it may be ideal to also employ this piping technique for streaming the output of STAR through the pair synchornizer -- so we don't have to wait an hour for it to synchronize the pairs -- it can do that while STAR is slowly outputting them.
An alternative method that would also work is to chunk the STAR inputs.   Even if STAR runs the chunks serially, the pair synchronizer can work on the STAR output for each chunk in parallel.

So far as approving this pull request, as is, the main thing it's missing is the INPUT_TRUNCATED file.   It is also producing the wrong total count, by counting the untruncated input.

Re @jameshowardwang's concern about splitting a read in the middle, this ought not to happen for fastq files, where each read is guaranteed to occupy 4 lines;   it might happen for fasta inputs, and we have filed it away as an issue to may be consider, but deprioritized as we don't see that in our inputs so far.