OCH List

A list of One-Click-Hosters that are supported by nopremium.pl

Version vom 11.02.2021. Aktuellste Version

Dieses Skript sollte nicht direkt installiert werden. Es handelt sich hier um eine Bibliothek für andere Skripte, welche über folgenden Befehl in den Metadaten eines Skriptes eingebunden wird // @require https://update.greasyfork.org/scripts/25445/899642/OCH%20List.js

  1. // ==UserScript==
  2. // @exclude *
  3. // ==UserLibrary==
  4. // @name OCH List
  5. // @description A list of One-Click-Hosters that are supported by nopremium.pl
  6. // @version 31
  7. // @license GPL-3.0-or-later; http://www.gnu.org/licenses/gpl-3.0.txt
  8. // ==/UserLibrary==
  9. // @namespace cuzi
  10. // @homepageURL https://github.com/cvzi/Userscripts
  11. // @grant GM_xmlhttpRequest
  12. // @grant GM.xmlhttpRequest
  13. // @require http://openuserjs.org/src/libs/cuzi/RequestQueue.js
  14. // ==/UserScript==
  15.  
  16. 'use strict'
  17.  
  18. /*
  19.  
  20. var rq = new RequestQueue();
  21. var MAXDOWNLOADSIZE = 2048; // KB
  22. */
  23.  
  24. if (typeof module !== 'undefined') {
  25. module.exports = getOCH
  26. }
  27.  
  28. function getOCH (rq, MAXDOWNLOADSIZE) {
  29. if (!rq) {
  30. rq = { add: function () { console.log('OCH List: Error: No RequestQueue() parameter set') } }
  31. }
  32. if (!MAXDOWNLOADSIZE) {
  33. MAXDOWNLOADSIZE = 2048
  34. }
  35.  
  36. const permanentlyoffline = function (link, cb, thisArg) {
  37. cb.call(thisArg, link, 0) // Offline
  38. }
  39.  
  40. const unkownStatus = function (link, cb, thisArg) {
  41. cb.call(thisArg, link, -1, 'This hoster cannot be checked')
  42. }
  43.  
  44. const offlineByFindingString = function (link, s, cb, thisArg, useURL) {
  45. // Offline if one of the strings [s] is found in the responseText
  46. if (typeof s === 'string') {
  47. s = [s]
  48. }
  49. rq.add({
  50. method: 'GET',
  51. url: useURL || link.url,
  52. onprogress: function (response) {
  53. // abort download of big files
  54. if ((Math.max(response.loaded, response.total) / 1024) > MAXDOWNLOADSIZE) {
  55. this.__result.abort()
  56. cb.call(thisArg, link, 1) // Let's assume big files are online
  57. }
  58. },
  59. onload: function (response) {
  60. for (let i = 0; i < s.length; i++) {
  61. if (response.responseText.indexOf(s[i]) !== -1) {
  62. cb.call(thisArg, link, 0) // Offline
  63. return
  64. }
  65. }
  66. cb.call(thisArg, link, 1) // Online
  67. },
  68. onerror: function (response) {
  69. cb.call(thisArg, link, 0) // Offline
  70. }
  71. })
  72. }
  73. const onlineByFindingString = function (link, s, cb, thisArg, useURL) {
  74. // Offline if none of the strings [s] is found in the responseText
  75. if (typeof s === 'string') {
  76. s = [s]
  77. }
  78. rq.add({
  79. method: 'GET',
  80. url: useURL || link.url,
  81. onprogress: function (response) {
  82. // abort download of big files
  83. if ((Math.max(response.loaded, response.total) / 1024) > MAXDOWNLOADSIZE) {
  84. this.__result.abort()
  85. cb.call(thisArg, link, 1) // Let's assume big files are online
  86. }
  87. },
  88. onload: function (response) {
  89. for (let i = 0; i < s.length; i++) {
  90. if (response.responseText.indexOf(s[i]) !== -1) {
  91. cb.call(thisArg, link, 1) // Online
  92. return
  93. }
  94. }
  95. cb.call(thisArg, link, 0) // Offline
  96. },
  97. onerror: function (response) {
  98. cb.call(thisArg, link, 0) // Offline
  99. }
  100. })
  101. }
  102. const offlineByMatchingFinalUrl = function (link, re, cb, thisArg, useURL) {
  103. // Offline if one of the RegEx [re] matches the finalUrl
  104. if (!Array.isArray(re)) {
  105. re = [re]
  106. }
  107.  
  108. rq.add({
  109. method: 'GET',
  110. url: useURL || link.url,
  111. onprogress: function (response) {
  112. // abort download of big files
  113. if ((Math.max(response.loaded, response.total) / 1024) > MAXDOWNLOADSIZE) {
  114. this.__result.abort()
  115. cb.call(thisArg, link, 1) // Let's assume big files are online
  116. }
  117. },
  118. onload: function (response) {
  119. for (let i = 0; i < re.length; i++) {
  120. if (re[i].test(response.finalUrl)) {
  121. // Link is offline
  122. cb.call(thisArg, link, 0)
  123. return
  124. }
  125. }
  126. cb.call(thisArg, link, 1) // Online
  127. },
  128. onerror: function (response) {
  129. cb.call(thisArg, link, 0) // Offline
  130. }
  131. })
  132. }
  133.  
  134. return {
  135.  
  136. /*
  137.  
  138. pattern: A single RegExp or an array of RegExp
  139. multi: An array of multihost-services that support this hoster
  140. title: String
  141. homepage: String/URL
  142. check: void check(link, cb, thisArg)
  143. link : { url: "http://example.com/example.file", [...] }
  144. cb : void thisArg.cb(link, result, errorstring)
  145. link : the original link object
  146. result: 1 -> online, 0 -> offline, -1 -> error
  147. errorstring: may contain error details e.g. the request result, only set if result === -1
  148. thisArg : The value of this provided for the call to cb.
  149. */
  150.  
  151. '180upload': {
  152. pattern: /^http:\/\/180upload\.com\/\w+$/m,
  153. multi: [],
  154. title: 'Offline: 180upload',
  155. homepage: 'http://180upload.com/',
  156. check: function (link, cb, thisArg) {
  157. permanentlyoffline(link, cb, thisArg)
  158. }
  159. },
  160. '1fichier': {
  161. pattern: [/^https?:\/\/(www\.)?1fichier\.com\/.+$/m, /^https?:\/\/\w+\.1fichier\.com\/?.*$/m],
  162. multi: ['nopremium.pl', 'premiumize.me'],
  163. title: '1fichier',
  164. homepage: 'http://1fichier.com/',
  165. check: function (link, cb, thisArg) {
  166. offlineByFindingString(link, ['The requested file could not be found', 'The requested file has been deleted'], cb, thisArg)
  167. }
  168. },
  169. '2shared': {
  170. pattern: /^https?:\/\/www\.2shared\.com\/[a-z]+\/\w+\/?(.+\.html)?$/,
  171. multi: [],
  172. title: '2Shared',
  173. homepage: 'http://www.2shared.com/',
  174. check: function (link, cb, thisArg) {
  175. offlineByFindingString(link, 'VGhlIGZpbGUgbGluayB0aGF0IHlvdSByZXF1ZXN0ZWQgaXMgbm90IHZhbGlkLiBQbGVhc2UgY29udGFjdCBsaW5rIHB1Ymxpc2hlciBvciB0cnkgdG8gbWFrZSBhIHNlYXJjaC4=', cb, thisArg)
  176. }
  177. },
  178. '4shared': {
  179. pattern: /^https?:\/\/www\.4shared\.com\/[a-z]+\/\w+\/?(.+\.html)?$/,
  180. multi: ['nopremium.pl'],
  181. title: '4shared.com',
  182. homepage: 'http://www.4shared.com/',
  183. check: function (link, cb, thisArg) {
  184. offlineByFindingString(link, [' is not valid', ' is unavailable', ' was deleted'], cb, thisArg)
  185. }
  186. },
  187. '4downfiles': {
  188. pattern: /^https?:\/\/4downfiles?\.com?\/\w+\/?(.+\.html)?$/m,
  189. multi: [],
  190. title: '4 Down Files',
  191. homepage: 'http://4downfiles.co/',
  192. check: function (link, cb, thisArg) {
  193. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  194. }
  195. },
  196. alfafile: {
  197. pattern: /^https?:\/\/(www\.)?alfafile\.net\/file\/.+$/m,
  198. multi: ['nopremium.pl'],
  199. title: 'Alfafile',
  200. homepage: 'https://alfafile.net',
  201. check: function (link, cb, thisArg) {
  202. offlineByFindingString(link, 'error-box', cb, thisArg)
  203. }
  204. },
  205. anonfiles: {
  206. pattern: /^https?:\/\/anonfiles\.com\/\w+\/?.*$/m,
  207. multi: ['nopremium.pl'],
  208. title: 'anonfiles',
  209. homepage: 'https://anonfiles.com',
  210. check: function (link, cb, thisArg) {
  211. rq.add({
  212. method: 'GET',
  213. url: 'https://api.anonfiles.com/v2/file/' + encodeURIComponent(link.url.match(/\/\/anonfiles\.com\/(\w+)/)[1]) + '/info',
  214. onload: function (response) {
  215. const result = JSON.parse(response.responseText)
  216. if (result && result.status) {
  217. // Link is online
  218. cb.call(thisArg, link, 1)
  219. } else {
  220. // Link is offline
  221. cb.call(thisArg, link, 0)
  222. }
  223. },
  224. onerror: function (response) {
  225. cb.call(thisArg, link, 0) // Offline
  226. }
  227. })
  228. }
  229. },
  230. ayefiles: {
  231. pattern: /^https?:\/\/ayefiles\.com\/\w+\/?.*$/m,
  232. multi: [],
  233. title: 'AyeFiles',
  234. homepage: 'https://ayefiles.com/',
  235. check: function (link, cb, thisArg) {
  236. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  237. }
  238. },
  239. bayfiles: {
  240. pattern: /^https?:\/\/(www\.)?bayfiles\.(net|com)\/\w+\/?.*$/m,
  241. multi: ['nopremium.pl'],
  242. title: 'BayFiles',
  243. homepage: 'http://bayfiles.com/',
  244. check: function (link, cb, thisArg) {
  245. rq.add({
  246. method: 'GET',
  247. url: 'https://api.bayfiles.com/v2/file/' + encodeURIComponent(link.url.match(/bayfiles\.(net|com)\/(\w+)/)[2]) + '/info',
  248. onload: function (response) {
  249. const result = JSON.parse(response.responseText)
  250. if (result && result.status) {
  251. // Link is online
  252. cb.call(thisArg, link, 1)
  253. } else {
  254. // Link is offline
  255. cb.call(thisArg, link, 0)
  256. }
  257. },
  258. onerror: function (response) {
  259. cb.call(thisArg, link, 0) // Offline
  260. }
  261. })
  262. }
  263. },
  264. bigfile: {
  265. pattern: /^https?:\/\/(www\.)?bigfile\.to\/file\/.+\/?.*$/m,
  266. multi: [],
  267. title: 'BigFile',
  268. homepage: 'https://www.bigfile.to/',
  269. check: function (link, cb, thisArg) {
  270. offlineByFindingString(link, ['errorBox', 'error-box'], cb, thisArg)
  271. }
  272. },
  273. billionuploads: {
  274. pattern: /^http:\/\/billionuploads\.com\/\w+$/m,
  275. multi: ['nopremium.pl'],
  276. title: 'Offline: Billion Uploads',
  277. homepage: 'http://billionuploads.com/',
  278. check: function (link, cb, thisArg) {
  279. permanentlyoffline(link, cb, thisArg)
  280. }
  281. },
  282. bitshare: {
  283. pattern: /^http:\/\/bitshare\.com\/files\/\w+\/.+\.html$/m,
  284. multi: [],
  285. title: 'BitShare.com',
  286. homepage: 'http://bitshare.com/',
  287. check: function (link, cb, thisArg) {
  288. offlineByFindingString(link, ['Error - File not available', 'Fehler - Datei nicht verfügbar'], cb, thisArg)
  289. }
  290. },
  291. catshare: {
  292. pattern: /^https?:\/\/(www\.)?catshare\.net\/.+$/m,
  293. multi: ['nopremium.pl'],
  294. title: 'CatShare',
  295. homepage: 'http://catshare.net/',
  296. check: function (link, cb, thisArg) {
  297. offlineByFindingString(link, 'Podany plik został usunięty', cb, thisArg)
  298. }
  299. },
  300. clicknupload: {
  301. pattern: /^https?:\/\/(www\.)?clicknupload\.(link|org|co)\/\w+\/?.*$/m,
  302. multi: ['nopremium.pl', 'premiumize.me'],
  303. title: 'ClicknUpload',
  304. homepage: 'https://clicknupload.co',
  305. check: function (link, cb, thisArg) {
  306. offlineByFindingString(link, ['File Not Found', 'Error</td>'], cb, thisArg)
  307. }
  308. },
  309. cloudyfiles: {
  310. pattern: [/^https?:\/\/cloudyfiles\.(me|com|org)\/\w+.*$/m, /^https?:\/\/businessnewsstories\.online\/\w+.*$/m],
  311. multi: [],
  312. title: 'Offline: Cloudyfiles.org',
  313. homepage: 'http://cloudyfiles.org/',
  314. check: function (link, cb, thisArg) {
  315. permanentlyoffline(link, cb, thisArg)
  316. }
  317. },
  318. cwtv: {
  319. pattern: /^https?:\/\/www\.cwtv\.com\/cw-video\/.+$/m,
  320. multi: [],
  321. title: 'CW Television Shows',
  322. homepage: 'http://www.cwtv.com/',
  323. check: function (link, cb, thisArg) {
  324. offlineByMatchingFinalUrl(link, /\/cw-video\/$/, cb, thisArg)
  325. }
  326. },
  327. dailymotion: {
  328. pattern: /^https?:\/\/www\.dailymotion\.com\/video\/\w+.*$/m,
  329. multi: [],
  330. title: 'Dailymotion',
  331. homepage: 'http://www.dailymotion.com/',
  332. check: function (link, cb, thisArg) {
  333. offlineByFindingString(link, 'You will be redirected to the homepage', cb, thisArg)
  334. }
  335. },
  336. dailyuploads: {
  337. pattern: /^https?:\/\/dailyuploads\.net\/\w+\/?.*$/m,
  338. multi: ['nopremium.pl'],
  339. title: 'Daily Uploads',
  340. homepage: 'http://dailyuploads.net/',
  341. check: function (link, cb, thisArg) {
  342. offlineByFindingString(link, ['File Not Found', 'file was removed'], cb, thisArg)
  343. }
  344. },
  345. datafile: {
  346. pattern: /^http:\/\/www\.datafile\.com\/d\/\w+.*$/m,
  347. multi: [],
  348. title: 'DataFile.com',
  349. homepage: 'http://www.datafile.com/',
  350. check: function (link, cb, thisArg) {
  351. offlineByFindingString(link, 'ErrorCode', cb, thisArg)
  352. }
  353. },
  354. datei: {
  355. pattern: /^https?:\/\/(www\.)?datei\.to\/\?\w+$/m,
  356. multi: ['premiumize.me'],
  357. title: 'datei.to',
  358. homepage: 'http://datei.to/',
  359. check: function (link, cb, thisArg) {
  360. offlineByFindingString(link, 'icon_deleted.png', cb, thisArg)
  361. }
  362. },
  363. ddownload: {
  364. pattern: [/^https?:\/\/(www\.)?ddl\.to\/\w+.*$/m, /^https?:\/\/ddownload\.com\/\w+.*$/m],
  365. multi: ['premiumize.me', 'nopremium.pl'],
  366. title: 'ddownload.com',
  367. homepage: 'https://ddl.to/',
  368. check: function (link, cb, thisArg) {
  369. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  370. }
  371. },
  372.  
  373. depositfiles: {
  374. pattern: [/^http:\/\/dfiles\.eu\/files\/\w+\/?$/m, /^http:\/\/depositfiles\.com\/files\/\w+\/?$/m],
  375. multi: [],
  376. title: 'DepositFiles',
  377. homepage: 'http://dfiles.eu',
  378. check: function (link, cb, thisArg) {
  379. offlineByFindingString(link, 'no_download_message', cb, thisArg)
  380. }
  381. },
  382. devilshare: {
  383. pattern: /^https?:\/\/(www\.)?devilshare\.net\/view.+$/m,
  384. multi: ['nopremium.pl'],
  385. title: 'Offline: Devilshare.net',
  386. homepage: 'http://devilshare.net',
  387. check: function (link, cb, thisArg) {
  388. permanentlyoffline(link, cb, thisArg)
  389. }
  390. },
  391. douploads: {
  392. pattern: /^https?:\/\/(www\.)?douploads\.com\/\w{8}\w+$/m,
  393. multi: [],
  394. title: 'DoUploads',
  395. homepage: 'https://douploads.com/',
  396. check: function (link, cb, thisArg) {
  397. offlineByFindingString(link, ['File Not Found', 'file was removed'], cb, thisArg)
  398. }
  399. },
  400. dropapk: {
  401. pattern: /^https?:\/\/(www\.)?dropapk\.to\/\w+.*$/m,
  402. multi: ['nopremium.pl'],
  403. title: 'Dropapk',
  404. homepage: 'https://dropapk.to/',
  405. check: function (link, cb, thisArg) {
  406. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  407. }
  408. },
  409. earn4files: {
  410. pattern: /^https?:\/\/(www\.)?earn4files\.com\/\w+.*$/m,
  411. multi: [],
  412. title: 'Earn4Files',
  413. homepage: 'https://earn4files.com/',
  414. check: function (link, cb, thisArg) {
  415. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  416. }
  417. },
  418. expressleech: {
  419. pattern: /^https?:\/\/(www\.)?expressleech\.com\/\w+\.html$/m,
  420. multi: [],
  421. title: 'ExpressLeech',
  422. homepage: 'http://expressleech.com/',
  423. check: function (link, cb, thisArg) {
  424. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  425. }
  426. },
  427. fastshare: {
  428. pattern: /^https?:\/\/fastshare\.cz\/\d+\/.+$/m,
  429. multi: ['nopremium.pl'],
  430. title: 'FastShare.cz',
  431. homepage: 'https://fastshare.cz/',
  432. check: function (link, cb, thisArg) {
  433. offlineByFindingString(link, 'This file is no longer available', cb, thisArg)
  434. }
  435. },
  436. faststore: {
  437. pattern: /^https?:\/\/(www\.)?faststore\.org\/.+$/m,
  438. multi: [],
  439. title: 'Fast store',
  440. homepage: 'http://faststore.org/',
  441. check: function (link, cb, thisArg) {
  442. offlineByFindingString(link, '<b class="err">', cb, thisArg)
  443. }
  444. },
  445. file: {
  446. pattern: /^https?:\/\/(www\.)?file\.al\/\w+\/?.*$/m,
  447. multi: ['premiumize.me'],
  448. title: 'File.AL',
  449. homepage: 'https://file.al/',
  450. check: function (link, cb, thisArg) {
  451. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  452. }
  453. },
  454. fileboom: {
  455. pattern: [/^https?:\/\/(www\.)?fileboom\.me\/\w+\/?.*$/m, /^https?:\/\/(www\.)?fboom\.me\/\w+\/?.*$/m],
  456. multi: [],
  457. title: 'FileBoom.me',
  458. homepage: 'http://fileboom.me/',
  459. check: function (link, cb, thisArg) {
  460. offlineByFindingString(link, 'alert-block', cb, thisArg)
  461. }
  462. },
  463. filecloud: {
  464. pattern: /^http:\/\/filecloud\.io\/\w+(\/.*)?$/m,
  465. multi: [],
  466. title: 'filecloud.io',
  467. homepage: 'http://filecloud.io/',
  468. check: function (link, cb, thisArg) {
  469. // Ask filecloud API.
  470. // https://code.google.com/p/filecloud/wiki/CheckFile
  471. rq.add({
  472. method: 'POST',
  473. url: 'http://api.filecloud.io/api-check_file.api',
  474. data: 'ukey=' + encodeURIComponent(link.url.match(/filecloud\.io\/(\w+)(\/.*)?/)[1]),
  475. onload: function (response) {
  476. const result = JSON.parse(response.responseText)
  477. if (result.status === 'ok') {
  478. if (result.name) {
  479. // Link is online
  480. cb.call(thisArg, link, 1)
  481. } else {
  482. // Link is offline
  483. cb.call(thisArg, link, 0)
  484. }
  485. } else {
  486. cb.call(thisArg, link, -1, 'Strange reply from filecloud API:\n' + response.responseText)
  487. }
  488. },
  489. onerror: function (response) {
  490. cb.call(thisArg, link, 0) // Offline
  491. }
  492. })
  493. }
  494. },
  495. filefactory: {
  496. pattern: /^https?:\/\/(www\.)?filefactory\.com\/file\/.+$/m,
  497. multi: ['nopremium.pl', 'premiumize.me'],
  498. title: 'FileFactory',
  499. homepage: 'http://www.filefactory.com',
  500. check: function (link, cb, thisArg) {
  501. offlineByMatchingFinalUrl(link, /error\.php\?code=/, cb, thisArg)
  502. }
  503. },
  504. fileflares: {
  505. pattern: /^https?:\/\/fileflares.com\/\w+\/?.*$/m,
  506. multi: [],
  507. title: 'Offline: FileFlares.com',
  508. homepage: 'http://fileflares.com/',
  509. check: function (link, cb, thisArg) {
  510. permanentlyoffline(link, cb, thisArg)
  511. }
  512. },
  513. filefox: {
  514. pattern: /^https?:\/\/(www\.)?filefox\.cc\/\w+\/?.*$/m,
  515. multi: [],
  516. title: 'FileFox.cc',
  517. homepage: 'https://filefox.cc/',
  518. check: function (link, cb, thisArg) {
  519. offlineByFindingString(link, 'File could not be found', cb, thisArg)
  520. }
  521. },
  522. filejoker: {
  523. pattern: /^https?:\/\/(www\.)?filejoker\.net\/\w+\/?.*$/m,
  524. multi: [],
  525. title: 'FileJoker',
  526. homepage: 'https://filejoker.net/',
  527. check: function (link, cb, thisArg) {
  528. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  529. }
  530. },
  531.  
  532. filemonkey: {
  533. pattern: /^https?:\/\/www.filemonkey.in\/file\/.+$/m,
  534. multi: ['nopremium.pl'],
  535. title: 'Offline: Filemonkey.in',
  536. homepage: 'https://www.filemonkey.in/',
  537. check: function (link, cb, thisArg) {
  538. permanentlyoffline(link, cb, thisArg)
  539. }
  540. },
  541. filenext: {
  542. pattern: /^https?:\/\/www.filenext.com\/\w+\/.*$/m,
  543. multi: ['nopremium.pl'],
  544. title: 'Filenext',
  545. homepage: 'https://www.filenext.com/',
  546. check: function (link, cb, thisArg) {
  547. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  548. }
  549. },
  550. fileload: {
  551. pattern: /^https:\/\/fileload\.io\/.+$/m,
  552. multi: [],
  553. title: 'fileload.io',
  554. homepage: 'https://fileload.io/',
  555. check: function (link, cb, thisArg) {
  556. offlineByFindingString(link, 'Not found', cb, thisArg)
  557. }
  558. },
  559. filer: {
  560. pattern: /^https:\/\/filer\.net\/get\/\w+$/m,
  561. multi: ['premiumize.me'],
  562. title: 'filer.net',
  563. homepage: 'https://filer.net/',
  564. check: function (link, cb, thisArg) {
  565. offlineByFindingString(link, ['Datei nicht mehr vorhanden', 'Not available', 'Not found'], cb, thisArg)
  566. }
  567. },
  568. filescdn: {
  569. pattern: /^https:\/\/filescdn\.com\/.+$/m,
  570. multi: [],
  571. title: 'filescdn.com',
  572. homepage: 'https://filescdn.com/',
  573. check: function (link, cb, thisArg) {
  574. offlineByFindingString(link, 'icon-warning text-danger', cb, thisArg)
  575. }
  576. },
  577. fileshark: {
  578. pattern: /^https?:\/\/(www\.)?fileshark\.pl\/pobierz\/\d+\/\w+\/.*$/m,
  579. multi: ['nopremium.pl'],
  580. title: 'fileshark.pl',
  581. homepage: 'https://fileshark.pl/',
  582. check: function (link, cb, thisArg) {
  583. offlineByFindingString(link, 'Nie znaleziono pliku w serwisie', cb, thisArg)
  584. }
  585. },
  586. filespace: {
  587. pattern: /^https?:\/\/(www\.)?filespace\.com\/\w+\/?$/m,
  588. multi: ['premiumize.me'],
  589. title: 'FileSpace',
  590. homepage: 'http://filespace.com/',
  591. check: function (link, cb, thisArg) {
  592. offlineByFindingString(link, 'File not found', cb, thisArg)
  593. }
  594. },
  595. filestore: {
  596. pattern: /^https?:\/\/filestore\.to\/\?d=\w+$/m,
  597. multi: ['premiumize.me'],
  598. title: 'Filestore',
  599. homepage: 'http://filestore.to/',
  600. check: function (link, cb, thisArg) {
  601. offlineByFindingString(link, ['File not found', 'Datei nicht gefunden'], cb, thisArg)
  602. }
  603. },
  604. fileup: {
  605. pattern: /^https?:\/\/(www\.)?file-up\.org\/\w+\/?$/m,
  606. multi: [],
  607. title: 'file-up.org',
  608. homepage: 'https://file-up.org/',
  609. check: function (link, cb, thisArg) {
  610. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  611. }
  612. },
  613. fileupload: {
  614. pattern: /^https?:\/\/(www\.)?file-upload\.com\/\w+\/?$/m,
  615. multi: [],
  616. title: 'FileUpload',
  617. homepage: 'https://www.file-upload.com/',
  618. check: function (link, cb, thisArg) {
  619. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  620. }
  621. },
  622. firedrive: {
  623. pattern: /^http:\/\/www\.firedrive\.com\/file\/\w+$/m,
  624. multi: ['nopremium.pl'],
  625. title: 'Offline: Firedrive',
  626. homepage: 'http://www.firedrive.com/',
  627. check: function (link, cb, thisArg) {
  628. permanentlyoffline(link, cb, thisArg)
  629. }
  630. },
  631. fireget: {
  632. pattern: /^https?:\/\/fireget\.com\/\w+\/?.*$/m,
  633. multi: ['premiumize.me'],
  634. title: 'Fireget',
  635. homepage: 'http://fireget.com/',
  636. check: function (link, cb, thisArg) {
  637. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  638. }
  639. },
  640. freakshare: {
  641. pattern: /^http:\/\/freakshare\.com\/files\/\w+\/.+\.html$/m,
  642. multi: [],
  643. title: 'FreakShare',
  644. homepage: 'http://freakshare.com/',
  645. check: function (link, cb, thisArg) {
  646. offlineByFindingString(link, ['This file does not exist', 'Dieser Download existiert nicht'], cb, thisArg)
  647. }
  648. },
  649. free: {
  650. pattern: /^http:\/\/dl\.free\.fr\/\w+$/m,
  651. multi: [],
  652. title: 'Free',
  653. homepage: 'http://dl.free.fr/',
  654. check: function (link, cb, thisArg) {
  655. offlineByFindingString(link, ['ERREUR', 'erreur', 'inexistant'], cb, thisArg)
  656. }
  657. },
  658. gboxes: {
  659. pattern: /^http:\/\/www\.gboxes\.com\/\w+.*$/m,
  660. multi: [],
  661. title: 'Offline: Green Boxes',
  662. homepage: 'http://www.gboxes.com/',
  663. check: function (link, cb, thisArg) {
  664. permanentlyoffline(link, cb, thisArg)
  665. }
  666. },
  667. hitfile: {
  668. pattern: [/^https?:\/\/(www\.)?hitfile\.net\/\w+.*$/m, /^https?:\/\/(www\.)?hil\.to\/\w+.*$/m],
  669. multi: ['nopremium.pl', 'premiumize.me'],
  670. title: 'Hitfile.net',
  671. homepage: 'http://hitfile.net/',
  672. check: function (link, cb, thisArg) {
  673. offlineByFindingString(link, 'File was deleted or not found', cb, thisArg)
  674. }
  675. },
  676. hugefiles: {
  677. pattern: /^http:\/\/hugefiles\.net\/\w+\/?.*$/m,
  678. multi: [],
  679. title: 'Offline: HugeFiles.net',
  680. homepage: 'http://hugefiles.net/',
  681. check: function (link, cb, thisArg) {
  682. permanentlyoffline(link, cb, thisArg)
  683. }
  684. },
  685. inclouddrive: {
  686. pattern: /^https:\/\/www\.inclouddrive\.com\/file\/\w+\/?.*$/m,
  687. multi: ['nopremium.pl'],
  688. title: 'inCLOUDdrive',
  689. homepage: 'https://www.inclouddrive.com/',
  690. check: function (link, cb, thisArg) {
  691. offlineByFindingString(link, ['no longer available', 'has been removed', 'has been deleted'], cb, thisArg)
  692. }
  693. },
  694. isra: {
  695. pattern: /^https:\/\/isra\.cloud\/\w+\/?.*$/m,
  696. multi: ['nopremium.pl', 'premiumize.me'],
  697. title: 'Isracloud',
  698. homepage: 'https://isra.cloud/',
  699. check: function (link, cb, thisArg) {
  700. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  701. }
  702. },
  703. katfile: {
  704. pattern: /^https?:\/\/katfile\.com\/\w+\/?.*$/m,
  705. multi: ['nopremium.pl'],
  706. title: 'Katfile.com',
  707. homepage: 'http://katfile.com/',
  708. check: function (link, cb, thisArg) {
  709. offlineByFindingString(link, ['file not found', 'File has been removed', 'File Not Found', 'The file expired', 'Error</h3>'], cb, thisArg)
  710. }
  711. },
  712. keep2share: {
  713. pattern: [/^https?:\/\/keep2share\.cc\/file\/\w+\/?.*$/m, /^https?:\/\/(spa\.)?k2s\.cc\/file\/\w+\/?.*$/m],
  714. multi: [],
  715. title: 'Keep2Share',
  716. homepage: 'https://keep2share.cc/',
  717. check: function (link, cb, thisArg) {
  718. // https://api.k2s.cc/v1/files/{id}
  719. const fileid = link.url.match(/file\/(\w+)\//)[1]
  720. rq.add({
  721. method: 'GET',
  722. url: 'https://api.k2s.cc/v1/files/' + fileid,
  723. onload: function (response) {
  724. if (response.status === 401) {
  725. cb.call(thisArg, link, -1, 'Please manually open the keep2share website at least once to initiate a proper session.')
  726. return
  727. }
  728. if (response.status !== 200 || !response.responseText) {
  729. cb.call(thisArg, link, 0) // Offline
  730. } else {
  731. const jdata = JSON.parse(response.responseText)
  732. if (jdata.id !== fileid) {
  733. cb.call(thisArg, link, 0) // Offline
  734. return
  735. }
  736. if (jdata.isDeleted) {
  737. cb.call(thisArg, link, 0) // Offline
  738. return
  739. }
  740.  
  741. cb.call(thisArg, link, 1) // Online
  742. }
  743. },
  744. onerror: function (response) {
  745. cb.call(thisArg, link, 0) // Offline
  746. }
  747. })
  748. }
  749. },
  750. kingfile: {
  751. pattern: /^https?:\/\/(\w+\.)?kingfile\.pl\/download\/.+$/m,
  752. multi: ['nopremium.pl'],
  753. title: 'kingfile.pl',
  754. homepage: 'http://kingfile.pl/',
  755. check: function (link, cb, thisArg) {
  756. unkownStatus(link, cb, thisArg)
  757. }
  758. },
  759. kingfiles: {
  760. pattern: /^https?:\/\/(www\.)?kingfiles\.net\/\w+.*$/m,
  761. multi: [],
  762. title: 'KingFiles.net',
  763. homepage: 'http://www.kingfiles.net/',
  764. check: function (link, cb, thisArg) {
  765. const s = ['The file you were looking for could not be found, sorry for any inconvenience', 'Reason for deletion']
  766. rq.add({
  767. method: 'GET',
  768. url: link.url,
  769. onload: function (response) {
  770. if (response.responseText.length === 0) {
  771. cb.call(thisArg, link, 0) // Offline
  772. } else {
  773. for (let i = 0; i < s.length; i++) {
  774. if (response.responseText.indexOf(s[i]) !== -1) {
  775. cb.call(thisArg, link, 0) // Offline
  776. return
  777. }
  778. }
  779. cb.call(thisArg, link, 1) // Online
  780. }
  781. },
  782. onerror: function (response) {
  783. cb.call(thisArg, link, 0) // Offline
  784. }
  785. })
  786. }
  787. },
  788. letitbit: {
  789. pattern: /^https?:\/\/(\w+\.)?letitbit\.net\/download\/(\w|\.)+\/.*$/m,
  790. multi: [],
  791. title: 'Offline: Letitbit.net',
  792. homepage: 'http://letitbit.net/',
  793. check: function (link, cb, thisArg) {
  794. permanentlyoffline(link, cb, thisArg)
  795. }
  796. },
  797. lunaticfiles: {
  798. pattern: /^https?:\/\/lunaticfiles\.com\/\w+\/?.*$/m,
  799. multi: ['nopremium.pl'],
  800. title: 'lunaticfiles.com',
  801. homepage: 'http://lunaticfiles.com/',
  802. check: function (link, cb, thisArg) {
  803. offlineByFindingString(link, ['File Not Found', 'Nie znaleziono pliku'], cb, thisArg)
  804. }
  805. },
  806. mediafire: {
  807. pattern: [/^https?:\/\/www\.mediafire\.com\/?\?.+$/m, /^https?:\/\/www\.mediafire\.com\/download\/.+$/m],
  808. multi: ['nopremium.pl', 'premiumize.me'],
  809. title: 'MediaFire',
  810. homepage: 'https://www.mediafire.com/',
  811. check: function (link, cb, thisArg) {
  812. offlineByMatchingFinalUrl(link, /error\.php/, cb, thisArg)
  813. }
  814. },
  815. mega: {
  816. pattern: [/^https?:\/\/mega\.co\.nz\/#!\w+!*(\w|-)*$/m, /^https?:\/\/mega\.nz\/#!\w+!*(\w|-)*$/m],
  817. multi: ['nopremium.pl', 'premiumize.me'],
  818. title: 'MEGA',
  819. homepage: 'https://mega.co.nz/',
  820. check: function (link, cb, thisArg) {
  821. // Ask mega.co.nz API
  822. rq.add({
  823. method: 'POST',
  824. url: 'https://eu.api.mega.co.nz/cs?id=0',
  825. data: '[{"a":"g","p":"' + link.url.match(/#!(\w+)!/)[1] + '"}]',
  826. headers: { 'Content-Type': 'application/json' },
  827. onload: function (response) {
  828. if (typeof JSON.parse(response.responseText)[0] === 'number') {
  829. // Link is offline
  830. cb.call(thisArg, link, 0)
  831. } else {
  832. // Link is online
  833. cb.call(thisArg, link, 1)
  834. }
  835. },
  836. onerror: function (response) {
  837. cb.call(thisArg, link, 0) // Offline
  838. }
  839. })
  840. }
  841. },
  842. megaup: {
  843. pattern: [/^https?:\/\/megaup\.net\/\w+\/?.*$/m],
  844. multi: ['nopremium.pl'],
  845. title: 'megaup.net',
  846. homepage: 'https://megaup.net/',
  847. check: function (link, cb, thisArg) {
  848. offlineByFindingString(link, '>File not found<', cb, thisArg)
  849. }
  850. },
  851. mexashare: {
  852. pattern: [/^https?:\/\/(www\.)?mexashare\.com\/\w+\/?.*$/m],
  853. multi: [],
  854. title: 'MexaShare',
  855. homepage: 'http://www.mexashare.com/',
  856. check: function (link, cb, thisArg) {
  857. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  858. }
  859. },
  860. mixloads: {
  861. pattern: /^https?:\/\/mixloads\.com\/\w+.*$/m,
  862. multi: [],
  863. title: 'MixLoads.Com',
  864. homepage: 'https://mixloads.com/',
  865. check: function (link, cb, thisArg) {
  866. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  867. }
  868. },
  869. modsbase: {
  870. pattern: [/^https?:\/\/modsbase\.com\/\w+\/?.*$/m],
  871. multi: ['premiumize.me'],
  872. title: 'modsbase',
  873. homepage: 'https://modsbase.com/',
  874. check: function (link, cb, thisArg) {
  875. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  876. }
  877. },
  878. nitroflare: {
  879. pattern: [/^https?:\/\/nitroflare\.com\/view\/.+$/m],
  880. multi: ['nopremium.pl'],
  881. title: 'NitroFlare',
  882. homepage: 'http://nitroflare.com/',
  883. check: function (link, cb, thisArg) {
  884. offlineByFindingString(link, ['be redirect to the main page', ' id="error"'], cb, thisArg)
  885. }
  886. },
  887. novafile: {
  888. pattern: [/^https?:\/\/(www\.)?novafile\.com\/\w+\/?.*$/m],
  889. multi: [],
  890. title: 'Novafile',
  891. homepage: 'http://novafile.com',
  892. check: function (link, cb, thisArg) {
  893. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  894. }
  895. },
  896.  
  897. oboom: {
  898. pattern: /^https?:\/\/www\.oboom\.com\/\w+.*$/m,
  899. multi: [],
  900. title: 'OBOOM.com',
  901. homepage: 'https://www.oboom.com/',
  902. check: function (link, cb, thisArg) {
  903. // Ask oboom API.
  904. rq.add({
  905. method: 'GET',
  906. url: 'https://api.oboom.com/1/info?items=' + encodeURIComponent(link.url.match(/oboom\.com\/(\w+)/)[1]),
  907. onload: function (response) {
  908. const result = JSON.parse(response.responseText)
  909. if (result[0] === 200) {
  910. if (result[1][0].state === 'online') {
  911. // Link is online
  912. cb.call(thisArg, link, 1)
  913. } else {
  914. // Link is offline
  915. cb.call(thisArg, link, 0)
  916. }
  917. } else {
  918. cb.call(thisArg, link, -1, 'Strange reply from oboom API:\n' + response.responseText)
  919. }
  920. },
  921. onerror: function (response) {
  922. cb.call(thisArg, link, 0) // Offline
  923. }
  924. })
  925. }
  926. },
  927. openload: {
  928. pattern: [/^https?:\/\/openload\.co\/f\/.+$/m],
  929. multi: ['nopremium.pl', 'premiumize.me'],
  930. title: 'Offline: Openload',
  931. homepage: 'http://openload.co/',
  932. check: function (link, cb, thisArg) {
  933. permanentlyoffline(link, cb, thisArg)
  934. }
  935. },
  936. ozofiles: {
  937. pattern: [/^https?:\/\/ozofiles\.com\/\w+\/.*$/m],
  938. multi: ['nopremium.pl'],
  939. title: 'Ozofiles.com',
  940. homepage: 'http://ozofiles.com/',
  941. check: function (link, cb, thisArg) {
  942. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  943. }
  944. },
  945. potload: {
  946. pattern: /^http:\/\/potload\.com\/\w+$/m,
  947. multi: [],
  948. title: 'Offline: Potload',
  949. homepage: 'http://potload.com/',
  950. check: function (link, cb, thisArg) {
  951. permanentlyoffline(link, cb, thisArg)
  952. }
  953. },
  954. publish2me: {
  955. pattern: /^https?:\/\/publish2\.me\/file\/\w+\/?.*$/m,
  956. multi: [],
  957. title: 'Publish.me',
  958. homepage: 'https://publish2.me/',
  959. check: function (link, cb, thisArg) {
  960. offlineByFindingString(link, 'alert-block', cb, thisArg)
  961. }
  962. },
  963. rapidgator: {
  964. pattern: [/^https?:\/\/rapidgator\.net\/file\/[^#]+$/m, /^https?:\/\/rg\.to\/file\/[^#]+$/m],
  965. multi: ['nopremium.pl'],
  966. title: 'Rapidgator.net',
  967. homepage: 'http://rapidgator.net/',
  968. check: function (link, cb, thisArg) {
  969. offlineByMatchingFinalUrl(link, /article\/premium/, cb, thisArg)
  970. }
  971. },
  972. rapidu: {
  973. pattern: /^https?:\/\/(\w+\.)?rapidu\.net\/\d+\/.*$/m,
  974. multi: ['nopremium.pl'],
  975. title: 'Rapidu.net',
  976. homepage: 'https://rapidu.net/',
  977. check: function (link, cb, thisArg) {
  978. offlineByFindingString(link, 'File not found', cb, thisArg)
  979. }
  980. },
  981. rapidrar: {
  982. pattern: /^https?:\/\/(\w+\.)?rapidrar\.com\/\w+.*$/m,
  983. multi: ['nopremium.pl'],
  984. title: 'RapidRAR',
  985. homepage: 'https://rapidrar.com/',
  986. check: function (link, cb, thisArg) {
  987. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  988. }
  989. },
  990. rioupload: {
  991. pattern: /^http:\/\/(www\.)?rioupload\.com\/\w+$/m,
  992. multi: [],
  993. title: 'RioUpload',
  994. homepage: 'http://rioupload.com/',
  995. check: function (link, cb, thisArg) {
  996. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  997. }
  998. },
  999. rockfile: {
  1000. pattern: /^https?:\/\/(www\.)?rockfile\.(eu|co)\/\w+.*$/m,
  1001. multi: ['nopremium.pl'],
  1002. title: 'Rockfile.co',
  1003. homepage: 'http://rockfile.co',
  1004. check: function (link, cb, thisArg) {
  1005. // Rockfile has cloudfare protection with a cookie check.
  1006. rq.add({
  1007. method: 'GET',
  1008. url: link.url,
  1009. onprogress: function (response) {
  1010. // abort download of big files
  1011. if ((Math.max(response.loaded, response.total) / 1024) > MAXDOWNLOADSIZE) {
  1012. this.__result.abort()
  1013. cb.call(thisArg, link, 1) // Let's assume big files are online
  1014. }
  1015. },
  1016. onload: function (response) {
  1017. if (response.responseText.indexOf('Checking your browser before accessing') !== -1) {
  1018. cb.call(thisArg, link, -1, 'Cloudfare protection, please manually open the website at least once.') // Cloudfare protection
  1019. return
  1020. } else if (response.responseText.indexOf('File Not Found') !== -1 || response.responseText.indexOf('fa-chain-broken') !== -1) {
  1021. cb.call(thisArg, link, 0) // Offline
  1022. return
  1023. }
  1024. cb.call(thisArg, link, 1) // Online
  1025. },
  1026. onerror: function (response) {
  1027. cb.call(thisArg, link, 0) // Offline
  1028. }
  1029. })
  1030. }
  1031. },
  1032. rusfolder: {
  1033. pattern: /^http:\/\/rusfolder\.com\/\d+$/m,
  1034. multi: [],
  1035. title: 'Rusfolder.com',
  1036. homepage: 'http://rusfolder.com/',
  1037. check: function (link, cb, thisArg) {
  1038. offlineByFindingString(link, 'File not found.', cb, thisArg)
  1039. }
  1040. },
  1041. salefiles: {
  1042. pattern: /^http:\/\/salefiles\.com\/\w+\/?.*$/m,
  1043. multi: [],
  1044. title: 'Salefiles',
  1045. homepage: 'http://salefiles.com',
  1046. check: function (link, cb, thisArg) {
  1047. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1048. }
  1049. },
  1050. 'share-online': {
  1051. pattern: /^http:\/\/www\.share-online\.biz\/dl\/\w+$/m,
  1052. multi: [],
  1053. title: 'Share-Online',
  1054. homepage: 'http://www.share-online.biz/',
  1055. check: function (link, cb, thisArg) {
  1056. offlineByFindingString(link, ['The requested file is not available', 'Die angeforderte Datei konnte nicht gefunden werden'], cb, thisArg)
  1057. }
  1058. },
  1059. sockshare: {
  1060. pattern: /^http:\/\/www\.sockshare\.com\/file\/\w+$/m,
  1061. multi: ['nopremium.pl'],
  1062. title: 'Offline: SockShare',
  1063. homepage: 'http://www.sockshare.com/',
  1064. check: function (link, cb, thisArg) {
  1065. permanentlyoffline(link, cb, thisArg)
  1066. }
  1067. },
  1068.  
  1069. soundcloud: {
  1070. pattern: /^https?:\/\/soundcloud.com\/(\w|-)+\/(\w|-)+$/m,
  1071. multi: [],
  1072. title: 'SoundCloud',
  1073. homepage: 'https://soundcloud.com/',
  1074. check: function (link, cb, thisArg) {
  1075. offlineByFindingString(link, "We can't find that track.", cb, thisArg)
  1076. }
  1077. },
  1078. storebit: {
  1079. pattern: /^https?:\/\/(www\.)?storbit\.net\/file\/.+$/m,
  1080. multi: ['nopremium.pl'],
  1081. title: 'Offline: Storbit.net',
  1082. homepage: 'http://storbit.net',
  1083. check: function (link, cb, thisArg) {
  1084. permanentlyoffline(link, cb, thisArg)
  1085. }
  1086. },
  1087. spicyfile: {
  1088. pattern: /^https?:\/\/(www\.)?spicyfile\.com\/\w+$/m,
  1089. multi: ['premiumize.me'],
  1090. title: 'spicyfile.com',
  1091. homepage: 'http://spicyfile.com',
  1092. check: function (link, cb, thisArg) {
  1093. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1094. }
  1095. },
  1096. streamcloud: {
  1097. pattern: /^http:\/\/streamcloud\.eu\/\w+$/m,
  1098. multi: [],
  1099. title: 'Offline: Streamcloud',
  1100. homepage: 'http://streamcloud.org/',
  1101. check: function (link, cb, thisArg) {
  1102. permanentlyoffline(link, cb, thisArg)
  1103. }
  1104. },
  1105. streamin: {
  1106. pattern: /^https?:\/\/streamin\.to\/.+$/m,
  1107. multi: ['nopremium.pl'],
  1108. title: 'Streamin.to',
  1109. homepage: 'http://streamin.to/',
  1110. check: function (link, cb, thisArg) {
  1111. offlineByFindingString(link, 'File Deleted', cb, thisArg)
  1112. }
  1113. },
  1114. subyshare: {
  1115. pattern: /^https?:\/\/subyshare\.com\/\w+\/?.*$/m,
  1116. multi: [],
  1117. title: 'Subyshare.com',
  1118. homepage: 'http://subyshare.com/',
  1119. check: function (link, cb, thisArg) {
  1120. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1121. }
  1122. },
  1123. suprafiles: {
  1124. pattern: [/^https?:\/\/suprafiles\.(me|net|org)\/\w+\/?.*$/m, /^https?:\/\/srfiles\.com\/\w+\/?.*$/m],
  1125. multi: [],
  1126. title: 'Offline: Suprafiles',
  1127. homepage: 'http://suprafiles.org/',
  1128. check: function (link, cb, thisArg) {
  1129. permanentlyoffline(link, cb, thisArg)
  1130. }
  1131. },
  1132. turbobit: {
  1133. pattern: [/^https?:\/\/turbobit\.net\/\w+.*\.html$/m, /^https?:\/\/turb\.(to|cc)\/\w+.*\.html$/m],
  1134. multi: ['nopremium.pl', 'premiumize.me'],
  1135. title: 'turbobit.net',
  1136. homepage: 'http://turbobit.net/',
  1137. check: function (link, cb, thisArg) {
  1138. offlineByFindingString(link, ['File not found', 'File was not found'], cb, thisArg)
  1139. }
  1140. },
  1141. tusfiles: {
  1142. pattern: /^https?:\/\/(www\.)?tusfiles\.net\/\w+$/m,
  1143. multi: ['nopremium.pl'],
  1144. title: 'TusFiles',
  1145. homepage: 'http://tusfiles.net/',
  1146. check: function (link, cb, thisArg) {
  1147. offlineByFindingString(link, 'The file you are trying to download is no longer available', cb, thisArg)
  1148. }
  1149. },
  1150. ubiqfile: {
  1151. pattern: /^https?:\/\/ubiqfile\.com\/\w+$/m,
  1152. multi: ['premiumize.me'],
  1153. title: 'ubiqfile',
  1154. homepage: 'http://ubiqfile.com/',
  1155. check: function (link, cb, thisArg) {
  1156. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1157. }
  1158. },
  1159. unibytes: {
  1160. pattern: /^http:\/\/www\.unibytes\.com\/\w+-\w+$/m,
  1161. multi: ['nopremium.pl'],
  1162. title: 'Unibytes.com',
  1163. homepage: 'http://www.unibytes.com/',
  1164. check: function (link, cb, thisArg) {
  1165. offlineByFindingString(link, 'File not found', cb, thisArg)
  1166. }
  1167. },
  1168. unlimitzone: {
  1169. pattern: /^http:\/\/unlimitzone\.com\/\w+.*$/m,
  1170. multi: [],
  1171. title: 'Unlimit Zone',
  1172. homepage: 'http://unlimitzone.com/',
  1173. check: function (link, cb, thisArg) {
  1174. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1175. }
  1176. },
  1177. up07: {
  1178. pattern: /^https?:\/\/up07\.net\/\w+$/m,
  1179. multi: [],
  1180. title: 'up07.net',
  1181. homepage: 'http://up07.net/',
  1182. check: function (link, cb, thisArg) {
  1183. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1184. }
  1185. },
  1186. upera: {
  1187. pattern: /^http:\/\/public\.upera\.co\/\w+$/m,
  1188. multi: [],
  1189. title: 'Upera',
  1190. homepage: 'http://public.upera.co/',
  1191. check: function (link, cb, thisArg) {
  1192. offlineByFindingString(link, 'Invalid or Deleted File', cb, thisArg)
  1193. }
  1194. },
  1195. uploadable: {
  1196. pattern: /^http:\/\/www\.uploadable\.ch\/file\/\w+\/(\w|-|\.)+$/m,
  1197. multi: [],
  1198. title: 'Offline: Uploadable.ch',
  1199. homepage: 'http://www.uploadable.ch/',
  1200. check: function (link, cb, thisArg) {
  1201. permanentlyoffline(link, cb, thisArg)
  1202. }
  1203. },
  1204. uploadac: {
  1205. pattern: [/^https?:\/\/upload\.ac\/\w+\/?.*$/m, /^https?:\/\/uplod\.io\/\w+\/?.*$/m],
  1206. multi: [],
  1207. title: 'Upload.ac',
  1208. homepage: 'https://upload.ac/',
  1209. check: function (link, cb, thisArg) {
  1210. offlineByFindingString(link, 'No File Found', cb, thisArg)
  1211. }
  1212. },
  1213. uploadboy: {
  1214. pattern: [/^http:\/\/(www\.)?uploadboy\.com\/\w+\.html$/m, /^https?:\/\/uploadboy\.(me|com)\/\w+\/?.*$/m],
  1215. multi: ['nopremium.pl', 'premiumize.me'],
  1216. title: 'Uploadboy.com',
  1217. homepage: 'http://uploadboy.com/',
  1218. check: function (link, cb, thisArg) {
  1219. offlineByFindingString(link, ['File Not Found', 'not be found', 'File not found'], cb, thisArg)
  1220. }
  1221. },
  1222. uploaded: {
  1223. pattern: [/^https?:\/\/uploaded\.(net|to)\/file\/.+$/m, /^http:\/\/ul\.to\/.+$/m],
  1224. multi: ['nopremium.pl', 'premiumize.me'],
  1225. title: 'uploaded.net',
  1226. homepage: 'http://uploaded.net/',
  1227. check: function (link, cb, thisArg) {
  1228. // offlineByMatchingFinalUrl(link,[/uploaded\.net\/404/,/uploaded\.net\/410/], cb, thisArg);
  1229. offlineByFindingString(link, 'Error: ', cb, thisArg)
  1230. }
  1231. },
  1232. uploadgig: {
  1233. pattern: /^https?:\/\/uploadgig\.com\/file\/download\/\w+\/?.*$/m,
  1234. multi: ['nopremium.pl'],
  1235. title: 'UploadGIG',
  1236. homepage: 'https://uploadgig.com/',
  1237. check: function (link, cb, thisArg) {
  1238. offlineByFindingString(link, 'File not found', cb, thisArg)
  1239. }
  1240. },
  1241. uploadingcom: {
  1242. pattern: /^http:\/\/uploading\.com\/\w+\/?.*$/m,
  1243. multi: ['nopremium.pl'],
  1244. title: 'Uploading.com',
  1245. homepage: 'http://uploading.com/',
  1246. check: function (link, cb, thisArg) {
  1247. offlineByFindingString(link, ['class="file_error"', 'file not found', 'file was removed'], cb, thisArg)
  1248. }
  1249. },
  1250. uploading: {
  1251. pattern: /^http:\/\/(www\.)?uploading\.site\/\w+.*$/m,
  1252. multi: ['nopremium.pl'],
  1253. title: 'Uploading.site',
  1254. homepage: 'http://uploading.site/',
  1255. check: function (link, cb, thisArg) {
  1256. offlineByFindingString(link, ['cannot be found', 'was removed', 'for deletion'], cb, thisArg)
  1257. }
  1258. },
  1259. uploadocean: {
  1260. pattern: /^https?:\/\/uploadocean\.com\/\w+$/m,
  1261. multi: [],
  1262. title: 'UploadOcean',
  1263. homepage: 'http://uploadocean.com/',
  1264. check: function (link, cb, thisArg) {
  1265. offlineByFindingString(link, 'deleted.png"', cb, thisArg)
  1266. }
  1267. },
  1268. uploadon: {
  1269. pattern: /^http:\/\/uploadon\.me\/\w+\.html$/m,
  1270. multi: [],
  1271. title: 'Uploadon.me',
  1272. homepage: 'http://uploadon.me/',
  1273. check: function (link, cb, thisArg) {
  1274. offlineByFindingString(link, ['File not found', 'This page was not found'], cb, thisArg)
  1275. }
  1276. },
  1277. uploadrocket: {
  1278. pattern: /^http:\/\/uploadrocket\.net\/\w+(\/|\w|-|\.)+(\.html)?$/m,
  1279. multi: ['nopremium.pl'],
  1280. title: 'UploadRocket.net',
  1281. homepage: 'http://uploadrocket.net/',
  1282. check: function (link, cb, thisArg) {
  1283. offlineByFindingString(link, 'The file was removed by administrator', cb, thisArg)
  1284. }
  1285. },
  1286. uppit: {
  1287. pattern: /^http:\/\/uppit\.com\/\w+(\/.*)?$/m,
  1288. multi: [],
  1289. title: 'UppIT',
  1290. homepage: 'http://uppit.com/',
  1291. check: function (link, cb, thisArg) {
  1292. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1293. }
  1294. },
  1295. uptobox: {
  1296. pattern: /^https?:\/\/uptobox.com\/\w+(\/.*)?$/m,
  1297. multi: ['nopremium.pl'],
  1298. title: 'Uptobox',
  1299. homepage: 'http://uptobox.com/',
  1300. check: function (link, cb, thisArg) {
  1301. offlineByFindingString(link, '<span class="para_title">File not found', cb, thisArg)
  1302. }
  1303. },
  1304. userscloud: {
  1305. pattern: /^https?:\/\/userscloud\.com\/\w+.*$/m,
  1306. multi: ['premiumize.me'],
  1307. title: 'Userscloud',
  1308. homepage: 'https://userscloud.com/',
  1309. check: function (link, cb, thisArg) {
  1310. offlineByFindingString(link, ['label-danger', 'The file is no longer available'], cb, thisArg)
  1311. }
  1312. },
  1313. usersdrive: {
  1314. pattern: /^https?:\/\/usersdrive\.com\/\w+.*$/m,
  1315. multi: [],
  1316. title: 'Usersdrive',
  1317. homepage: 'https://usersdrive.com/',
  1318. check: function (link, cb, thisArg) {
  1319. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1320. }
  1321. },
  1322. vevo: {
  1323. pattern: /^https?:\/\/www\.vevo\.com\/watch\/.+$/m,
  1324. multi: [],
  1325. title: 'VEVO',
  1326. homepage: 'https://www.vevo.com/',
  1327. check: function (link, cb, thisArg) {
  1328. // At the moment there seems to be no straightforward way to get the online/offline status
  1329. cb.call(thisArg, link, 1) // Online
  1330. }
  1331. },
  1332. vidlox: {
  1333. pattern: /^https?:\/\/vidlox\.me\/\w+.*$/m,
  1334. multi: ['nopremium.pl'],
  1335. title: 'vidlox.me',
  1336. homepage: 'https://vidlox.me/',
  1337. check: function (link, cb, thisArg) {
  1338. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1339. }
  1340. },
  1341. vidoza: {
  1342. pattern: /^https?:\/\/vidoza\.org\/\w+.*$/m,
  1343. multi: ['nopremium.pl'],
  1344. title: 'vidoza.org',
  1345. homepage: 'https://vidoza.org/',
  1346. check: function (link, cb, thisArg) {
  1347. offlineByFindingString(link, ['File Not Found', 'file was deleted', 'File was deleted', 'Video is processing now'], cb, thisArg)
  1348. }
  1349. },
  1350. vidto: {
  1351. pattern: /^https?:\/\/vidto\.me\/\w+\.?\w*$/m,
  1352. multi: ['nopremium.pl'],
  1353. title: 'vidto.me',
  1354. homepage: 'http://vidto.me/',
  1355. check: function (link, cb, thisArg) {
  1356. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1357. }
  1358. },
  1359. vimeo: {
  1360. pattern: /^https?:\/\/vimeo\.com\/(.+\/)?\d+\/?$/m,
  1361. multi: [],
  1362. title: 'Vimeo',
  1363. homepage: 'https://vimeo.com/',
  1364. check: function (link, cb, thisArg) {
  1365. offlineByFindingString(link, 'Page not found', cb, thisArg)
  1366. }
  1367. },
  1368. vipfile: {
  1369. pattern: /^http:\/\/(\w+.)?vip-file.(com|net)\/downloadlib\/.*$/m,
  1370. multi: [],
  1371. title: 'VIP-file',
  1372. homepage: 'http://vip-file.net/',
  1373. check: function (link, cb, thisArg) {
  1374. offlineByFindingString(link, 'File not found', cb, thisArg, link.url + '?lang=en')
  1375. }
  1376. },
  1377. wdupload: {
  1378. pattern: /^https?:\/\/www\.wdupload\.com\/file\/\w+\/?.*$/m,
  1379. multi: ['premiumize.me'],
  1380. title: 'wdupload.com',
  1381. homepage: 'http://wdupload.com/',
  1382. check: function (link, cb, thisArg) {
  1383. offlineByFindingString(link, 'file-error', cb, thisArg)
  1384. }
  1385. },
  1386. worldbytez: {
  1387. pattern: /^https?:\/\/worldbytez\.com\/\w+$/m,
  1388. multi: ['premiumize.me'],
  1389. title: 'worldbytez.com',
  1390. homepage: 'https://worldbytez.com/',
  1391. check: function (link, cb, thisArg) {
  1392. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1393. }
  1394. },
  1395. wrzucajpliki: {
  1396. pattern: /^https?:\/\/wrzucajpliki\.pl\/\w{0,6}.*$/m,
  1397. multi: ['premiumize.me'],
  1398. title: 'wrzucajpliki.pl',
  1399. homepage: 'http://wrzucajpliki.pl/',
  1400. check: function (link, cb, thisArg) {
  1401. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1402. }
  1403. },
  1404. xubster: {
  1405. pattern: /^https?:\/\/(www\.)?xubster\.com\/\w+\/?.*$/m,
  1406. multi: ['premiumize.me'],
  1407. title: 'xubster.com',
  1408. homepage: 'https://xubster.com/',
  1409. check: function (link, cb, thisArg) {
  1410. offlineByFindingString(link, 'File Not Found', cb, thisArg)
  1411. }
  1412. },
  1413. youtube: {
  1414. pattern: /^https?:\/\/www\.youtube\.com\/watch(\?v=|\/).+$/m,
  1415. multi: ['nopremium.pl'],
  1416. title: 'YouTube',
  1417. homepage: 'https://www.youtube.com/',
  1418. check: function (link, cb, thisArg) {
  1419. offlineByFindingString(link, '<title>YouTube</title>', cb, thisArg)
  1420. }
  1421. },
  1422. zippyshare: {
  1423. pattern: /^https?:\/\/www\d*\.zippyshare\.com\/v\/\w+\/file\.html$/m,
  1424. multi: ['nopremium.pl', 'premiumize.me'],
  1425. title: 'Zippyshare.com',
  1426. homepage: 'http://www.zippyshare.com/',
  1427. check: function (link, cb, thisArg) {
  1428. offlineByFindingString(link, 'does not exist', cb, thisArg)
  1429. }
  1430. }
  1431.  
  1432. }
  1433. }