view release on metacpan or search on metacpan
the distribution may already have been compromised, and you should
not run its Makefile.PL or Build.PL.
-----BEGIN PGP SIGNED MESSAGE-----
Hash: RIPEMD160
SHA256 fc82ca8b6fdb18d4e3e85cfd8ab58d1bcd3f1b29abe782895abd91d64763f8e7 COPYING
SHA256 6c49f58dc8488aa923a960534d0fec972fa60fc6186cfeed98e502fbbf933646 Changes
SHA256 a1d5317a00f074c8cde5c97caa1f344b5b7bdaec5898502eeba37c958d767e7f MANIFEST
SHA256 da6da2a09d06088848950f7253c80c75f4ef23218ca3e8ee8728b7359d710ebc MANIFEST.SKIP
SHA256 ef02bbbe6f3b063404dad5f3eb0673d7f332d3e2d16913032d083670bce194bb META.json
SHA256 5be15a75ee43bc9a4d10715b94ee78c0f0d9c6f3038ab0699060a0802cfa990a META.yml
SHA256 55b62a8f039747958815cdbc3f4c86a64b67ca92314825aeb832bfb9d54e13a2 Makefile.PL
SHA256 b4b9c163f8440dfcad41f42a0227d07105ec35003c138b80778065beb1c8efae chart
SHA256 8f969c4aa0b8d34060dc0f5409b2647d425a7ff3d2a9f7a4c78e247b42382853 debian/README.Debian
SHA256 cc557a1a6b32cfc3fd053c76a1a0f9d513c981dfd430ad5202e55d454ffdf306 debian/changelog
SHA256 2e6d31a5983a91251bfae5aefa1c0a19d8ba3cf601d0e8a706b4cfa9661a6b8a debian/compat
SHA256 4e435f0d7dcf5945550d7a5ca9a0812ddb107e1cf2d4fa409b314fd1a1b43d0e debian/control
SHA256 b3a811257328bf0ac103a60a4904ed2f518ef8c570edbce4b14d0657a15ec1a5 debian/copyright
SHA256 aa2e1e9aacf5675c691df820acefa6dfa360f091a789b7c298675cb414ca4406 debian/doc-base
SHA256 9a271f2a916b0b6ee6cecb2426f0b3206ef074578be55d9bc94f6f3fe3ab86aa debian/emacsen-compat
SHA256 619499272591c52b4d409fd12afae489c814aa577b3a77d07302440466b96918 debian/emacsen-install
SHA256 456b2c19778bbb8c0bf3f25b45ec8868d708f6b813e840aa1585932cb6b79e35 debian/emacsen-remove
SHA256 4b941619fce7ccdb786a1fa51b3240fcc18365e18f72d49c3a809b823ef0ba24 debian/emacsen-startup
SHA256 5e793e3f10cca37d7cbe97474f3efcd748de1379998a29b228c81a409e9da7db debian/menu
SHA256 2f0ef7fed30ab0a2031dfbbe183576aa7246a754286f6f518cd05604eddb8421 debian/rules
SHA256 5717e7c840171019a4eeab5b79a7f894a4986eaff93d04ec5b12c9a189f594bf debian/source/format
SHA256 34f40bc6d555db4d8f047d671e9f654f46953f711635f8d0a1ecbd0af3f05528 debian/watch
SHA256 fbdfac13fa630bcbf35803e2148fb6c00298da93d8d6ad56bc05877ab10894db devel/DownloadDialog.t
SHA256 02366d4dc460c9bbd6680f89f9a1cac159f62a84e73a3d4b6fda2e4f00439420 devel/MON.pm
SHA256 5ac3213616cda5581729441ffe6687060d7b1fb79585fdf8160bad94c39878f7 devel/Main.t
SHA256 54e10bd8a2e5a8bfad669759e68534b80bb7dd544dac74329b1824d3223df392 devel/MyExtractUse.pm
SHA256 00d88bc394aeee800b6246018aab4d0eaca651e696791a9841c82e664f8a5a51 lib/App/Chart/Gtk2/DeleteSymlistDialog.pm
SHA256 e36c87986492179da18431ec78c8d94cb6c9290b0a30800b3a9e7d9231142e24 lib/App/Chart/Gtk2/Diagnostics.pm
SHA256 ae8d4542c5c45470f0f5e04bc114e7784adaac5b41acd38e51a8b799b4a5df5d lib/App/Chart/Gtk2/DownloadDialog.pm
SHA256 3d5ed0ab3821b5f7e6c1c8cdf612059cbadaa3c01ba87553d4742c5d399485f9 lib/App/Chart/Gtk2/Ex/BindingBits.pm
SHA256 4cb278bb8632de1663161162c8a7d092ccd7c0b01a35978751951d48ec03c143 lib/App/Chart/Gtk2/Ex/CellRendererButton.pm
SHA256 b586cf6df4efe8e149e147c5d78988e853ccc64dfcfeb9d0a76e4818be7463fe lib/App/Chart/Gtk2/Ex/CellRendererTextBits.pm
SHA256 29f04efbf674d81657cd3acb399bd25b942997565f3ca84d97f8cbc56b1988b1 lib/App/Chart/Gtk2/Ex/CellView/TreeDND.pm
SHA256 1f4da75f69e7350f1b1ab2c7cf87827a649fc4fbb1ee62e5960cf3defa089590 lib/App/Chart/Gtk2/Ex/ContainerBits.pm
SHA256 dbba180e27ecc7d07843ff6b39ba458cd6df7d4d4c868b8f306b0143131d88e5 lib/App/Chart/Gtk2/Ex/GdkColorAlloc.pm
SHA256 1408768f052f5ecfb24f5470a242f9de43f77e324ed5db89b2ca692f4a4d6175 lib/App/Chart/Gtk2/Ex/GdkRectangleBits.pm
SHA256 a5f025b743213765048798465bd11f827b1ab9447ab8be1bf73f140401e9c429 lib/App/Chart/Gtk2/Ex/GdkWindowTracker.pm
SHA256 161037feb17f8cb72f67046b39b2b8bb7f977dd0024ca0b06bc72e6dc25770ed lib/App/Chart/Gtk2/Ex/GtkGCBits.pm
SHA256 05e1c0636411d811c3ae235504ce078f5132fd8039536236c87037c6c227d2b2 lib/App/Chart/Gtk2/Ex/LineClipper.pm
SHA256 32e8f31bba618a7385441b9189b58ed00dd1cff45abc531b31797b43dcb40fa7 lib/App/Chart/Gtk2/Ex/ListModelPos.pm
SHA256 399d4531599c3866d561beb758eeb8a3342af121c7c1c0fdae4ac2af63faebd9 lib/App/Chart/Gtk2/Ex/ListOfListsModel.pm
SHA256 22aa051434a8a1104f8fc815b6cbb57d5209c9adc204fd17ecf8f9a35bd219bf lib/App/Chart/Gtk2/Ex/ListStore/DBI.pm
SHA256 5c879cf4b57b4a30da767c8c8e82a71a105151ddf1d23b167c626f3ac54ea3c1 lib/App/Chart/Gtk2/Ex/ListStore/DragByCopy.pm
SHA256 1a0a375f9d067a8440234b2552cc3a09e351a658a9a33c5aa9897a6f1517605b lib/App/Chart/Gtk2/Ex/ListStoreDBISeq.pm
SHA256 563a34a0dfbf6848846d1a8e822e49d9318743bbefd69ed44da1dbaeaf0f5263 lib/App/Chart/Gtk2/Ex/MenuBits.pm
SHA256 f0f55074292b83685e0d885aa803e3b057dfe6bb1a7a26734af66558d0dc6a00 lib/App/Chart/Gtk2/Ex/MenuItem/EmptyInsensitive.pm
SHA256 067dc048a500e307f0645823892909fee91d2d1cbef0276f6568b64c44a08e69 lib/App/Chart/Gtk2/Ex/NotebookLazyPages.pm
SHA256 3050cb1979a26829bce7fa2d763305d8578ba69fe716009a7d56d7574e9e947d lib/App/Chart/Gtk2/IntradaySave.pm
SHA256 1f124bb973dd2ebd81e369dff5b2458bcdcfb3fa0ce25c02e27b01a13e9bea54 lib/App/Chart/Gtk2/Job.pm
SHA256 05b78f6924461b91ae582eedf8caca4aa7e2cf367db40332123a47b87a75aabf lib/App/Chart/Gtk2/Job/Download.pm
SHA256 423d514f73b5f277e90488d8507730587aec895a57582c5e400a6c51579eeb18 lib/App/Chart/Gtk2/Job/Intraday.pm
SHA256 131ab718893a76b299ed34270a40d1c1b6b4c0892b90dd61c8056e33902be1ec lib/App/Chart/Gtk2/Job/Latest.pm
SHA256 b127122176c1ea61f68924141160f1ae1cb570ed8fd9aae67d40f8d55af8b5cf lib/App/Chart/Gtk2/JobQueue.pm
SHA256 03425566c5d2b6f2c57cbf1a6a73a285ec487ab076b62e96ddbe90292a6d9418 lib/App/Chart/Gtk2/JobStatusbarMessage.pm
SHA256 1a3b8ea82d947dc8ab8cb9bc5ef13f8d5e2f60b780ce34dccc4cd24d9170285b lib/App/Chart/Gtk2/JobStopMenu.pm
SHA256 944a171eb9f56098aac3de6c1ef1dfd3886ea49b6f820cb6cc8577a6cfcba470 lib/App/Chart/Gtk2/JobsRunningDialog.pm
SHA256 bdc88469d8d778e4e8d27ac57a3cdadb15b4c5290d087514cd1906d1a8cfa0b8 lib/App/Chart/Gtk2/LineStyle/Bars.pm
SHA256 ee747f4456c738369845404a95a0e2fcb71d10f8f6eb7f0884243af545721d55 lib/App/Chart/Gtk2/LineStyle/Candles.pm
SHA256 2039b1270587aeec00de16a5c56d35418c522cf7a52ccaf8cb3c6e1472539332 lib/App/Chart/Gtk2/LineStyle/HighLow.pm
SHA256 1fccc01c038956d8a066616f04b1800a99bd81579a39229dee55ea9065918597 lib/App/Chart/Gtk2/LineStyle/Line.pm
SHA256 edbed6dc2ee997c180ac7a8d04b14f6d07cb017022e80151e2674a26b821ee0b lib/App/Chart/Gtk2/LineStyle/None.pm
SHA256 7652932131d907ee961c9aa385320c9e8392bb023073b0219222ae977706910b lib/App/Chart/Gtk2/LineStyle/OHLC.pm
SHA256 1a68c5326dd8e67825a36131b3f465446c8f4e82a83c38fdd7d8b4e4060c6474 lib/App/Chart/Gtk2/LineStyle/Points.pm
SHA256 dbda038b5d972aaeafa0adddb353e4ed85a6b32efb8726f3610e2dd507616152 lib/App/Chart/Gtk2/LineStyle/Stops.pm
SHA256 985aab0352425aa1ba3f22ffb170dad0c0aee3085a968fcdbdd17ba14fdf8677 lib/App/Chart/Gtk2/LineStyleComboBox.pm
SHA256 ed6f99b6bd8eb5457ab85bdcc216a54d12bac0c8f188aa15966759d7bddc4d7a lib/App/Chart/Gtk2/Main.pm
SHA256 77d06c5be7797c711d9e86c5ee0bb0f331bb35527669336bb894e2fae4278160 lib/App/Chart/Gtk2/OpenDialog.pm
SHA256 32c42c374fa45b65d2d6ce6fc8b80ebf3fef3076e2cb33878ee520a5ef7449eb lib/App/Chart/Gtk2/OpenModel.pm
SHA256 b91b40b63efab6cfb28454988e560acb8ef1ac94517fc3d8dbf7ea77e676c2d7 lib/App/Chart/Series/Derived/Momentum.pm
SHA256 1e02cc778eb5b8788226cfce5d5f622d7bf99514da23e2a221b3320e65d0ea94 lib/App/Chart/Series/Derived/Mul.pm
SHA256 ff0507242c9613f36a40d53cd224b411e605d67cb82ec54ce47b682428395b36 lib/App/Chart/Series/Derived/NATR.pm
SHA256 6007f3c7417cc87a85015b944afa36e56f6d11ba2bd7ed8fd6ffb46e10a233c3 lib/App/Chart/Series/Derived/NVI.pm
SHA256 bfd8d4008f47e52e1c08b81a6df34a986c3f60023d85cb47f75cdc6d650c812f lib/App/Chart/Series/Derived/OBV.pm
SHA256 94027913b445dbe8f0bb3a7607494287372d43c595a21df634fb457f1ffdc22a lib/App/Chart/Series/Derived/PFE.pm
SHA256 ad463fc71ba863e2f4e1d5321dfd9bf3d6df4f03c263d58d8c0427569c4cb24d lib/App/Chart/Series/Derived/PGO.pm
SHA256 3a4c4a3498c029a162662be48cf47b6760bbba6b9be428f4a321f87aede5e85c lib/App/Chart/Series/Derived/PVI.pm
SHA256 89f9806be89fe0a5e4c45277ebb7da8d19d352a7f210cc0877d4bc99aca857e9 lib/App/Chart/Series/Derived/PVT.pm
SHA256 56ef8a3a9b285981e4120d0d1cb9014f805d422388dc22160a30faff6be26ee4 lib/App/Chart/Series/Derived/ParabolicSAR.pm
SHA256 0014821f4047ce9c4e1f40dd52a5e47a9a74ff61a3201f93c73bea4a48aa2118 lib/App/Chart/Series/Derived/Prev.pm
SHA256 73fa9a2b16f2c9f308bc6139fc5682e5fe6a5182c8efa7d5af5e860e29fa7640 lib/App/Chart/Series/Derived/QStick.pm
SHA256 8ce50abc839b0dcd3a26e91bd9e8ce0a68587501a053a9a061bfb4276e542f88 lib/App/Chart/Series/Derived/RAVI.pm
SHA256 d9c06b874c5c4d671c9ebdf5f8a81076980c4829e7ad7ed63cdc8ee2f29ae536 lib/App/Chart/Series/Derived/REMA.pm
SHA256 ee222ba20d58520b3aa523cb5bae5fab622ee84f27b38a696c355cfb833c762a lib/App/Chart/Series/Derived/REMA_Momentum.pm
SHA256 66df5ad53ec8e915b3c4b2ea0df18203371946895a54271e980a8acea4e293ce lib/App/Chart/Series/Derived/ROC.pm
SHA256 4b4ea36ed94a16ba746a6d0f3340c85122038a5f7430f449e3b51691c8d1f3f9 lib/App/Chart/Series/Derived/RSI.pm
SHA256 962fd2e89c24740b3f934c1a17d0ddfe9136cddfd150f4e4a441a576f04f4f89 lib/App/Chart/Series/Derived/RSquared.pm
SHA256 fd7a1c0f5242aa3fe6e329acab61587856f3266642b1749742b6bbcb7739df26 lib/App/Chart/Series/Derived/RVI.pm
SHA256 24fbb870d8141cc55972b8f57c1191d1840178ef067c92c2145f8d8f33759915 lib/App/Chart/Series/Derived/RWI.pm
SHA256 45945039c38f1ba791d36cee0787ec833e9d0bd21bbc02871b6b0d3586030348 lib/App/Chart/Series/Derived/RangeMidpoint.pm
SHA256 e1b08e87561363c4b12eb845a233ab474b48b16224391685428575641e60b69a lib/App/Chart/Series/Derived/Trendscore.pm
SHA256 e19996bb18c136c2e67fbaa9caa51984f7eee834556cfc02bb207cc07a0e11c1 lib/App/Chart/Series/Derived/TrueRange.pm
SHA256 e0d3d6be60b805da85f618c44d4a5bbd8ff4f02cf3d7d2f6b6c0630df20e3cd6 lib/App/Chart/Series/Derived/TwiggsMF.pm
SHA256 79dc4216d5ab0b9d143639b1b359086251d6bd56eaf595cb38c3909bc6200ef4 lib/App/Chart/Series/Derived/TypicalPrice.pm
SHA256 7046188f0acbf1fb2f34e26adab05989b1315dd7d4df215ca1cb92f1dd6b5609 lib/App/Chart/Series/Derived/Ulcer.pm
SHA256 65f19e7f37a7627abeebb9644e8496a8a8fa9156719423d72c9b7dd309a993b6 lib/App/Chart/Series/Derived/Ultimate.pm
SHA256 81d559be3990aaa017cbe0b1b16384db93332ed27f4f16b52333253a114f8560 lib/App/Chart/Series/Derived/VHF.pm
SHA256 61201838fd52500824064a9709f0f6e44bdd10b6e9aaf7e77bdd9ca61ee4bbdf lib/App/Chart/Series/Derived/VIDYA.pm
SHA256 537d05cca146f69809d0030e130b94cccf67b8fc88ed061f1618ba733c32a816 lib/App/Chart/Series/Derived/VIDYAalpha.pm
SHA256 b5ef7e8b5001e81e871845f42a1798eb033e675ca9c0527aade675a965ce1653 lib/App/Chart/Series/Derived/VOLR.pm
SHA256 96fe4954586a1963c5875b4a7cccb389fb857e86404bfec86c0819c57438f208 lib/App/Chart/Series/Derived/VWMA.pm
SHA256 94ba6edebff428bb581fa5732d672262e5f90ee1638defba08987749709e87c2 lib/App/Chart/Series/Derived/Volume.pm
SHA256 8557727a703c519b45a85d2be95e951d8e1d2586d92f43948ad6b31f3b4797f4 lib/App/Chart/Series/Derived/WMA.pm
SHA256 c2a0f3485b820a8d10eb55b87be666d11f4dd787f687ac9c41b9faa104963dbc lib/App/Chart/Series/Derived/WeightedClose.pm
SHA256 2c676cf090d6f7b858dfc0968c69fac1ee46de894e282efa31a13b091837369c lib/App/Chart/Series/Derived/WilliamsAccDist.pm
SHA256 cfba35df8aa909156234dc97cea5cbdd0243b7d9c69f721064078b24ebefb999 lib/App/Chart/Series/Derived/WilliamsR.pm
SHA256 4d628bb9206e6627fd79d4aec40db26e6b2020b7bba1a6cc48c9ac947283b9fe lib/App/Chart/Series/Derived/ZLEMA.pm
SHA256 dae86078de16d25efb37bd4be8cbf68ecb59456fd4e09d8bf08d555be7fa86af lib/App/Chart/Series/Derived/ZigZag.pm
SHA256 2ccdb9ba0b1e26a58beb61706ee546920fee259c936f681da81c6469265f50bb lib/App/Chart/Series/Func.pm
SHA256 b12fe09dda7b121f3fcb2ea72b4269e707a4e043a41ecb1c09761164ca17d3cc lib/App/Chart/Series/GT.pm
SHA256 89d29ec5c755773c0614d01e126503880831257c61bd1eb3f11509d6784ce206 lib/App/Chart/Series/Indicator.pm
SHA256 928c9bfc9f7506f985e052690dfaca9cc32c53a400080d161b3ef8c3edbc6722 lib/App/Chart/Suffix/BE.pm
SHA256 cfccfee81813f2c1bca6f750a0761fc7d902391877c8640be6f4d5f9967feef3 lib/App/Chart/Suffix/BEN.pm
SHA256 ccf46f29a8ee610b1f2518902ddace0d0d5afb4d474d572edb9afec6ad5dbf33 lib/App/Chart/Suffix/BI.pm
SHA256 30c82773a1fa3d0a36797e9f4d52b83d1289e8b5d0e10b5c1788d82b2ee069a0 lib/App/Chart/Suffix/BK.pm
SHA256 1f80b8b239d3d9ffc3f5a3fb9673e0d9f5c65f752ae48f553b7eadb42c6f61c3 lib/App/Chart/Suffix/BM.pm
SHA256 ecd5d1e0b1dde16ae9d500ca6e163d8db888d06ae50555c637dd46f44689ed9f lib/App/Chart/Suffix/BO.pm
SHA256 c057900cc2b9a81dad605b5041764f1a713adfe6b00ccdf9e4789e28cc7ae180 lib/App/Chart/Suffix/CA.pm
SHA256 86b30daf5085797c3c15905afa4f60e61199a76567d14724c66dc9eccf9ed5cd lib/App/Chart/Suffix/CAS.pm
SHA256 8f850405bdd2240dbe239da4235aa8728c19d13690435f7294482dc7912cf712 lib/App/Chart/Suffix/CBT.pm
SHA256 d5ac9784cdb3261fd907010d12ee39c120ae3064e531cdd1e4a736b67584395e lib/App/Chart/Suffix/CCOM.pm
SHA256 3d515159dfb3d2edce6d51404bfc3adc4f18b049b3fa777fb864f5a00adc5278 lib/App/Chart/Suffix/CME.pm
SHA256 2b58623b49f798eb9610c0f5f9dd8808141aa096d26292776a83bde08cd06a34 lib/App/Chart/Suffix/CMX.pm
SHA256 cf6f58a5a7c6641f6cb3f7066223f7808480743139a3a8156799eedcbbc0a5d8 lib/App/Chart/Suffix/CO.pm
SHA256 1b1c20f00a0eb20a6e1160c6a85d56e8a0583a5712fca00f060226867cc2e077 lib/App/Chart/Suffix/CR.pm
SHA256 d5bf6a411a5c5b9a5c9e761f9370de48d103888730fd500cd44b8de979deca41 lib/App/Chart/Suffix/D.pm
SHA256 7339afad25703846795e9c3764ec641e9817aa9947542376cddd95d5c62bfe01 lib/App/Chart/Suffix/DE.pm
SHA256 52d473a87693b11e32039e351954169e0fc3beb03879595ee33af178d80ca6a4 lib/App/Chart/Suffix/F.pm
SHA256 7af472c6dcaf14636791086da5865a92b7fe5ea0920d2162eea45a1ea03d154a lib/App/Chart/Suffix/FQ.pm
SHA256 254442a72bd4a6740d8d8014d20020830402520668d4c62b2200436c9233ede5 lib/App/Chart/Suffix/GHA.pm
SHA256 9f49e952588ea86cb218563ed0331fe67021223a5e89cc0ec1b566b26bf4b74a lib/App/Chart/Suffix/H.pm
SHA256 d550b61061e6f12cdadc12c9a9dade7162c39429fc9026eb700d668e14b8609c lib/App/Chart/Suffix/HA.pm
SHA256 0080da714fade77d65d0ef608805d6c165b8a01c32459c778005f09f5a327f4a lib/App/Chart/TZ.pm
SHA256 32de239882b5a6f65939462c6f9334839167b123f058b8502e82c1af0906af09 lib/App/Chart/Texinfo/Util.pm
SHA256 9e6b8e6bdd22861966f6afb08324cc447883f5069f22d3b9c61d5ab9b121db5c lib/App/Chart/Tie/GetSetKey.pm
SHA256 cfd8a170fa4d5fb8c36b5a0a683cd24e8530d1fa001e2e53ac16c5cf9058b7f9 lib/App/Chart/Tie/GetSetMethod.pm
SHA256 13e72e8736324d39782a90bdb331255f347741e49c51fc5222433562695cf527 lib/App/Chart/Tie/Hash/Union.pm
SHA256 49ac9e99280f7b5ff2cb62460e3ee99cfa7ed0489b20b334a1b702ab1818090e lib/App/Chart/Timebase.pm
SHA256 2f3c9b497c266e2bf616a7fe4b00eb1a7f29f86d0d70a91b22dbce640693d5b3 lib/App/Chart/Timebase/Days.pm
SHA256 f832111f030375f5811731d8a7992d69e1574c156450becfca4f40288e47ae4c lib/App/Chart/Timebase/Decades.pm
SHA256 6ba593801cb88a44d766ef7ba2ec29da00be53beb5e7171b2271d452ec2c896a lib/App/Chart/Timebase/Months.pm
SHA256 2407ad00f1b30f74ba32486379c603936acaa9e86ab01ca2a815cab86f91825f lib/App/Chart/Timebase/Quarters.pm
SHA256 6524043c1516dd1f1fc5f8ec5538e36fb962d4e5e2ec159402d5587f8c6f103d lib/App/Chart/Timebase/Weeks.pm
SHA256 c315cb4dfbf85ec683ae71a64613f0fe4de73d0aae10f6142e3619cfdb803587 lib/App/Chart/Timebase/Years.pm
SHA256 68228c52ddf2be02c27ff5670c834a3aadad4c6f1723f837dbdfae54316e5aa8 lib/App/Chart/UserAgent.pm
SHA256 e577b6c2f81f22d43c922ede410157e66b4bee099c6405b35e05307004312a73 lib/App/Chart/Vacuum.pm
SHA256 aca36821283d43343cff418c5095dbc3b1eef00dca3d2c2564bf42d1cd5dad60 lib/App/Chart/Weblink.pm
SHA256 e6c15e64fad11aad88d30513d760c710467ef51388af60c1c1d6fedcbdb62f65 lib/App/Chart/Weblink/SandP.pm
SHA256 1ed76f966b50a15f496f1511d447d3a0c9d1bab81a05e2529c41717bd4832ce1 lib/App/Chart/Yahoo.pm
SHA256 c4f3d088dcb50077ae9870fa5bdaa848fe8815b4d7796359df6a008e4ab5d26a lib/App/Chart/chart.bash
SHA256 2588648a609334978bc5b9f4d299a81986d7b09c8430bb335a1ef5007d3773f9 lib/App/Chart/chart.desktop
SHA256 a8610b0977227aa29ee63ce5d90b5c4d9ababfaab8253aa6e7148b63d3d8841c lib/App/Chart/chart.xpm
SHA256 72c07d23d2d911d81cdd01a255835ae75e81cd868b64eb3d5bdb94f95a43084c lib/App/Chart/doc/chart-dema-3-weights.png
SHA256 52fa1d18f2192e756c2cd159cbce44e10a1748d496ae29d5a54dd7e456d36330 lib/GT/DB/Chart.pm
SHA256 81b49242936bd334c753e104edaf47584a72e11f182f2b583b44b8d463188def lib/LocaleData/de/LC_MESSAGES/App-Chart.mo
SHA256 e627d2f8e1ab0af60a41277507519776afde874de904c47f95f7a6cb367707c3 lib/LocaleData/en_US/LC_MESSAGES/App-Chart.mo
SHA256 f94c151c321d275dc2c3a87464f69e5ffb334bb83ef7554a431ed3f926ec519e lib/LocaleData/fr/LC_MESSAGES/App-Chart.mo
SHA256 211524ecb41d293bf8dac010ee02a4d4646497c8c84c4a9e7365806a4118ad21 lib/LocaleData/la/LC_MESSAGES/App-Chart.mo
SHA256 23a4d11956bc60de9543eb5ce00d2900e48ae2afa13e2a395fe3d5cb1b1c2db5 maybe/BrowseHistoryDialog.pm
SHA256 2eef1e93a1f7c854b6ae623c159a95f6691da6cffe358154b0d968c372f2c662 maybe/Build-PL
SHA256 e074c895a39391b85856350347e6822355de6e6023f4070854fffe50b6b4a902 maybe/IdleObject.pm
SHA256 57e45bf3816115ef4b7d06eee97b3cb3311276c658871a99a6f22e4b7a7d5538 maybe/RawDailyModel.pm
SHA256 9690610bd0244feb238201e2f1c11a32a7297ac50c5f951fccd2424bca92c432 maybe/SMA-class.pm
SHA256 9b3be2533d82b783dca440466eb4a869cd7d52f107d32053540c14511db70fa9 maybe/SignalObject.pm
SHA256 54a28315de00acc3ad9d1dd203055ce910394587f3cc1068c42f0e94070b0a32 maybe/SignalObject.t
SHA256 a7d6aa24f589fb783c9ea7534c8d645fca1ec4147be2dc1bdfc011dd116b8259 maybe/SourceObject.pm
SHA256 ee4ee2d164ccaa90a2b2ab9b32bf06638160c250b41891fc0018eb0f19ddb321 maybe/SymbolHistory.pm
SHA256 2871f16fa6c6038f54a90ace61b55e37702d508c35f320df9e7c98ef454f5b50 maybe/SymbolHistory.t
SHA256 d15b2fe3de8be19230d7901e3e503434fe6126438adc5e14639f24a09c4db897 maybe/TimerObject.pm
SHA256 9dbf9d180b4f907d71dd16f0e56521c9c8706484fcce61b626809f28ea6de1ea maybe/TimerObject.t
SHA256 34edec944776dd215b0e17990ff57e6f56077adc7457823006617ae68b0b9a9b maybe/TreeModelConcat.pm
SHA256 10cea3e7c8db279784f032dc7846f77778086dfc8f207cfa5b04e73e432be534 maybe/TreeOfTreesModel.pm
SHA256 1faa6b05492954ff40836458f2245056e83f8feb4ae47f8c50eb3785bd59d2b5 maybe/t-symbol-history.pl
SHA256 b54f04ac96334380c4428c2800d02eb8117f1fabf68d0cfd3cff00ea9cdaa988 maybe/unused.pm
SHA256 dde37fbb4334fffdb0e54b48b71484c324f453ecf3341a6380a2ee84619dce5e misc/t-symlist-menu.pl
SHA256 c429117bfc542298d5ac3fd72f96d422eee234d00eccfb3988cf62079bdb214b misc/t-symlist-model.pl
SHA256 7b5fe4d726a897b67ec9c349557e1beb4423d09701a6672b84e90432bb9b4b4d misc/t-symlist-tree.pl
SHA256 8cbd395d5847716e606dd6becacb5831e5c3bf8257b5309c8fdde6013840beb2 misc/t-symlist.pl
SHA256 9c3740a52f3cdab7326e6ee5dc3ea6e74fda6197573877caa599ddba3816fb0e misc/t-textbuffer.pl
SHA256 79907d407d2c82a5ad137a9995a552863272d1e8d11f948dcafb3f366c88a535 misc/t-tge.pl
SHA256 23a7d8d04feedacd646bb5550862095c1d1868215d46c34586aec21c50d6cdfe misc/t-ticker.pl
SHA256 0710b0dfdfb9f96b5d4ea89e282bb6257f877c9ab14789cc51628f567441c93a misc/t-tie-hash-union.pl
SHA256 57b64e926f5c88e0a0a3c7b8b52452f7b2a3b83f05cecf95b9011839b8a86657 misc/t-tie-weaken.pl
SHA256 34e686f52a48605d1324b4e193cc31beef654e52bde7ef581e44e605ef5994f3 misc/t-timebase.pl
SHA256 1db1ab8b2b535f9ab672b2490c06d1116993a25e36c9219a7c6326040452bdbb misc/t-timer-object.pl
SHA256 24f511d67820204708ac297429be7ef33f58a63db06de5e7b849dba4b1473ac6 misc/t-tsp.pl
SHA256 3fbacdc88daad94c39c4ee8f2c1211c4f7021ab02b8a3a82913f36f43cf4f974 misc/t-useragent.pl
SHA256 16b64ff65593bbed47c7507127a39991758e2a552a9bfd53334acc015a66404b misc/t-variable-magic.pl
SHA256 963d16c4a00447b9778a3f63e8c44b6b2d365765d29dcb3987d89bc4552cb877 misc/t-viewstyle.pl
SHA256 a60c8ee45be71ed326a16c216e41705d187c0c9a121050e89e39de21e7624fee misc/t-volume-series.pl
SHA256 06438e1c71cec92c9527ccd850c45800e4364b4c23d4a43e6f52cf5ef8437840 misc/t-watchlist-model.pl
SHA256 fa4261f92dddb973db6eecfbba682ba2932fab7a3ea6cd5a19e14c516599550b misc/t-widget-disc.pl
SHA256 ed2bc868cb58120bd77e037d21c49cb41a020c481a4a0b0c155af999f36b81cf misc/t-widget-tracker.pl
SHA256 ac394cb13221ceaa01bdbd928b81336eb6218a4fba96c944aca5f065b44111a8 misc/t-widget.pl
SHA256 8859c1258371b8dfebc21fbddf0588ef11b67791309f5447c1d3dc0192f90739 misc/t-write-only.pl
SHA256 49a8d4533690f526bd7d500eed8a79a661e127296268097a52248bfdf834dbaf misc/t-yahoo.pl
SHA256 bc41f2c5515412b29223c90c946d08069dc45b05567f69ef129711503b6e1c06 misc/ta-lib.pl
SHA256 e5b76c84cf9909fd0c5a7bba60362e516206dc75ccd464edc7e1ea39a75ea1fb misc/temp-window.pl
SHA256 f8fe6ec09fb4558b2dd949f13c6683e9dc1f83f77530bc01cb170362dedb237f t/Volume.t
SHA256 9c5f264f7a2c5e3572e9c4a5876d1d7d99ce62ede2a4c30b5087cc40dd96a74c t/WatchlistDialog.t
SHA256 e7014a6ad95c41c4904fc9245227fafac1cf98a97d2d9b4525c5fd53c6271367 t/WatchlistModel.t
SHA256 87ce9258410525746737780d44d2d0bd5d0d8e2945c5e32fe17bccc689c58e97 t/Yahoo.t
SHA256 0b27d94c226665360f837c9cfeffc59616cba585d3ded35340d9129e73725181 t/bash-completion.bash
SHA256 7470edf1c824b2a84f0125e097d9cca62a145ac306a8dafe7f8a77d3b510c317 t/bash-completion.t
SHA256 cf707516f815923d70113605f612435bcf8126db28e0697bed6a19e2d9b79032 unused/CommSec.pm
SHA256 43408c2ade14fed7a26aefc13e9e7cccb31d8eb99755a7bdaa8867f422c489ca unused/Float.pm
SHA256 511ac10e3e1d51fd09680e8cc7f1e3de6594eb49d70876a0c2eddb012eae0b6a unused/NZX-old.pm
SHA256 2f4abf10405bbe15c6140f17f0875f6054febb63b0e78027d985858ad1eda47c unused/TradingRoom.pm
SHA256 f304640458c3eba63d09250b7a6a2c42566442573adfe69888208c59c313423c unused/Yahoo-v7.pm
SHA256 1f78114bbd088579d2ec58d4221908a9d2a50ec0b8228b3b884fcc7f478fa180 unused/YahooOld.pm
SHA256 fca4a298c6567e289bfb6d385ebf9c1e749ea84160c383d3d2debc8a832346ea unused/t-tradingroom.pl
SHA256 ef75312e02ddcfed7095de7eecebc6b7b863d56acd9b64142737ab7a5edb57e3 xt/0-META-read.t
SHA256 d1a5584b94be4ea06efcf8b8446f060ac11cda4d4a4ec02e03b54f2ee2008848 xt/0-Test-CheckChanges.t
SHA256 be42622f3841d04240cb1284e6b30e1af81cb0fcb56d29e853c70af656653488 xt/0-Test-DistManifest.t
SHA256 48b441e0c335e93946d913897e342662387788833229c5ba5fac57f0ff3d567c xt/0-Test-Pod.t
SHA256 d33b48c1986680cd934565250bd9e3879674dfe6aad69b1717ed76354a29ff44 xt/0-Test-YAML-Meta.t
SHA256 3bf4a1d420b60e022b3ebf10b9e369e5d03f393308f2da95cba663ddcab3d67e xt/0-desktop-file-validate.t
SHA256 2a45215859688affb1efc824fa060f3d73b8b6287d9010aef98c4bd308f82491 xt/0-exe-shebang.t
SHA256 75a73148514fad2715873d1e02a6fa8e3b9cc43f7aff97aaffac9721c086a319 xt/0-file-is-part-of.t
lib/App/Chart/Download.pm view on Meta::CPAN
# internal message from LWP when a keep-alive has missed the boat
if ($resp->status_line =~ /500 Server closed connection/i) {
substatus (__('retry'));
$resp = $ua->request ($req);
}
my $code = $resp->code;
if ($resp->is_success
|| ($options{'allow_401'} && $code == 401)
|| ($options{'allow_404'} && $code == 404)
|| (($etag || $lastmod) && $code == 304)
|| http_code_is_allowed($options{'allow_http_codes'}, $code)) {
substatus (__('processing'));
return $resp;
} else {
my $error = $resp->status_line . "\n";
if ($code == 500) {
$error .= $resp->decoded_content;
unless ($error =~ /\n$/s) { $error .= "\n"; }
}
lib/App/Chart/DownloadHandler/IndivChunks.pm view on Meta::CPAN
$options{'url_func'} or croak "missing url_func for ".__PACKAGE__;
return $class->SUPER::new (%options,
proc => \&indivchunks_download,
backto => \&backto,
proc_with_self => 1);
}
sub indivchunks_download {
my ($self, $symbol_list) = @_;
my $allow_http_codes = $self->{'allow_http_codes'} // [404];
foreach my $symbol (@$symbol_list) {
my $avail_tdate = $self->available_tdate_for_symbol ($symbol)
+ ($self->{'available_tdate_extra'} || 0);
my $lo_tdate = App::Chart::Download::start_tdate_for_update ($symbol);
my $empty_count = 0;
if ($lo_tdate > $avail_tdate) {
App::Chart::Download::verbose_message
(__x("{name} nothing further expected yet for {symbol}",
lib/App/Chart/DownloadHandler/IndivChunks.pm view on Meta::CPAN
# symbol => $symbol));
# last;
# }
$lo_tdate = $hi_tdate + 1;
}
}
}
sub backto {
my ($self, $symbol_list, $backto_tdate) = @_;
my $allow_http_codes = $self->{'allow_http_codes'} // [404];
foreach my $symbol (@$symbol_list) {
my $hi_tdate = App::Chart::Download::start_tdate_for_backto ($symbol);
my $empty_count = 0;
while ($hi_tdate >= $backto_tdate) {
my $lo_tdate = $hi_tdate - $self->{'chunk_size'} + 1;
App::Chart::Download::status
($self->{'name'}, __('data'),
lib/App/Chart/DownloadHandler/IndivInfo.pm view on Meta::CPAN
my ($self, $symbol_list) = @_;
my $symbol = $symbol_list->[0];
my $dbh = App::Chart::DBI->instance;
my $recheck_key = $self->{'recheck_key'};
my $timestamp = App::Chart::Download::timestamp_now();
App::Chart::Download::status ($self->{'name'}, $symbol);
my $url = $self->{'url_func'}->($symbol);
my $resp = App::Chart::Download->get ($url, allow_404 => 1);
my $h;
if ($resp->is_success) {
$h = $self->{'parse'}->($symbol, $resp);
} else {
$h = {};
}
my $changed = 0;
App::Chart::Database::call_with_transaction
($dbh, sub {
lib/App/Chart/Pagebits.pm view on Meta::CPAN
my $h = eval ($str || '{}');
if (! App::Chart::Download::timestamp_within ($h->{'timestamp'},
$freq_days * 86400)) {
App::Chart::Download::status ($options{'name'});
my $resp = App::Chart::Download->get
($url,
method => $method,
data => $data,
etag => $h->{'ETag'},
last_modified => $h->{'Last-Modified'},
allow_404 => $options{'allow_404'},
user_agent => $options{'user_agent'},
);
if ($options{'allow_404'} && $resp->code == 404) {
return undef;
}
if ($resp->is_success) {
my $content = $resp->decoded_content (raise_error=>1);
$h = $parse->($content, $resp);
$h->{'ETag'} = scalar $resp->header('ETag');
$h->{'Last-Modified'} = $resp->last_modified;
}
$h->{'timestamp'} = App::Chart::Download::timestamp_now();
lib/App/Chart/Suffix/TGE.pm view on Meta::CPAN
# return true if successful
sub download_year_attempt {
my ($commodity, $url) = @_;
$url =~ m{/([^/]+)$/};
my $filename = $1;
App::Chart::Download::status (__x('TGE data {filename}',
filename => $filename));
my $resp = App::Chart::Download->get ($url, allow_404 => 1);
if (! $resp->is_success) { return 0; }
# got the expected data, process it
my $h = zip_parse ($resp);
$h->{'url_tags_key'} = 'TGE-day';
return 1;
}
# eg. http://www.tge.or.jp/data/down_load/co01040610050609.zip
# for Jun/10/2004 - Jun/09/2005
lib/App/Chart/Yahoo.pm view on Meta::CPAN
#------------------------------------------------------------------------------
# Latest
#
# This uses for example
#
# https://query1.finance.yahoo.com/v7/finance/chart/BHP.AX?period1=1718841600&period2=1719532800&interval=1d&events=history&close=unadjusted
#
# periodi1 and period2 are Unix style seconds since 1 Jan 1970 GMT.
#
# https://stackoverflow.com/questions/47076404/currency-helper-of-yahoo-sorry-unable-to-process-request-at-this-time-erro
# ->
# https://stackoverflow.com/questions/47064776/has-yahoo-suddenly-today-terminated-its-finance-download-api
#
# FUTURE: Intending to switch this over to v8 the same as the daily
# data, and possibly a single common parse. But this latest quote
# way has survived without problem during cooking and crumb troubles,
# not don't need to rush to change what's working.
App::Chart::LatestHandler->new
(pred => $latest_pred,
lib/App/Chart/Yahoo.pm view on Meta::CPAN
my $events = 'history';
my $url = "https://query1.finance.yahoo.com/v7/finance/chart/"
. URI::Escape::uri_escape($symbol)
."?period1=$lo_timet"
."&period2=$hi_timet"
."&interval=1d"
."&events=$events"
."&close=unadjusted";
# unknown symbol is 404 with JSON error details
#
my $resp = App::Chart::Download->get ($url, allow_404 => 1,);
App::Chart::Download::write_latest_group
(latest_parse($symbol,$resp,$tdate));
}
}
sub latest_parse {
my ($symbol, $resp, $tdate) = @_;
my $content = $resp->decoded_content (raise_error => 1);
my $json = JSON::from_json($content);
lib/App/Chart/Yahoo.pm view on Meta::CPAN
# One download for each symbol.
# Date ranges in limited size chunks.
# (Don't know whether Yahoo has a limit on size of download,
# but let's try not to discover one.)
#
App::Chart::DownloadHandler::IndivChunks->new
(name => __('Yahoo'),
pred => $download_pred,
url_func => \&daily_url_func,
parse => \&daily_parse,
allow_http_codes => [400,404],
chunk_size => 250, # about 1 year at a time
available_tdate_by_symbol => \&daily_available_tdate,
available_tdate_extra => 2,
);
sub daily_available_tdate {
my ($symbol) = @_;
# As of September 2017, daily data is present for the current
# day's trade, during the trading session.
misc/t-yahoo.pl view on Meta::CPAN
print $content;
exit 0;
}
{
# v7 in June 2024
# https://finance.yahoo.com/quote/AMP.AX/history?p=AMP.AX
# redirect to:
# https://finance.yahoo.com/quote/AMP.AX/history/?p=AMP.AX
# 404
exit 0;
}
{
require HTTP::Response;
my $filename = "$ENV{HOME}/chart/samples/yahoo/history?p=BHP.AX";
my $resp = HTTP::Response->new();
my $content = slurp ($filename);
$resp->content($content);
$resp->content_type('text/html; charset=utf-8');
misc/t-yahoo.pl view on Meta::CPAN
$symbol = 'WFD.AX';
$App::Chart::option{'verbose'} = 2;
my ($url,$jar) = App::Chart::Yahoo::daily_url_and_cookiejar
($symbol,
App::Chart::ymd_to_tdate_floor (2017,8,15),
App::Chart::ymd_to_tdate_floor (2017,9,8));
### $url
### jar: $jar->as_string
my $resp = App::Chart::Download->get($url,
cookie_jar => $jar,
allow_404 => 1);
my $resp_size = length($resp->as_string);
print "size $resp_size\n";
print $resp->status_line,"\n";
print $resp->headers->as_string;
my $content = $resp->decoded_content (raise_error => 1);
print $content;
print "\n";
exit 0;
}
misc/unused.pl view on Meta::CPAN
# http://finance.yahoo.com/q/hp?s=AMP.AX
#
# which had a CSV link like
#
# http://ichart.finance.yahoo.com/table.csv?s=NABHA.AX&d=5&e=26&f=2015&g=d&a=3&b=26&c=2015&ignore=.csv
#
# national sites like au.finance.yahoo.com with a redirector like
#
# http://au.rd.yahoo.com/finance/quotes/internal/historical/download/*http://ichart.finance.yahoo.com/table.csv?s=AMP.AX&d=10&e=26&f=2007&g=d&a=0&b=4&c=2000&ignore=.csv
#
# If there's no data at all in the requested range the response is a 404
# (with various bits of HTML in the body).
sub daily_url {
my ($symbol, $lo_tdate, $hi_tdate) = @_;
my ($lo_year, $lo_month, $lo_day) = App::Chart::tdate_to_ymd ($lo_tdate);
my ($hi_year, $hi_month, $hi_day) = App::Chart::tdate_to_ymd ($hi_tdate);
return 'http://ichart.finance.yahoo.com/table.csv?'
. 's=' . URI::Escape::uri_escape ($symbol)
. '&d=' . ($hi_month - 1)
. '&e=' . $hi_day
unused/Yahoo-v7.pm view on Meta::CPAN
#------------------------------------------------------------------------------
# Latest
#
# This uses for example
#
# https://query1.finance.yahoo.com/v7/finance/chart/BHP.AX?period1=1718841600&period2=1719532800&interval=1d&events=history&close=unadjusted
#
# periodi1 and period2 are Unix style seconds since 1 Jan 1970 GMT.
#
# https://stackoverflow.com/questions/47076404/currency-helper-of-yahoo-sorry-unable-to-process-request-at-this-time-erro
# ->
# https://stackoverflow.com/questions/47064776/has-yahoo-suddenly-today-terminated-its-finance-download-api
App::Chart::LatestHandler->new
(pred => $latest_pred,
proc => \&latest_download,
max_symbols => 1); # downloads go 1 at a time
sub latest_download {
my ($symbol_list) = @_;
unused/Yahoo-v7.pm view on Meta::CPAN
my $events = 'history';
my $url = "https://query1.finance.yahoo.com/v7/finance/chart/"
. URI::Escape::uri_escape($symbol)
."?period1=$lo_timet"
."&period2=$hi_timet"
."&interval=1d"
."&events=$events"
."&close=unadjusted";
# unknown symbol is 404 with json error details
#
my $resp = App::Chart::Download->get ($url, allow_404 => 1,);
App::Chart::Download::write_latest_group
(latest_parse($symbol,$resp,$tdate));
}
}
sub latest_parse {
my ($symbol, $resp, $tdate) = @_;
my $content = $resp->decoded_content (raise_error => 1);
require JSON;
unused/Yahoo-v7.pm view on Meta::CPAN
# since 1 Jan 1970. Not sure of the timezone needed. Some experiments
# suggest it depends on the timezone of the symbol. http works as well as
# https. The result is like
#
# Date,Open,High,Low,Close,Adj Close,Volume
# 2017-09-07,30.299999,30.379999,30.000000,30.170000,30.170000,3451099
#
# The "9999s" are some bad rounding off to what would be usually at most
# 3 (maybe 4?) decimal places.
#
# Response is 404 if no such symbol, 401 unauthorized if no cookie or crumb.
#
# "events=div" gives dividends like
#
# Date,Dividends
# 2017-08-11,0.161556
#
# "events=div" gives splits like, for a consolidation (GXY.AX)
#
# Date,Stock Splits
# 2017-05-22,1/5
unused/Yahoo-v7.pm view on Meta::CPAN
. URI::Escape::uri_escape($symbol)
. "?period1=$lo_timet"
. "&period2=$hi_timet"
. "&interval=1d"
. "&events=$events"
# . "&crumb=$crumb"
;
my $resp = App::Chart::Download->get ($url,
allow_401 => 1,
allow_404 => 1,
# cookie_jar => $jar,
);
if ($resp->code == 401) {
App::Chart::Download::verbose_message ($resp->as_string . "\n");
if (++$crumb_errors >= 0) {
die "Yahoo: crumb authorization failed";
}
App::Chart::Database->write_extra ('', 'yahoo-daily-cookies', undef);
redo SYMBOL;
}
if ($resp->code == 404) {
print "Yahoo $symbol does not exist\n";
next SYMBOL;
}
$parse->($symbol,$resp,$h, $hi_tdate);
}
### $h
App::Chart::Download::write_daily_group ($h);
}
}
unused/YahooOld.pm view on Meta::CPAN
# my $crumb = URI::Escape::uri_escape($data->{'crumb'});
# my $jar = http_cookies_from_string($data->{'cookies'} // '');
#
# my $events = 'history';
# my $url = "http://query1.finance.yahoo.com/v7/finance/download/"
# . URI::Escape::uri_escape($symbol)
# . "?period1=$lo_timet&period2=$hi_timet&interval=1d&events=$events&crumb=$crumb";
#
# my $resp = App::Chart::Download->get ($url,
# allow_401 => 1,
# allow_404 => 1,
# cookie_jar => $jar,
# );
# if ($resp->code == 401) {
# if (++$crumb_errors >= 2) { die "Yahoo: crumb authorization failed"; }
# App::Chart::Database->write_extra ('', 'yahoo-daily-cookies', undef);
# redo SYMBOL;
# }
# if ($resp->code == 404) {
# print "Yahoo $symbol does not exist\n";
# next SYMBOL;
# }
#
# App::Chart::Download::write_latest_group
# (latest_parse($symbol,$resp,$tdate));
# }
# }
#
# sub latest_parse {
unused/YahooOld.pm view on Meta::CPAN
# since 1 Jan 1970. Not sure of the timezone needed. Some experiments
# suggest it depends on the timezone of the symbol. http works as well as
# https. The result is like
#
# Date,Open,High,Low,Close,Adj Close,Volume
# 2017-09-07,30.299999,30.379999,30.000000,30.170000,30.170000,3451099
#
# The "9999s" are some bad rounding off to what would be usually at most
# 3 (maybe 4?) decimal places.
#
# Response is 404 if no such symbol, 401 unauthorized if no cookie or crumb.
#
# "events=div" gives dividends like
#
# Date,Dividends
# 2017-08-11,0.161556
#
# "events=div" gives splits like, for a consolidation (GXY.AX)
#
# Date,Stock Splits
# 2017-05-22,1/5
unused/YahooOld.pm view on Meta::CPAN
. URI::Escape::uri_escape($symbol)
. "?period1=$lo_timet"
. "&period2=$hi_timet"
. "&interval=1d"
. "&events=$events"
. "&crumb=$crumb"
;
my $resp = App::Chart::Download->get ($url,
allow_401 => 1,
allow_404 => 1,
# cookie_jar => $jar,
);
if ($resp->code == 401) {
if (++$crumb_errors >= 2) {
die "Yahoo: crumb authorization failed";
}
App::Chart::Database->write_extra ('', 'yahoo-daily-cookies', undef);
redo SYMBOL;
}
if ($resp->code == 404) {
print "Yahoo $symbol does not exist\n";
next SYMBOL;
}
$parse->($symbol,$resp,$h, $hi_tdate);
}
### $h
App::Chart::Download::write_daily_group ($h);
}
}
unused/YahooOld.pm view on Meta::CPAN
my ($symbol) = @_;
require App::Chart::Pagebits;
$symbol = URI::Escape::uri_escape($symbol);
return App::Chart::Pagebits::get
(name => __('Yahoo daily cookie'),
url => "https://finance.yahoo.com/quote/$symbol/history?p=$symbol",
key => 'yahoo-daily-cookies',
freq_days => 3,
parse => \&daily_cookie_parse,
user_agent => 'Mozilla/5.0',
allow_404 => 1);
}
sub daily_cookie_parse {
my ($content, $resp) = @_;
# script like, with backslash escaping on "\uXXXX"
# "user":{"age":0,"crumb":"8OyCBPyO4ZS"
# The form prior to about July 2023 was
# "user":{"crumb":"hdDX\u002FHGsZ0Q",
# The form prior to about January 2023 was
# "CrumbStore":{"crumb":"hdDX\u002FHGsZ0Q"}