less copy protection, more size visualization
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

589 lines
17 KiB

  1. const attributionData = {
  2. sources: [
  3. {
  4. prefix: "./media/buildings/",
  5. files: [
  6. { name: "house.svg", source: null },
  7. { name: "mailbox.svg", source: null },
  8. { name: "mobile-home.svg", source: null },
  9. ],
  10. authors: [
  11. "chemicalcrux"
  12. ]
  13. },
  14. {
  15. prefix: "./media/buildings/skyscrapers/",
  16. files: [
  17. { name: "wide.svg", source: null },
  18. { name: "medium.svg", source: null },
  19. { name: "slender.svg", source: null },
  20. { name: "narrow.svg", source: null },
  21. ],
  22. authors: [
  23. "chemicalcrux"
  24. ]
  25. },
  26. {
  27. prefix: "./media/characters/abysgar/",
  28. files: [
  29. { name: "front.svg", source: "https://www.furaffinity.net/view/32424108/" }
  30. ],
  31. authors: [
  32. "clown-grin",
  33. "labratkuma"
  34. ],
  35. owners: [
  36. ]
  37. },
  38. {
  39. prefix: "./media/characters/adake/",
  40. files: [
  41. { name: "front-1.svg", source: "https://www.furaffinity.net/view/26253324/" },
  42. { name: "front-2.svg", source: "https://www.furaffinity.net/view/26253324/" },
  43. { name: "back.svg", source: "https://www.furaffinity.net/view/26253324/" },
  44. { name: "kneel.svg", source: "https://www.furaffinity.net/view/26253324/" },
  45. ],
  46. authors: [
  47. "oselotti"
  48. ],
  49. owners: [
  50. "Dialuca01"
  51. ]
  52. },
  53. {
  54. prefix: "./media/characters/aigey/",
  55. files: [
  56. { name: "side.svg", source: "https://www.furaffinity.net/view/12006265/" }
  57. ],
  58. authors: [
  59. "just-a-little-mixed-up"
  60. ],
  61. owners: [
  62. ]
  63. },
  64. {
  65. prefix: "./media/characters/akari/",
  66. files: [
  67. { name: "front.svg", source: "https://www.furaffinity.net/view/21329356/" }
  68. ],
  69. authors: [
  70. "spyropurple"
  71. ],
  72. owners: [
  73. ]
  74. },
  75. {
  76. prefix: "./media/characters/andy/",
  77. files: [
  78. { name: "front.svg", source: null }
  79. ],
  80. authors: [
  81. "cardboardhead"
  82. ],
  83. owners: [
  84. ]
  85. },
  86. {
  87. prefix: "./media/characters/angelpatamon/",
  88. files: [
  89. { name: "front.svg", source: "http://www.furaffinity.net/view/26475369/" }
  90. ],
  91. authors: [
  92. "mallowchu"
  93. ]
  94. },
  95. {
  96. prefix: "./media/characters/appledectomy/",
  97. files: [
  98. { name: "front.svg", source: "https://www.furaffinity.net/view/33002197/" }
  99. ],
  100. authors: [
  101. "stonerabbit"
  102. ],
  103. owners: [
  104. "appledectomy"
  105. ]
  106. },
  107. {
  108. prefix: "./media/characters/asana/",
  109. files: [
  110. { name: "front.svg", source: "https://www.furaffinity.net/view/35087729/" },
  111. { name: "back.svg", source: "https://www.furaffinity.net/view/35087729/" },
  112. ],
  113. authors: [
  114. "silverwingink"
  115. ],
  116. owners: [
  117. "aviraptia"
  118. ]
  119. },
  120. {
  121. prefix: "./media/characters/asana/",
  122. files: [
  123. { name: "front.svg", source: "https://www.furaffinity.net/view/35087729/" },
  124. { name: "back.svg", source: "https://www.furaffinity.net/view/35087729/" },
  125. ],
  126. authors: [
  127. "silverwingink"
  128. ],
  129. owners: [
  130. "aviraptia"
  131. ]
  132. },
  133. {
  134. prefix: "./media/characters/asana-mech/",
  135. files: [
  136. { name: "side.svg", source: null }
  137. ],
  138. authors: [
  139. "ashtrek"
  140. ],
  141. owners: [
  142. "aviraptia"
  143. ]
  144. },
  145. {
  146. prefix: "./media/characters/ashtrek/",
  147. files: [
  148. { name: "front.svg", source: null },
  149. { name: "front-armor.svg", source: null },
  150. ],
  151. authors: [
  152. "silverwingink"
  153. ],
  154. owners: [
  155. "ashtrek"
  156. ]
  157. },
  158. {
  159. prefix: "./media/characters/blake/",
  160. files: [
  161. { name: "side.svg", source: "https://www.furaffinity.net/view/30676178/" },
  162. { name: "crouched.svg", source: "https://www.furaffinity.net/view/30676178/" },
  163. { name: "bent.svg", source: "https://www.furaffinity.net/view/30676178/" },
  164. ],
  165. authors: [
  166. "zyraxus"
  167. ],
  168. owners: [
  169. "kurrikage"
  170. ]
  171. },
  172. {
  173. prefix: "./media/characters/cibus/",
  174. files: [
  175. { name: "side.svg", source: "https://www.furaffinity.net/view/15534343/" }
  176. ],
  177. authors: [
  178. "jaydom"
  179. ],
  180. owners: [
  181. "movler"
  182. ]
  183. },
  184. {
  185. prefix: "./media/characters/gemini/",
  186. files: [
  187. { name: "front.svg", source: "https://www.furaffinity.net/view/31363584/" },
  188. { name: "back.svg", source: "https://www.furaffinity.net/view/31363584/" },
  189. ],
  190. authors: [
  191. "rebonica"
  192. ],
  193. owners: [
  194. "geminimacro"
  195. ]
  196. },
  197. {
  198. prefix: "./media/characters/gemini/",
  199. files: [
  200. { name: "kneeling.svg", source: "https://www.furaffinity.net/view/31295122/" },
  201. ],
  202. authors: [
  203. "furrypur"
  204. ],
  205. owners: [
  206. "geminimacro"
  207. ]
  208. },
  209. {
  210. prefix: "./media/characters/jaro/",
  211. files: [
  212. { name: "front.svg", source: "https://www.furaffinity.net/view/26084387/" },
  213. { name: "back.svg", source: "https://www.furaffinity.net/view/26084387/" }
  214. ],
  215. authors: [
  216. "mizumisensei"
  217. ],
  218. owners: [
  219. "jaro-the-dragon"
  220. ]
  221. },
  222. {
  223. prefix: "./media/characters/malfressa/",
  224. files: [
  225. { name: "side.svg", source: "https://www.furaffinity.net/view/25377262/" },
  226. { name: "feral.svg", source: "https://www.furaffinity.net/view/25377262/" }
  227. ],
  228. authors: [
  229. "d-eath-tail"
  230. ],
  231. owners: [
  232. "scareye"
  233. ]
  234. },
  235. {
  236. prefix: "./media/characters/malfressa/",
  237. files: [
  238. { name: "walking.svg", source: "https://www.furaffinity.net/view/23877052/" }
  239. ],
  240. authors: [
  241. "kerneldecoy"
  242. ],
  243. owners: [
  244. "scareye"
  245. ]
  246. },
  247. {
  248. prefix: "./media/characters/nibbles/",
  249. files: [
  250. { name: "front.svg", source: "https://www.furaffinity.net/view/22964778/" },
  251. { name: "side.svg", source: "https://www.furaffinity.net/view/22964778/" },
  252. ],
  253. authors: [
  254. "dragga"
  255. ],
  256. owners: [
  257. "movler"
  258. ]
  259. },
  260. {
  261. prefix: "./media/characters/piper/",
  262. files: [
  263. { name: "front.svg", source: "https://www.furaffinity.net/view/22964778/" }
  264. ],
  265. authors: [
  266. "brit-bork"
  267. ],
  268. owners: [
  269. "flyhar"
  270. ]
  271. },
  272. {
  273. prefix: "./media/characters/rikky/",
  274. files: [
  275. { name: "side.svg", source: null }
  276. ],
  277. authors: [
  278. "ethan64"
  279. ],
  280. owners: [
  281. "quake-yote"
  282. ]
  283. },
  284. {
  285. prefix: "./media/characters/rogue/",
  286. files: [
  287. { name: "front.svg", source: "http://rogue.macrophile.com/ken" }
  288. ],
  289. authors: [
  290. "cougr"
  291. ],
  292. owners: [
  293. "rogue"
  294. ]
  295. },
  296. {
  297. prefix: "./media/characters/surgo/",
  298. files: [
  299. { name: "front.svg", source: "https://www.furaffinity.net/view/33348481/" },
  300. { name: "back.svg", source: "https://www.furaffinity.net/view/33348481/" },
  301. { name: "laying.svg", source: "https://www.furaffinity.net/view/33348481/" },
  302. ],
  303. authors: [
  304. "gaiawolfess",
  305. "malakhael"
  306. ],
  307. owners: [
  308. "movler"
  309. ]
  310. },
  311. {
  312. prefix: "./media/characters/tiberius/",
  313. files: [
  314. { name: "front.svg", source: "https://www.furaffinity.net/view/34977812/" },
  315. { name: "back.svg", source: "https://www.furaffinity.net/view/34977812/" }
  316. ],
  317. authors: [
  318. "rebonica"
  319. ],
  320. owners: [
  321. "movler"
  322. ]
  323. },
  324. {
  325. prefix: "./media/characters/",
  326. files: [
  327. { name: "", source: "" }
  328. ],
  329. authors: [
  330. ]
  331. },
  332. {
  333. prefix: "./media/objects/humans/",
  334. files: [
  335. { name: "woman-1.svg", source: "https://commons.wikimedia.org/wiki/File:1Silhouette_Female.svg" }
  336. ],
  337. authors: [
  338. "phil-bronnery",
  339. "beao"
  340. ]
  341. },
  342. {
  343. prefix: "./media/objects/humans/",
  344. files: [
  345. { name: "man-1.svg", source: "https://commons.wikimedia.org/wiki/File:Silhouette.svg" }
  346. ],
  347. authors: [
  348. ]
  349. },
  350. {
  351. prefix: "./media/vehicles/",
  352. files: [
  353. { name: "titanic.svg", source: "https://creazilla.com/nodes/873-titanic-silhouette" },
  354. { name: "vertical-titanic.svg", source: "https://creazilla.com/nodes/873-titanic-silhouette" }
  355. ],
  356. authors: [
  357. ]
  358. },
  359. ],
  360. people: {
  361. "appledectomy": {
  362. name: "Appledectomy",
  363. url: "https://www.furaffinity.net/user/appledectomy"
  364. },
  365. "ashtrek": {
  366. name: "Ashtrek",
  367. url: "https://www.furaffinity.net/user/ashtrek/"
  368. },
  369. "aviraptia": {
  370. name: "Aviraptia",
  371. url: "https://www.furaffinity.net/user/aviraptia/"
  372. },
  373. "beao": {
  374. name: "Beao",
  375. url: "https://commons.wikimedia.org/wiki/User:Beao"
  376. },
  377. "brit-bork": {
  378. name: "Koijot",
  379. url: "https://twitter.com/Brit_Bork",
  380. },
  381. "cardboardhead": {
  382. name: "cardboardhead",
  383. url: "https://twitter.com/cardboardhead"
  384. },
  385. "chemicalcrux": {
  386. name: "chemicalcrux",
  387. url: "https://www.furaffinity.net/user/chemicalcrux"
  388. },
  389. "clown-grin": {
  390. name: "clown-grin",
  391. url: "https://www.furaffinity.net/user/clown-grin"
  392. },
  393. "cougr": {
  394. name: "Cougr",
  395. url: "https://www.furaffinity.net/user/cougr"
  396. },
  397. "d-eath-tail": {
  398. name: "Deathy",
  399. url: "https://www.furaffinity.net/user/d-eath-tail"
  400. },
  401. "Dialuca01": {
  402. name: "Dialuca",
  403. url: "https://www.furaffinity.net/user/dialuca01"
  404. },
  405. "dragga": {
  406. name: "Dragga",
  407. url: "https://www.furaffinity.net/user/dragga"
  408. },
  409. "ethan64": {
  410. name: "Ethan64",
  411. url: "https://www.furaffinity.net/user/ethan64/"
  412. },
  413. "flyhar": {
  414. name: "Flyhar",
  415. url: "https://www.furaffinity.net/user/flyfeline/"
  416. },
  417. "furrypur": {
  418. name: "FurryPur",
  419. url: "https://www.furaffinity.net/user/furrypur/"
  420. },
  421. "gaiawolfess": {
  422. name: "Gaiawolfess",
  423. url: "https://www.furaffinity.net/user/gaiawolfess"
  424. },
  425. "geminimacro": {
  426. name: "geminimacro",
  427. url: "https://www.furaffinity.net/user/lajay"
  428. },
  429. "jaro-the-dragon": {
  430. name: "Jaro",
  431. url: "https://www.furaffinity.net/user/jarothedragon/"
  432. },
  433. "jaydom": {
  434. name: "Jaydom",
  435. url: "https://www.furaffinity.net/user/jaydom"
  436. },
  437. "just-a-little-mixed-up": {
  438. name: "just-a-little-mixed-up",
  439. url: "https://www.furaffinity.net/user/just-a-little-mixed-up"
  440. },
  441. "kerneldecoy": {
  442. name: "Kernel Decoy",
  443. url: "https://www.furaffinity.net/user/kerneldecoy/"
  444. },
  445. "kurrikage": {
  446. name: "Kurrikage",
  447. url: "https://www.furaffinity.net/user/kurrikage/"
  448. },
  449. "labratkuma": {
  450. name: "labratkuma",
  451. url: "https://www.furaffinity.net/user/labratkuma"
  452. },
  453. "malakhael": {
  454. name: "Malakhael",
  455. url: "https://www.furaffinity.net/user/malakhael"
  456. },
  457. "mallowchu": {
  458. name: "Mallowchu",
  459. url: "https://www.furaffinity.net/user/mallowchu"
  460. },
  461. "mizumisensei": {
  462. name: "Mizumisensei",
  463. url: "https://twitter.com/mizumisensei"
  464. },
  465. "movler": {
  466. name: "Movler",
  467. url: "https://www.furaffinity.net/user/movler/"
  468. },
  469. "oselotti": {
  470. name: "Oselotti",
  471. url: "https://www.furaffinity.net/user/oselotti"
  472. },
  473. "phil-bronnery": {
  474. name: "Phil Bronnery",
  475. url: "https://www.flickr.com/people/27919241@N02"
  476. },
  477. "quake-yote": {
  478. name: "Quake Yote",
  479. url: "https://www.furaffinity.net/user/rokossovskiy"
  480. },
  481. "rebonica": {
  482. name: "Rebonica",
  483. url: "https://www.furaffinity.net/user/rebonica"
  484. },
  485. "rogue": {
  486. name: "Rogue Megawolf",
  487. url: "https://twitter.com/roguemegawolf"
  488. },
  489. "scareye": {
  490. name: "Scareye",
  491. url: "https://www.furaffinity.net/user/scareye/"
  492. },
  493. "silverwingink": {
  494. name: "silverwingink",
  495. url: "https://www.furaffinity.net/gallery/silverwingink/"
  496. },
  497. "spyropurple": {
  498. name: "spyropurple",
  499. url: "https://www.furaffinity.net/user/spyropurple/"
  500. },
  501. "stonerabbit": {
  502. name: "stonerabbit",
  503. url: "https://www.furaffinity.net/user/stonerabbit/"
  504. },
  505. "zyraxus": {
  506. name: "Zyraxus",
  507. url: "https://www.furaffinity.net/user/zyraxus"
  508. }
  509. }
  510. }
  511. const attribution = {};
  512. function prepareAttribution() {
  513. attribution["files"] = {};
  514. attributionData.sources.forEach(citation => {
  515. citation.files.forEach(file => {
  516. attribution.files[citation.prefix + file.name] = {
  517. authors: citation.authors,
  518. owners: citation.owners,
  519. source: file.source
  520. }
  521. })
  522. });
  523. }
  524. function authorsOf(file) {
  525. if (attribution.files[file])
  526. return attribution.files[file].authors;
  527. else
  528. return undefined;
  529. }
  530. function authorsOfFull(file) {
  531. if (attribution.files[file]) {
  532. const result = [];
  533. attribution.files[file].authors.forEach(author => {
  534. result.push(attributionData.people[author]);
  535. });
  536. return result;
  537. }
  538. else
  539. return undefined;
  540. }
  541. function ownersOf(file) {
  542. if (attribution.files[file])
  543. return attribution.files[file].owners;
  544. else
  545. return undefined;
  546. }
  547. function ownersOfFull(file) {
  548. if (attribution.files[file]) {
  549. if (attribution.files[file].owners !== undefined) {
  550. const result = [];
  551. attribution.files[file].owners.forEach(owner => {
  552. result.push(attributionData.people[owner]);
  553. });
  554. return result;
  555. } else {
  556. return [];
  557. }
  558. }
  559. else
  560. return undefined;
  561. }
  562. function sourceOf(file) {
  563. if (attribution.files[file])
  564. return attribution.files[file].source;
  565. else
  566. return undefined;
  567. }
  568. prepareAttribution();