Jump to content
Ketarin forum

appyface

Members
  • Posts

    459
  • Joined

  • Last visited

Posts posted by appyface

  1. Below is my XML to download Firefox Portable. This one still downloads, but stopped populating url:basefile and url:ext a short while ago.

     

    I have 'save to file' selected and my download filename is:

    D:\Stuff\filestore\usb_stick_portable_apps_etc\{url:basefile}_{vers}.{url:ext}

     

    Latest Firefox Portable is version 3.5.2, the output filename is now just: _3.5.2 because only my hard-coded underscore plus the version number is populated.

     

    The url for downloading 3.5.2 is:

    http://downloads.sourceforge.net/portableapps/FirefoxPortable_3.5.2_English.paf.exe

     

    So I had expected my output file to be named:

    FirefoxPortable_3.5.2_English.paf_3.5.2.exe

     

    As always, help is appreciated. Thanks!

    --appyface

     

     

    <?xml version="1.0" encoding="utf-16"?>

    <Jobs>

    <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="727374bd-ca54-4c28-a7e2-593f97808a10">

    <DownloadBeta>Default</DownloadBeta>

    <DownloadDate xsi:nil="true" />

    <CheckForUpdatesOnly>false</CheckForUpdatesOnly>

    <VariableChangeIndicator />

    <CanBeShared>true</CanBeShared>

    <ShareApplication>false</ShareApplication>

    <ExclusiveDownload>true</ExclusiveDownload>

    <HttpReferer>http://sourceforge.net/</HttpReferer>

    <Variables>

    <item>

    <key>

    <string>skimurl</string>

    </key>

    <value>

    <UrlVariable>

    <RegexRightToLeft>false</RegexRightToLeft>

    <VariableType>RegularExpression</VariableType>

    <Regex>(?<=download-box.*?href=").*?(?=")</Regex>

    <Url>http://portableapps.com/apps/internet/firefox_portable</Url>

    <Name>skimurl</Name>

    </UrlVariable>

    </value>

    </item>

    <item>

    <key>

    <string>vers</string>

    </key>

    <value>

    <UrlVariable>

    <RegexRightToLeft>false</RegexRightToLeft>

    <VariableType>RegularExpression</VariableType>

    <Regex>(?<=Portable Edition"><span><strong>Download ).*?(?=<)</Regex>

    <Url>http://portableapps.com/apps/internet/firefox_portable</Url>

    <Name>vers</Name>

    </UrlVariable>

    </value>

    </item>

    </Variables>

    <ExecuteCommand />

    <ExecutePreCommand />

    <Category>000100</Category>

    <SourceType>FixedUrl</SourceType>

    <PreviousLocation>D:\Stuff\filestore\usb_stick_portable_apps_etc\_3.5.2.</PreviousLocation>

    <DeletePreviousFile>false</DeletePreviousFile>

    <Enabled>true</Enabled>

    <FileHippoId />

    <LastUpdated>2009-08-13T03:49:56.88662</LastUpdated>

    <TargetPath>D:\Stuff\filestore\usb_stick_portable_apps_etc\{url:basefile}_{vers}.{url:ext}</TargetPath>

    <FixedDownloadUrl>{skimurl}</FixedDownloadUrl>

    <Name>Firefox Portable</Name>

    </ApplicationJob>

    </Jobs>

  2. I do this by defining a variable in the app that loads the URL of a version history page, news page, whatever I'm interested in seeing. I use this regex for the scrape: ^.

     

    This regex puts the first character on the webpage into the variable. The character value is unimportant, as the variable is not used anywhere, this is a working scrape only to keep Ketarin from reporting an error.

     

    It's a few extra clicks per app, to go see the webpage I've chosen for the 'dummy' variable. But as I don't have very many of these, it's a workable solution for me. YMMV...

     

    --appyface

  3. I could make use of this too.

     

    How about an addition to the right-click shortcut menu for apps, such as SHIFT-ALT-U for 'Force download'? Ketarin does its usual validation and processing (so variables get updated etc) but then ignores the end result of 'no download needed', and downloads the file anyway?

  4. I have been experimenting with the 'check no download' feature and a Change Indicator Variable (CIV) scrape, so Ketarin can visually alert me on those apps which may have new versions, that I must go download manually (because I do not yet have a valid download URL to use in Ketarin).

     

    There is a small obstacle to using Ketarin to provide 'alert only' in this way. The URL field is required in Ketarin, but in these cases I don't have a download URL...

     

    Ketarin can be 'tricked' with a download URL to some irrelevant file, such as a small GIF from some website. Ketarin must download this file once. Thereafter, assuming the download file is available and unchanged, the server vs. disk file comparison is essentially taken out of the equation, leaving just the CIV scrape for Ketarin to monitor for this app.

     

    But instead of using a 'trick', would it be possible to have the following enhancement?

     

    1. If the app is marked 'check no download' AND a CIV is provided, the download URL may be left blank if desired

     

    2. When update is issued against the app, and download URL is blank, Ketarin skips the file checking portion, using only the CIV processing to alert to possible new version

     

    Thoughts? Thanks as always for consideration.

     

    Best Regards,

    --appyface

  5. Hi Flo,

     

    Here's a log from an app using this option ('check, do not download'):

     

    3/18/2009 5:13:48 AM: X-Reminder Pro: Replacing {parturl} in 'http://www.xreminder.com/download/{parturl:1}' with 'xr422r.exe'

    3/18/2009 5:13:48 AM: X-Reminder Pro: Using referer: http://www.xreminder.com/download/

    3/18/2009 5:13:48 AM: X-Reminder Pro: Server source file: /download/xr422r.exe

    3/18/2009 5:13:48 AM: X-Reminder Pro: Determined target file name: d:\Stuff\filestore\xr422r.exe

    3/18/2009 5:13:48 AM: X-Reminder Pro: Checking if update is required...

    3/18/2009 5:13:48 AM: X-Reminder Pro: Update required, 'd:\Stuff\filestore\xr422r.exe' does not yet exist

     

     

    Could the log indicate this option ('check, do not download') is in use? Otherwise it looks like Ketarin should have downloaded. And it would have -- had this option not been selected.

     

    Thoughts? TIA,

    --appyface

     

    Hi Flo, I still use this function a fair bit (check but do not download), could that indication be added to the log output so I can readily see the reason Ketarin did not download the file for me? It would save me a step in verifying the results of a Ketarin run.

     

    TIA,

    --appyface

  6. I have a very simple app defined, URL to download is direct link with no variables, post etc. needed to download the file. I have one variable defined, to use in the downloaded disk filename.

     

    The webpage for the variable could not be loaded. However, the error message Ketarin gave was for the download URL, which was actually just fine (the download URL is hosted at a completely different server and IP).

     

    Since I had no problem accessing the file download URL from IE, but Ketarin repeatedly gave message that URL was timing out, it took me some minutes of experimenting with referrers, etc. before I finally thought to visit the variable edit pane. Only then did I see it is the variable's URL that was timing out, and not the download URL as Ketarin had stated in the error pop up.

     

    Just a minor thing, but would be helpful to see the actual URL timing out. Also, the log file states 'Failed, The operation has timed out' but does not ID any URL, would be good to see the correct URL in the log as well.

     

    Thanks and regards,

    --appyface

  7. Hi Flo,

     

    These are good suggestions, and would leave the existing functionality the way it is as you have asked.

     

    Another viewpoint. Would it be possible to alter the current functionality slightly, to require a keypress or a button, to evaluate the regex?

     

    I am thinking of a solution similar to the 'load' and 'find' buttons there now, for their respective boxes. This leaves much of Ketarin's existing functionality intact but changes the editing functionality slightly. With the URL and and 'find string' boxes, typing a change in their boxes doesn't automatically load a new URL or find the string, the buttons must be clicked to request it. For regex I am thinking when when an *existing* regex is being edited, then the auto-eval is not in effect, it will require a button click or a keypress, to request the re-evaluation of the contents of the regex box. I am a stickler for consistency so this seems intuitive to me as it is reasonbly consistent with the behavior of the other two boxes. Just another viewpoint.

     

    Another idea: Is it possible to make the call to the .net regex library with an event interrupt handler? As you know I've not worked with the .net languages -- in other languages I've used, an object-oriented call to a 3rd party function can include an interrupt event handler "hook" so that an abort request can be sent, the 3rd party function will terminate and return to the caller.

     

    If the regex appears 'hung' the person could click an 'abort regex eval' button to kill what appears to be a 'hung' task. Once that happens the button's label could change to 'Eval regex' as once aborted, this still leaves the problem of needing to wait until the edit finished, to start the eval again.

     

    Regardless, I'm sure you'll come up with something useful, Flo... thanks as always for your consideration.

     

    --appyface

  8. Why Ketarin is trying to process it yet? To me I am still editing, and I was definitely not done... there will be no catastrophic backtracking when I'm done...

     

    Can Ketarin NOT parse a regex until I'm ready to ask it to do so (ctrl-G or ?)? .*? is not an unusual edit especially if that is not all there is... but Ketarin wouldn't let me get that far.

     

    --appyface

  9. 1.0.7.272 This is current version of Ketarin, yes?

     

    Try this exactly as shown:

     

    1. Launch Ketarin directly by double-click EXE from windows explorer (and use jobs.db in same directory)

     

    2. Double-click app to edit it (choose any having at least one variable using regex)

     

    3. Click 'variables' button

     

    4. Click on variable name to load it

     

    5. Paste this regex over top of your regex: (?<=download-box.*?href=").*?(?=")

     

    6. Click in this regex to position cursor between href=" and the ) which follows it

     

    7. Type this to add to the regex at that position: .*?

     

    Inserting the .* characters works, then as soon as you type the ? character, Ketarin hangs. On my system it ties up 100% of one CPU core. No way out except to kill Ketarin.

     

     

    The above sequence recreates the hang no matter what jobs.db and what app. Actually, the app doesn't have to be using a regex or variable, this sequence recreates the hang even if I first add a variable and it to use regex, then paste the regex in.

     

    @Flo if you cannot recreate please let me know I'll send you my jobs.db and/or get debug information for you, to find out what is different on my system.

     

    Thanks and regards,

    --appyface

  10. Not been around much in recent months as am swamped... I confess to doing only a quick lazy search to see if this has turned up before... please point me if this has already been discussed, thanks.

     

    Request: Could CTRL-U be allowed to update the app even if the app is disabled?

     

    I have several apps that have been 'in progress' for some time now. These are the ones that need additional 'creativity' to work with Ketarin, or may never work... dunno. They are disabled so they will be skipped during an 'update all' run. Not a huge deal, but if I do get time to work on one it would be handy to be able to 'test' it with a manual update without having to enable it/disable it afterwards.

     

    I'm open to other ideas on this, I have but two requirements to meet: 1) These apps are skipped during "update all" run 2) I can issue a deliberate update request to 'test' my work without compromising #1.

     

    TIA for consideration of this request,

    --appyface

  11. Took me awhile to get back to this (the XML import issue), to test with Ketarin 1.0.6.

     

    I can still reproduce same behavior, -0- length db is created in the directory where I import the XML from, and Ketarin has error message. But doesn't throw exception any longer.

     

    If anyone would care to try to recreate, here's my setup. I'll assume the drive letter and actual directory names are unimportant, since I've been able to reproduce on a few different drives/directory names.

     

    1. Create full directory path: x:\ketarin_versions\ketarin-1.0.6\

     

    2. Copy latest Ketarin 1.0.6 exe into directory ketarin-1.0.6

     

    3. Create a .bat file into same directory, named: ketarin-test.bat

     

    4. Contents of ketarin-test.bat is one line as follows:

    ketarin.exe /DATABASE:servu_test.db

     

    5. From a working Ketarin instance in another location, export a job to XML (if you don't have one to test with already). The job is not important from what I can see; I've tried several and they all fail equally.

     

    6. Copy the exported job XML into path x:\ketarin_versions\ This is one level higher than Ketarin's directory.

     

    7. Using CMD window -or- Windows Explorer, change directory to x:\ketarin_versions\ketarin-1.0.6\

     

    8. Execute the "ketarin-test" .bat file. A new db, servu-test.db, will be created in the directory with Ketarin.

     

    9. Use menu choice: File -> Import and navigate to x:\ketarin_versions\ directory, choose your job.xml file to import.

     

    10. Ketarin gives error dialog pop-up:

    Failed to import the file: SQLite error no such table: jobs.

     

    11. Examine the contents of the x:\ketarin_versions\ directory (where the XML was imported from), a new -0- length 'servu-test.db' will have been created there. I believe this -0- length db is responsible for the error messages from Ketarin.

     

    I have not done any testing to determine if the steps required to reproduce are limited to most or all of the above. If any of you try to recreate and cannot, please confirm you have not deviated from the above steps.

     

    Thanks all for any help with this. Flo, is there anything you can see that might be driving this? TIA,

    --appyface

  12. @Flo

     

    I think the XML import issue got lost up above... See my post #15 and Francisco's post #26 (he duplicated my issue).

     

    1. Launch Ketarin with command line to /database:somename.db (NOT jobs.db, and in the same directory with Ketarin).

     

    "somename.db" will be created when Ketarin is launched.

     

     

    2. Import XML for a single job. The XML file NOT in same directory with Ketarin and the "somename.db", but in another directory either higher up the path from Ketarin or perhaps just a different location altogether (not sure, haven't tested)

     

     

    3. -0- length "jobs.db" will appear in the directory with the XML file just imported

     

     

    4. Anything you try to do now with "somename.db" will have errors

     

     

    Can you replicate, Flo?

     

    Francisco, can you still replicate?

     

    Stalker, were you ever able to replicate?

     

    TIA all...

     

    That is, if the XML being imported is in another directory from where Ketarin is, AND Ketarin was launched with a db name OTHER than "jobs.db", importing the XML causes an invalid zero-length jobs.db to be created in the directory with the XML files.

  13. hxxp://www.serv-u.com/susetup1.exe This is the one I had always been using, then one day gave error (subject of this thread). Then it worked and I got version 8.0.0.7 downloaded. Then, it didn't work...

     

    Just now, it worked? That is, does not give error (but there is no new version, so nothing downloaded). Green checkmark.

     

    I tried the other three alternate URLs given:

     

    hxxp://www.serv-u.com/susetup2.exe - green checkmark

     

    hxxp://www.serv-u.com/susetup3.exe - no error. It downloaded, but only because the filename determined for output was a little different (should not have been; I'll look into the reason for that)

     

    hxxp://www.serv-u.com/susetup4.exe - gives "the server committed a protocol violation" error.

     

    {sigh}

  14. Hi Flo,

     

    Since I'm (still) not a Firefox user (sorry, CybTekSol!) I'd like to dredge this wish back to the top, for reconsideration?

     

    Now that Ketarin's logging is so much more comprehensive than it used to be, and we have such a great variable facility now, I think this could be done easily by using variables and a bit of logging...?

     

    Here's what I have in mind:

     

    1. I define one or more variables (same way as for any variable) in an app. These might contain entire web page or a section of a webpage, or textual content... whatever content I'm interested in.

     

    2. I have in the app definition a way to list or otherwise designate these variables as my special 'independent watch' variables. A practical limit (maybe a max of 3 such variables?) per app would be fine

     

    3. For each 'independent watch' variable, during update run Ketarin compares the new scraped value with previous stored value (similar to Change Indicator Variable)

     

    4. If the value of any 'watch' variable has changed, make a log entry. Something like this:

     

    04/07/2009 11:42:44: Update started with 1 application(s)

    04/07/2009 11:42:45: Download Test: Checking if update is required...

    04/07/2009 11:42:45: Download Test: Update not required

    04/07/2009 11:42:45: Download Test: Watch variable {changelog} updated

    04/07/2009 11:42:45: Download Test: Watch variable {versnews} updated

    04/07/2009 11:42:45: Update finished

     

    Example: Say I have three 'independent watch' variables defined for this app, the above two are the ones that changed value

     

     

    I would go a step further and ask if the app was NOT downloaded (for any reason, including CIV), but at least one of the watch variables was updated, that an additional entry be made in the log, perhaps something like this. I'd like a different icon on the Ketarin GUI if it's open, perhaps a red exclamation point?

     

    04/07/2009 11:42:45: Download Test: Checking if update is required...

    04/07/2009 11:42:45: Download Test: Update not required

    04/07/2009 11:42:45: Download Test: Watch variable {changelog} updated

    04/07/2009 11:42:45: Download Test: Watch variable {versnews} updated

    04/07/2009 11:42:45: Download Test: Alert: No download but watch variable(s) updated

     

    Thoughts on this idea? TIA as always,

    --appyface

     

    Edit: Actually, just thinking out loud here -- if a "watch" variable can be a concatenation of other variables, then just one special "watch" variable will do nicely...

  15. @FranciscoR

     

    What if Flo could be persuaded to add an export-log option with choice of tab-delimited and CSV format? Then you could take the log easily into spreadsheet, certain text editors, etc. and quickly have columns to sort and search on?

     

    I know that's not what you're asking for (since there would still be no category), but would that do as a substitute for you? Maybe that would be easy for Flo to add? I know I wouldn't mind if it happened :-) Save me some steps since this is what I do already except I have to bust it apart myself first.

     

    Just an idea... your thoughts?

     

    --appyface

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.