TPB sex study

De Design numérique
Révision datée du 6 mai 2022 à 11:10 par Theophilegm (discussion | contributions) (Visualisation des données)
Aller à : navigation, rechercher

Projet

Il se passe des choses intéréssentes sur Internet. Cet espace virtuel ou les humains dialoguent, échangent, partagent une multitude d'informations à propos d'un spectre de sujets tellement important qu'il y a un certains nombre de règles nommé "Règles d'internets" qui dictent notamment que Tout choses, dans le monde physique et le monde virtuel à un équivalent erotisé et/ou pornographique.

The Pirate Bay est un site web ( et plusieurs sites proxy) permettant de partager via [ Bittorrent] des contenues, souvant illégaux, comme des films, des série télévisé, des logiciels, et même des livres numériques et des pdfs. Les sites est divisé en rubriques, par exemples les contenues les plus télécharger de tout les temps.

Or, dans la section top 100 ebook, il semble y avoir un pourcentage des documents proposés soit systèmatiquement relatif au thématique du Sex et des relations sexuelles. Allant de contenue explicitement pornographique (pdf de la revue Playboy) à des livres de conseils de drague et même de plus en plus des livres qui pourraient être considéré comme politique (culture queer, féminisme).

À travers le web scraping du top 100de la section ebook dans The Pirate Bay et le recroisement de ces données dans la durée, je compte observer la place du thème de la sexualité, pour voir l'évolution au cours du temps des contenues les plus téléchargé dans le top 100 ainsi que les thématique plus précise proposé.

Les donnée sont récupérer directement du site via web scraping et sont encodé directement dans une base de donnée mariadb. Ensuite, plusieurs routine SQL vont généré des statistiques relative à chaque document, notamment en grâce à des mots-clés et les nombre de Seeder et Leecher.

La visualisation de ces données prend la forme de soit un flux RSS qui contiendrait un résumé des dernières donnée et des statistiques au cours du temps, soit une publication générative d'un epub contenant des information sous la forme d'un almanach, une sorte de revue.

Un projet future pourrait prendre en compte toute les sections top 100 de TPB, mais aussi recoupé avec les dernier ajouts les plus populaire, accèssible à l'addresse {proxy}/top/48h600.

Bittorrent

Le partage des médias sur les réseaux torrents utilisent le protocole Bittorrent.

Bittorrent fonctionne en connection pair à pair , le contenue étant distribué à travers plusieurs utilisateur qui ont un contenue (Seeder) vers les utilisateurs qui télécharge ce contenue (Leecher). Chaque Leecher a un client bittorrent qui va d'abord se charger de se connecter et récupérer des bribes de donnée auprès de chaque Seeder connecté au réseaux crée autour du contenue. Des que le Leecher à le contenue (même partiel), le client bittorrent va envoyer des données à d'autres Leechers, devenant Seeder à son tour.

Ce système permet de distribué sur le réseaux de partage les contenue et les capacité de partage. Bittorrent est donc plus résilient qu'un server conventionel qui proposerait le contenue, car il existe plusieurs copie du contenue, à travers le monde parfois.

Cependant, il faut des Seeder pour pouvoir télécharger un contenue. Il existe des système de ratio téléchargement/partage, pour forcer les Seeder à continuer à partager le contenue. The Pirate Bay n'utilise pas un système de ratio. Les Seeder restent connectée par simple bonne volonté de partage.

De plus, ce réseaux n'est par réellement décentralisé ou distribué car les liens vers les contenues sont référencé principalement sur le site web.

Techniques et Outils

DB: base de donnée, ou DataBase

Le projet complet se trouve dans ce repo Codeberg. Le README.md contient les informations d'installation. !! Attention, il est préférable de travailler depuis Linux. Bon courage si vous est sur un autre OS.

Vue d'ensemble

Le diagram des liens relationnelles entre les tables de la DB est créer grâce à yEd graph editor.

L'idée principale est de lancer périodiquement le web scraper. À chaque lancement, il scrape le contenue de la page Top 100 ebooks, qui se trouve à cette adresse : {url du proxy ThePirateBay}/601/top

Il encode tout d'abord la table load_data, qui contient les information du scraping. En même temps, il remplit la table load_entry avec chaque document du top 100, avec la clé de load_data pour identifier ces nouvelles données au scraping qui les a récupéré.



Diagramme relationnelle fait avec Yed

Détails technique

Le projet utilise le framework Python de webcrawling Scrapy et MariaDB comme base de donnée relationnelle.

Les table sont créer via PHPMyAdmin au préalable. Dans le repository Codeberg ce trouve un export de la structure de la base de donnée. Il suffit de l'importer avec PHPMyAdmin pour montrer

Secondaire mais important, la mise en place de proxy vers tor avec Docker, Docker-compose comme conteneur, des scripts divers et Scrapy pour accéder à The Pirate Bay en échappant au blocage DNS(Dynamique Name System) par les ISP(Internet Service Providers), le site permettant le téléchargement de contenue protéger par le droit d'auteur et le copyright et donc illégale.

Le crawler(script qui va récuperer les information aka tpbspider.py + les scripts qui envoi les information vers la DB aka items.py et pipeline.py) va récuperer les information de TPB (tpbspider.py), les encode dans un dic qui comprend les champs qui nous intéresse (Item.py) et qui l'appelle comme fonction (TpbItem()). Puis, le script spider envoi vers le script qui encode dans la DB (Pipeline.py), en utilisant un utilisateur mariadb appelé crawler pour s'y connecter. Cet utilisateur a des permissions limité pour mieux conteneurisé les accès à la DB.

Visualisation des données

(À venir) Ensuite une série de routine SQL se chargerait de de généré les statistiques, et les mot clé/catégories seront soit entré à la mains après un référencement manuel des titres des document listé dans la DB, soit à travers du traitement syntaxique automatisé, avec Pytorch, une library python de machine learning par exemple.

Le résulat final prendrais probablement la forme d'un site web, où l'on pourrait généré un epub à un instant précis, sous la forme de sorte d'almanach contenant différentes statistiques et information extrait de la DB.

Pour le moment, je suis en train d'étudier les possibilité de deux librairie python pour généré des epub:

      * EbookLib
      * pypub