Jump to content
Ketarin forum

shawn

Moderators
  • Posts

    1,181
  • Joined

  • Last visited

Everything posted by shawn

  1. Hi, Flo! I still can't get {startuppath} to work within the global commands. Is there a trick to it? Trying to execute: echo {category} /// {appname} {version} >> "{startuppath}\Updates.txt" The output still uses the literal text "{startuppath}" though. This is what the above actually attempts to execute: Plugins /// Java x86 6u21 >> "{startuppath}\Updates.txt"
  2. This is a search for MS downloads. It does NOT work for downloads that require validation, but everything else (like the powerpoint viewer, games for windows live, IE of various flavors) works fine. When importing you're prompted for a search term. This is used because there are often several results in the MS downloads list for the same application, based on the release date or version. This uses that search term, by date descending, to obtain the correct URL key (mskey) and then parses it for the download. You can "find" the right search term to use here. Let me know if you have any issues or feedback. Revised 2011/07/08 to use only Google for searching for results and to allow it to work with either form of download addresses (familyid and download id). Last week I also added a Guid to ensure that you'll be able to use this template to update any apps that use it. Sadly, you WILL have to recreate every app using this template in order to make it happen (no retroactive assignment). This is because the Guid wasn't there first. That was a horrible lesson to learn. <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="debb1deb-1024-1975-abcd-aa0000000008" > <Name><placeholder name="Application Name?" value="" /></Name> <Category><placeholder name="Application Category?" value="Unassigned" /></Category> <SourceType>FixedUrl</SourceType> <DeletePreviousFile><placeholder name="Delete Previous Version?" value="true" options="false|true" /></DeletePreviousFile> <WebsiteUrl /> <UserNotes /> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Default</DownloadBeta> <DownloadDate xsi:nil="true" /> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator /> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>false</ExclusiveDownload> <HttpReferer /> <Variables> <item> <key> <string>mssearch</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent><placeholder name="What is the search term on MS/Downloads?" value="" /></TextualContent> <Name>mssearch</Name> </UrlVariable> </value> </item> <item> <key> <string>mskey</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>"(http://www.microsoft.com/download/en/details.aspx.id=\d+|http://www.microsoft.com/downloads/details.aspx?familyid=[a-z\d\-]+)"</Regex> <Url>http://www.google.com/search?hl=&cat=&meta=&num=100&ie=utf-8&q=site%3Amicrosoft.com%2Fdownload+%22{mssearch}%22#q=site:microsoft.com/download+%22{mssearch}%22&hl=en&tbo=1&tbs=qdr:y,sbd:1&prmd=ivfd&source=lnt&sa=X</Url> <Name>mskey</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>Version\:</strong></td>\s*<td[^>]*>(?:<span[^<>]*>)?([^<>]+)(?:</span>)?</td></Regex> <Url>{mskey}</Url> <Name>version</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownload</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>fileurl="([^'"]+download[^'"]+)['"]</Regex> <Url>{mskey}</Url> <TextualContent>onclick="openDownloadWindow\('([^'"]+download[^'"]+)['"]</TextualContent> <Name>sdownload</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{mskey}</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <Name>snotes</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand /> <Enabled>true</Enabled> <FileHippoId /> <TargetPath>.\{category}\{appname:regexreplace:([\s\t\r\n\-\\&]+):_}-{version}.{url:ext}</TargetPath> <FixedDownloadUrl>{sdownload}</FixedDownloadUrl> </ApplicationJob> </Jobs>
  3. If you try to open just the SF files list for this project it takes a LONG time, even on very fast broadband. It's not something with Ketarin, it's something with SF.
  4. This template uses my recommended patterns and the direct download thru SF to avoid having to deal with the random number tagging crap and selecting a download mirror. I've successfully used this template with five different SF apps, but have used the principles it is based on in over 30 apps. This template adds version dection, which, unfortunately, is only effective for those applications which post the most recent versions, well, most recently. There will be apps (a lot of them) that post things out of sequence (like Keyfinder), in which case, you just need to find another source for the most recent version number (like the actual site). You can also add the filepath in order to more selectively obtain distinct folders (like "binary" or "release/{version}"), for both the version check and the file parsing. Please let me know if you experience any errors! * Updated 2011-11-21 - A BUNCH of changes for compatibility with the new SF site. Since it's so different, I've also changed the template GUID. This means it's no longer compatible with the previous version of the template (variables have changed). This version requires not only the SF Tag but also the distribution (the first folder name for the specific downloads you're after). Often the distribution is the same or similar to the SF Tag, but this is not always the case. Comment below for assistance with specific applications. * Updated 2011-07-08 - I don't remember what I changed, but it was important. <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="debb1deb-1024-1975-abcd-000000000013" > <Name><placeholder name="Application Name?" value="" /></Name> <Category><placeholder name="Application Category?" value="Unassigned" options="{categories}" /></Category> <DeletePreviousFile><placeholder name="Delete Previous Version?" value="true" options="true|false" /></DeletePreviousFile> <WebsiteUrl>{swebsite}</WebsiteUrl> <UserAgent>pycurl/7.18.2</UserAgent> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Default</DownloadBeta> <DownloadDate xsi:nil="true" /> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator /> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>false</ExclusiveDownload> <HttpReferer>http://sourceforge.net/</HttpReferer> <SourceType>FixedUrl</SourceType> <FixedDownloadUrl>http://downloads.sourceforge.net/project/{sftag}{download}</FixedDownloadUrl> <TargetPath>.\{category}\{appname:regexreplace:([\s\t\r\n\-\\&]+):_}-{version}.{url:ext}</TargetPath> <SetupInstructions /> <Variables> <item> <key> <string>sftag</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent><placeholder name="What is the SF application tag?" value="" /></TextualContent> <Name>sftag</Name> </UrlVariable> </value> </item> <item> <key> <string>distribution</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent><placeholder name="Which distribution (required)?" value="" /></TextualContent> <Name>distribution</Name> </UrlVariable> </value> </item> <item> <key> <string>parent</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>ico-folder"[^"]+"/projects?/{sftag}/files/({distribution}[^'":]+/)[^'":]*['":]</Regex> <Url>http://sourceforge.net/projects/{sftag}/files/{distribution}</Url> <Name>parent</Name> </UrlVariable> </value> </item> <item> <key> <string>substringfile</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent><placeholder name="Match substring within filename?" value="" /></TextualContent> <Name>substringfile</Name> </UrlVariable> </value> </item> <item> <key> <string>download</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>http://sourceforge.net/projects/{sftag}/files(/{distribution}[^'":]*{substringfile}[^'":]*)/download</Regex> <Url>http://sourceforge.net/projects/{sftag}/files/{parent}</Url> <Name>download</Name> </UrlVariable> </value> </item> <item> <key> <string>aversion</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <TextualContent>{parent:regex:/(\d[^'"/]*\d)/:1}</TextualContent> <Name>aversion</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <TextualContent>{aversion:multireplacei:|: beta |-beta-| beta|-beta|beta|%20| :b|b|b|b|b|-|-}</TextualContent> <Name>version</Name> </UrlVariable> </value> </item> <item> <key> <string>groupid</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>\?group_id=([\d]+)</Regex> <Url>http://sourceforge.net/projects/{sftag}/</Url> <Name>groupid</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <TextualContent>http://sourceforge.net/projects/{sftag}/</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <TextualContent>http://sourceforge.net/news/?group_id={groupid}</TextualContent> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <TextualContent></TextualContent> <Name>snotes</Name> </UrlVariable> </value> </item> <item> <key> <string>spc</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>sourceforge</TextualContent> <Name>spc</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand /> <ExecuteCommandType>Batch</ExecuteCommandType> <ExecutePreCommandType>Batch</ExecutePreCommandType> <Enabled>true</Enabled> <FileHippoId /> </ApplicationJob> </Jobs> sourceforge.xml
  5. My mistake. I assigned the variable type incorrectly (Textual vs RegularExpression). Sigh. See what I get for working 'til 5 am? Revised (and working!): <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="b946d582-c161-4033-95b8-d86c91522759"> <WebsiteUrl>{swebsite}</WebsiteUrl> <UserNotes /> <LastFileSize>5165571</LastFileSize> <LastFileDate>2010-09-07T07:41:19-07:00</LastFileDate> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Default</DownloadBeta> <DownloadDate xsi:nil="true" /> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator>{version}</VariableChangeIndicator> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>false</ExclusiveDownload> <HttpReferer>http://sourceforge.net/</HttpReferer> <Variables> <item> <key> <string>sftag</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>mpc-hc</TextualContent> <Name>sftag</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>/projects?/[^'"]+[/\s]v?([\d\.]+)[_\./\s]</Regex> <Url>http://sourceforge.net/projects/{sftag}/files/</Url> <Name>version</Name> </UrlVariable> </value> </item> <item> <key> <string>filepath</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>filepath</Name> </UrlVariable> </value> </item> <item> <key> <string>filestart</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>filestart</Name> </UrlVariable> </value> </item> <item> <key> <string>filemiddle</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{version}</TextualContent> <Name>filemiddle</Name> </UrlVariable> </value> </item> <item> <key> <string>fileend</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>x86</TextualContent> <Name>fileend</Name> </UrlVariable> </value> </item> <item> <key> <string>fileext</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>exe</TextualContent> <Name>fileext</Name> </UrlVariable> </value> </item> <item> <key> <string>filepattern</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>/projects?/{sftag}/([^'"]*{filepath}[^'"]*[^'"/\?&]*({version}/)?{filestart}[^'"/]+{filemiddle}[^'"/]+{fileend}[^'"/\?&]*\.{fileext}[^'"/\?&]*)['"/\?&]</Regex> <Url>http://sourceforge.net/projects/{sftag}/files/{filepath}</Url> <TextualContent /> <Name>filepattern</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownload</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://downloads.sourceforge.net/{sftag}/{filepattern}?download</TextualContent> <Name>sdownload</Name> </UrlVariable> </value> </item> <item> <key> <string>groupid</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>\?group_id=([\d]+)</Regex> <Url>http://sourceforge.net/projects/{sftag}/</Url> <Name>groupid</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://sourceforge.net/projects/{sftag}/</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://sourceforge.net/news/?group_id={groupid}</TextualContent> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>snotes</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand /> <Category>Media</Category> <SourceType>FixedUrl</SourceType> <PreviousLocation /> <DeletePreviousFile>true</DeletePreviousFile> <Enabled>true</Enabled> <FileHippoId /> <LastUpdated>2010-09-11T04:32:26.9291331-07:00</LastUpdated> <TargetPath>.\{category}\{appname:regexreplace:([\s\t\r\n\-\\&]+):_}-{version}.{url:ext}</TargetPath> <FixedDownloadUrl>{sdownload}</FixedDownloadUrl> <Name>MPC HC x86</Name> </ApplicationJob> </Jobs>
  6. I've used a layered approach to building variables on a LOT of searches, and have always been able to get them to work. This time, not so much. This specific search is designed using my SF template (still a work in progress, obviously). The SF template offers several variables which you use to feed strings into the filepattern capture. The problem is, while it works in every other situation I've tried, since I imported this search, it doesn't work. Instead, the {sdownload} variable actually includes: http://downloads.sourceforge.net/mpc-hc//projects?/mpc-hc/files/([^'"]*[^'"]*[^'"/\?&]*[^'"/]+1.4.2499.0[^'"/]+x86[^'"/\?&]*\.exe[^'"/\?&]*)['"/\?&]?download It SHOULD have been replaced with the {filepattern} capture. Hm. Now that I think about it, maybe it's not capturing at all, so it's returning the entire string from the variable? On that note, if that's the case, it would be SO nice if we could set a variable to always return empty if there is no capture result. Maybe a checkbox to this effect for each variable. Here's the XML: <?xml version='1.0' encoding='utf-8'?> <Jobs> <ApplicationJob xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" Guid="b946d582-c161-4033-95b8-d86c91522759"> <WebsiteUrl>{swebsite}</WebsiteUrl> <UserNotes /> <LastFileSize>0</LastFileSize> <LastFileDate xsi:nil="true" /> <IgnoreFileInformation>false</IgnoreFileInformation> <DownloadBeta>Default</DownloadBeta> <DownloadDate xsi:nil="true" /> <CheckForUpdatesOnly>false</CheckForUpdatesOnly> <VariableChangeIndicator>{version}</VariableChangeIndicator> <CanBeShared>true</CanBeShared> <ShareApplication>false</ShareApplication> <ExclusiveDownload>false</ExclusiveDownload> <HttpReferer>http://sourceforge.net/</HttpReferer> <Variables> <item> <key> <string>sftag</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>mpc-hc</TextualContent> <Name>sftag</Name> </UrlVariable> </value> </item> <item> <key> <string>version</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>/projects?/[^'"]+[/\s]v?([\d\.]+)[_\./\s]</Regex> <Url>http://sourceforge.net/projects/{sftag}/files/</Url> <Name>version</Name> </UrlVariable> </value> </item> <item> <key> <string>filepath</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>filepath</Name> </UrlVariable> </value> </item> <item> <key> <string>filestart</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>filestart</Name> </UrlVariable> </value> </item> <item> <key> <string>filemiddle</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>{version}</TextualContent> <Name>filemiddle</Name> </UrlVariable> </value> </item> <item> <key> <string>fileend</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>x86</TextualContent> <Name>fileend</Name> </UrlVariable> </value> </item> <item> <key> <string>fileext</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>exe</TextualContent> <Name>fileext</Name> </UrlVariable> </value> </item> <item> <key> <string>filepattern</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>/projects?/{sftag}/files/([^'"]*{filepath}[^'"]*[^'"/\?&]*{filestart}[^'"/]+{filemiddle}[^'"/]+{fileend}[^'"/\?&]*\.{fileext}[^'"/\?&]*)['"/\?&]</TextualContent> <Name>filepattern</Name> </UrlVariable> </value> </item> <item> <key> <string>sdownload</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://downloads.sourceforge.net/{sftag}/{filepattern}?download</TextualContent> <Name>sdownload</Name> </UrlVariable> </value> </item> <item> <key> <string>groupid</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>RegularExpression</VariableType> <Regex>\?group_id=([\d]+)</Regex> <Url>http://sourceforge.net/projects/{sftag}/</Url> <Name>groupid</Name> </UrlVariable> </value> </item> <item> <key> <string>swebsite</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://sourceforge.net/projects/{sftag}/</TextualContent> <Name>swebsite</Name> </UrlVariable> </value> </item> <item> <key> <string>schangelog</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent>http://sourceforge.net/news/?group_id={groupid}</TextualContent> <Name>schangelog</Name> </UrlVariable> </value> </item> <item> <key> <string>snotes</string> </key> <value> <UrlVariable> <RegexRightToLeft>false</RegexRightToLeft> <VariableType>Textual</VariableType> <Regex /> <TextualContent /> <Name>snotes</Name> </UrlVariable> </value> </item> </Variables> <ExecuteCommand /> <ExecutePreCommand /> <Category>Media</Category> <SourceType>FixedUrl</SourceType> <PreviousLocation /> <DeletePreviousFile>true</DeletePreviousFile> <Enabled>true</Enabled> <FileHippoId /> <LastUpdated xsi:nil="true" /> <TargetPath>.\{category}\{appname:regexreplace:([\s\t\r\n\-\\&]+):_}-{version}.{url:ext}</TargetPath> <FixedDownloadUrl>{sdownload}</FixedDownloadUrl> <Name>MPC HC x86</Name> </ApplicationJob> </Jobs>
  7. I assume what he's after is some form of inline editing for a custom field that has no functional use beyond the UI and sorting. Personally, I like the idea of inline editing, but don't see the point in adding yet another field: the existing variables functionality does this well enough.
  8. This is the pattern I use for my "target" on all downloads: .\{category}\{appname:regexreplace:([\s\t\r\n\-\\&]+):_}-{version}.{url:ext} You could export your DB to an XML file then perform a find & replace on it to achieve the same or similar results, without editing each and every one individually.
  9. Thanks, CybTekSol. I've only noticed the ";" and "&" splits on certain file links in the source within "/files/". You can avoid them in every instance I've found (including FileZilla), since the same URLs appear elsewhere *without* double-encoding of some characters. I've created an SF template, which I'll be posting in the Templates section after I test it with a couple more apps tonight.
  10. Oh, and the point of using that specific string is what it means. The brackets mean "match the stuff inside here". The carat inside as the first character reverses it's functionality, effectively turning it into "match everything EXCEPT what's inside here". The use of an apostrophe and a quote inside means that it's going to grab everything that matches without getting outside of the current attribute value, and since anchors in HTML are supposed to have quotes or apostrophes around the href (url) portion, it should only grab a continuous string - the URL. The + means "one or more of the characters (or group) before me", so grab all consecutive non-apostrophe and non-quote characters. On some sites (particularly those with crappy HTML that doesn't include quotes around URLs), I convert it to this: [^'"\s<>]+ That adds spaces and angle brackets to the exclusions, so the URL will be picked up correctly even if it's not properly wrapped. Be careful though, as while this will work for some, it will not work on some sites, since the stupid developers actually include a space or angle brackets in the URL, even though they're improperly encoded (as %20, %3c, %3e).
  11. The specific string that I use to say "part of a URL goes here" is: [^'"]+ If you want multiple matches, you need to duplicate ALL of that between each matched portion, as so: [^'"]+64[^'"]+EN[^'"]+ That would look for something that looks like this: stuffhere64morestuffENmorestuff Follow?
  12. I was thinking the same thing, CybTekSol. Perhaps Ketarin is pre-processing URLs for "sanity", and is choking on those URLs because of the "./" in the path before the filename. While it's obviously a pretty screwy URL, it is, as whacky as it looks, a legitimate address.
  13. I've never been in that position, but as a rule, you use the backslash to "escape" characters. So something like this ought to work: {download:replace:%3A%2F%2F:\://} However, it would be so much easier to simply extract only that portion you needed in the first place, and prepend "http://" in the download box: (download\.portableapps\.com%2Fportableapps%2Ffoxitreaderportable%2FFoxitReaderPortable_[\d\.]+paf\.exe)
  14. I have no clue what's wrong with that. The deep URLs are causing it to choke simply browsing the PortableApps project on SF. My guess, based on waiting for it to download just in the browser, is that what you're seeing is NOT the actual app (or any portion of it), but the contents of the SF files list. Try opening it up in Notepad or something and you'll probably see that it's very much NOT an executable. Good luck! Maybe there's another mirror somewhere that hosts the files without the SF issues - like FileHippo?
  15. Please show us your XML file. Click on the app in the Ketarin list, File, Export Selected, type a name, Save. Open that up in Notepad or equivalent, then copy & paste it into a reply, using "code" blocks around the text [ code ] and [ /code ]. (take the spaces out)
  16. and I looked, but couldn't find a donate link anymore.
  17. Note that you'll also need to escape (that's what putting the "\" in front of the . and other special characters is called) parentheses, dots, question marks and any literal slashes, whenever you're trying to treat these characters as literal characters within a RegEx statement. We really need to see the XML file for the apps that aren't working (export them to XML format, then copy the contents into a post here between 'code' tags) in order to be able to figure out what's going wrong. With Sourceforge, the URL pattern is ABSOLUTELY important, and it MUST have a "spoofed referer" on the "advanced settings" tab.
  18. instead of ".*?", consider using something like this: [^'"]+x86[^'"]+
  19. Dude, that is AWESOME. Thank you! I can't wait to have better handling for Filezilla. Installing now (and I already created an app for Ketarin to monitor it).
  20. Filehippo limits concurrent downloads from the same source, so it's best to check the option to "do not download this application simultaneously with other applications" on the Advanced Settings tab.
  21. The "hxxp://downloads.sourceforge.net/{appstub}/{path}?download" URL format doesn't allow you to specify a preferred mirror, but is 100% reliable - and I'll take reliability over preference any day.
  22. The other thing is, if you have a dozen of these files in the same folder, copy them off to a USB stick, and then try sorting them by "date", you'll find that often the sort fails. Windows, DOS, BASH and other shells don't see the same dates the same way. The only reliable way is to use the filename, and the only way to sort "by name" and get the dates sorted correctly is to use ISO8601 format (year, month, day).
  23. Unfortunately, there isn't a standard location (that I've found) to identify the version numbers for SourceForge projects, so you end up with a custom version-check every single time. Once you have that, however, you can build the download URL very easily. I have about 40 SF apps in my database, and using a referrer of "http://sourceforge.net/" and the following URL pattern **always** works: hxxp://downloads.sourceforge.net/{appstub}/{path}?download {appstub} is the specific application stub. For example, for phpMyAdmin, it's "phpmyadmin". Basically, it's whatever the is within the project URL, as so: hxxp://sourceforge.net/projects/phpmyadmin hxxp://sourceforge.net/projects/dqsd hxxp://sourceforge.net/projects/synergy2 {path} is the parsed result of this URL: hxxp://sourceforge.net/projects/phpmyadmin/files/ hxxp://sourceforge.net/projects/dqsd/files/ hxxp://sourceforge.net/projects/synergy2/files/ ...using this RegEx pattern: [t'"]/projects?/([^"']+{filepattern})[\?'"&] {filepattern} will often need changed for each package. It is how the filenames are composed and desired under that specific release. For example, for phpMyAdmin I always want the "all languages" zip file for the current {version}. So the filepattern would be "phpMyAdmin-{version}-all-languages.zip". Here it is in the code view as above: [t'"]/projects?/([^"']+phpMyAdmin-{version}-all-languages.zip)[\?'"&] Then in the URL box you use: http://downloads.sourceforge.net{download:replace:/files/:/}?download
  24. I'd like to reiterate what hherrie said - with ISO 8601 format (yyyy-mm-dd) your operating system can very easily sort the files by date. No, it's not "cosmetically appealing" to many people due to their silly schooling - but if you think about it, having the values in order of descending significance (ie, like the metric system), it makes a hell of a lot more sense. Using a dot also causes problems, especially under Windows, if you try to affect filenames using the "*" character. Your filenames will "change" everything prior to the FIRST dot, but everything after it will be preserved. It's very annoying...and I speak from recent experience ((completely unrelated to the topic at hand, but there's a setting option to change the default "dvd to mobile" output filenames in DVDFab to avoid the two dots in the resulting filenames - this makes batch renaming seasons of a TV show a LOT easier)). My last rant on this will be your appname. You *really* should consider replacing the "&" in the filename with the word "and". This will avoid issues with execution of the file if the exe handler has been corrupted (quotes removed) or you fail to execute it with wrapping quotes. I know this doesn't sound like a big deal, but it's one of the ways malware extends the depth of infection under Windows, so ampersands in filenames should be avoided. To see just how dangerous it can be, imagine you have an application named "destroy" on your computer and within your path. If you type in the filename you created above into a command line, the "destroy" application would be executed. While this is a reasonably small likelihood of infection, why risk it? Don't use ampersands in file or folder names if it can be avoided. If you're still interested in using a funky date format, though, you can re-sort the values using a variable like this (put this in the box for 'prettyversion'): {version:split:-:1}-{version:split:-:2}-{version:split:-:0} Then save the file as: {appname} {prettyversion}.{url:ext}
  25. It's just the Perl "get" package, with a few added tags to add IE-like headers to the Request. All browsers, IE included, but also Firefox, Perl, Opera and others - only respect headers from the most recent transaction and the only thing they preserve from any previous request (lacking conflicting headers) is the original URL. That is, if the headers are not sent with the most current response (such as, with a previous 301 response), then they are discarded. If you can control it, you should add the content-disposition header in the final request (it can be added directly by .htaccess).
×
×
  • 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.