CyclicAutoReloader
URL を指定して周期的にページを自動リロードするスクリプト を「バージョンアップ(wedata 対応)」+「名称変更」しようとしたら… userscripts.org からうまくインストールできなくなってしまった… orz
⇒ 別スクリプト にしました
別名、テレビ番組表リローダー(ダサっ)
以下のような機能の需要はユーザー間で共通ではないだろうか…
- 1分間隔でページ更新(為替情報、株価情報、)
- 1時間間隔でページ更新(テレビ番組表)
⇒ (AutoPagerize 同様)wedata.net で設定を共有…
通常のタイマー動作とは異なる
通常のタイマー | タイマーをセットした現在時刻から決められた時間を経過するとリロード |
---|---|
CyclicAutoReloader | セットした現在時刻は無視。例えば20分設定なら、現在時刻に関わらずその倍数の時間ピッタリでリロードする(0分、20分、40分) |
- サーバー側でページ内容が更新されるタイミングわかってる場合に便利
インストール
必要なアドオン | Greasemonkey または Scriptish |
---|---|
スクリプトのインストール | http://userscripts.org/scripts/show/105714 |
設定(wedata.net) | http://wedata.net/databases/CyclicAutoReloader/items |
設定値
url | 正規表現で対象 URL を指定(ドットのエスケープを忘れずに) |
---|---|
nextMinute | リロード間隔を指定(現在の分を nextMinute で割った端数は切り捨て) |
nextHour | リロード間隔を1時間単位で指定。不要なら 0 を指定(省略不可) |
exampleUrl | この設定が適用される URL の例 |
- 設定できるのは wedata.net からだけじゃない。スクリプト内の SITEINFO 変数にプライベートな設定が可能
- wedata.net 更新後は「Clear Cache」を忘れずに
スクリプト
// ==UserScript== // @name CyclicAutoReloader // @namespace http://d.hatena.ne.jp/k2jp/ // @id CyclicAutoReloader@k2jp // @description Reload specific pages cyclically. // @version 0.1 // @author k2jp // @require https://raw.github.com/gist/434406/3cd10875724c2d0fd4c3567a18c6087cc7161f8a/wedata.js // @contributer azu <https://gist.github.com/434406> // @description Reload pages cyclically // @include http://* // @include https://* // @exclude about:blank // @homepage http://userscripts.org/scripts/show/105714 // @icon http://www.st-hatena.com/users/k2/k2jp/profile.gif // ==/UserScript== // ChangeLog // 0.1 : Initial Release // (Successor of "Page Reloader with Presets": http://userscripts.org/scripts/show/103760). (function(){ const SITEINFO = [ // Private: Rules not shared /* sample { url: '^http://finance\.yahoo\.com/', nextMinute: '10', nextHour: '0', exampleUrl: 'http://finance.yahoo.com/' }, */ { url: '^http://www\.sample\.com/', nextMinute: '30', nextHour: '0', exampleUrl: 'http://www.sample.com/' } ]; var database = new Wedata.Database('http://wedata.net/databases/CyclicAutoReloader/items.json'); // clear cache GM_registerMenuCommand( 'CyclicAutoReloader - clear cache', function() {database.clearCache();} ); var CyclicAutoReload = function(confData){ var targetMinute, targetHour, targetTime; if( ('url' in confData) && new RegExp(confData.url.trim()).test(location.href) && ('nextMinute' in confData) && 0<=(targetMinute = parseInt(confData.nextMinute.trim(), 10)) && ('nextHour' in confData) && 0<=(targetHour = parseInt(confData.nextHour.trim(), 10)) ){ // exclude nextMinut = 0 and nextHour = 0 if((targetMinute === 0) && (targetHour === 0)) return; // Calculate difference targetTime = new Date(); if(targetMinute === 0){ targetTime.setMinutes(targetHour*60, 0, 0); }else{ //console.log("testing"); targetTime.setMinutes( targetTime.getMinutes() + targetMinute - (targetTime.getMinutes()%targetMinute) + (targetHour*60), 0, 0 ); //console.log(targetTime); } setTimeout( function(){ window.location.reload(); } , targetTime.getTime() - new Date().getTime() ); } } // for shared SITEINFO database.get(function(items) { items.forEach( function(item){CyclicAutoReload(item.data);} ); }); // for local private SITEINFO SITEINFO && SITEINFO.length > 0 && SITEINFO.forEach(CyclicAutoReload); }) ();