2013-08-09 6 views
5

पर कई टेक्स्ट फाइलों को बड़े पैमाने पर अपलोड करें मेरे पास कई टेक्स्ट फ़ाइलें हैं जिन्हें मैं विकी चल रहे मीडियाविकि पर अपलोड करना चाहता हूं। मुझे यह भी नहीं पता कि यह वास्तव में संभव है या नहीं, लेकिन मैं इसे एक शॉट देना चाहता हूं।मीडियाविकि

प्रत्येक टेक्स्ट फ़ाइल का नाम विकी पेज का शीर्षक होगा।

एक फ़ाइल के लिए एक विकी पेज।

मैं एक ही फ़ोल्डर से सभी पाठ फ़ाइलों को अपलोड करने के रूप में कार्यक्रम में है चाहता हूँ।

शायद यह कोड करने के लिए सभी बहुत ज्यादा पूछ रहा है आप पूछ रहे हैं, तो आप मुझे बता सकते हैं कम से कम जो भाषा मैं के लिए दिखना चाहिए इसे एक शॉट देने के लिए?

उत्तर

6

का उपयोग करके आपके लिए लेख बनाने के लिए आप शायद bot क्या चाहते हैं। शायद पाइथन के लिए सबसे अच्छा ज्ञात बॉट फ्रेमवर्क pywikipedia है, लेकिन कई अन्य भाषाओं के लिए API libraries and bot frameworks भी हैं।

वास्तव में, प्यविकिपीडिया pagefromfile.py नामक एक स्क्रिप्ट के साथ आता है जो कि आप जो चाहते हैं उसके करीब कुछ करता है। डिफ़ॉल्ट रूप से, यह एक फ़ाइल से कई पेज बनाता है, लेकिन यदि आप कुछ पायथन जानते हैं, तो इसे बदलने में बहुत मुश्किल नहीं होनी चाहिए।


वास्तव में, यदि फ़ाइलें एक ही सर्वर आपके विकि पर चलता है पर कर रहे हैं (या आप उन्हें वहाँ अपलोड कर सकते हैं), तो आप भी एक बॉट बिल्कुल जरूरत नहीं है: वहाँ एक मीडियाविकि maintenance scriptimportTextFile.php कहा जाता है कि कर सकते हैं तुम्हारे लिए करू। आप इसे में सभी फ़ाइलों के लिए एक दिया निर्देशिका में एक सरल खोल स्क्रिप्ट के साथ जैसे चला सकते हैं,:

for file in directory/*.txt; do 
    php /path/to/your/mediawiki/maintenance/importTextFile.php "$file"; 
done 

(जाहिर है, निर्देशिका अपने मीडियाविकि स्थापना की वास्तविक पथ के साथ पाठ फ़ाइलें और /path/to/your/mediawiki युक्त directory बदलें।)

डिफ़ॉल्ट रूप से, importTextFile.php फ़ाइल नाम पर बनाए गए पृष्ठ का नाम आधार देगा, किसी भी निर्देशिका उपसर्ग और एक्सटेंशन को अलग कर देगा। इसके अलावा, प्रति मानक मीडियाविकि पेज नामकरण नियमों के अनुसार, अंडरस्कोर रिक्त स्थान से प्रतिस्थापित किए जाएंगे और पहला अक्षर कैपिटल किया जाएगा (जब तक कि आपके स्थानीय Settings.php में turned that off न हो); इस प्रकार, उदाहरण के लिए, फ़ाइल directory/foo_bar.txt पृष्ठ "फू बार" के रूप में आयात किया जाएगा। यदि आप पृष्ठ नामकरण पर बेहतर नियंत्रण चाहते हैं, तो importTextFile.php भी एक स्पष्ट --title पैरामीटर का समर्थन करता है। या आप पेज नामकरण नियमों को बदलने के लिए हमेशा स्क्रिप्ट कॉपी कर सकते हैं और इसे स्वयं संशोधित कर सकते हैं।


Ps। edit.php नामक एक और मीडियाविकि रखरखाव स्क्रिप्ट भी है जो importTextFile.php जैसा ही है, सिवाय इसके कि यह मानक इनपुट से पृष्ठ टेक्स्ट पढ़ता है और इसमें importTextFile.php के सुविधाजनक डिफ़ॉल्ट पृष्ठ नामकरण नियम नहीं हैं। यद्यपि यूनिक्स पाइपलाइनों का उपयोग करके स्वचालित संपादन के लिए यह काफी आसान हो सकता है।


परिशिष्ट: importTextFile.php स्क्रिप्ट उम्मीद फ़ाइल नाम और सामग्री UTF-8 एन्कोडिंग में किया जाना है। यदि आपकी फ़ाइलें किसी अन्य एन्कोडिंग में हैं, तो आपको रूपांतरण करने के लिए पहले उन्हें ठीक करना होगा या स्क्रिप्ट को संशोधित करना होगा, उदा। mb_convert_encoding() का उपयोग कर।

  1. फ़ाइल नाम UTF-8 में बदलने के लिए, संपादित titleFromFilename() फ़ंक्शन, के तल के पास:

    विशेष रूप से, स्क्रिप्ट में निम्न संशोधन यह करना चाहिए script, और इसकी आखिरी पंक्ति की जगह:

    return $parts[0]; 
    

    साथ:

    return mb_convert_encoding($parts[0], "UTF-8", "your-encoding"); 
    

    जहां your-encodingcharacter encoding आपके फ़ाइल नामों के लिए उपयोग किया जाना चाहिए (या auto ऑटो-डिटेक्शन का प्रयास करने के लिए)।

  2. भी फ़ाइलों की सामग्री, एक समान परिवर्तन उच्च अप, परिवर्तित करने के लिए स्क्रिप्ट का मुख्य कोड के अंदर बनाने के लिए, लाइन की जगह:

    $text = file_get_contents($filename); 
    

    साथ:

    $text = file_get_contents($filename); 
    $text = mb_convert_encoding($text, "UTF-8", "your-encoding"); 
    
+0

@llmari Karonen आपको बहुत बहुत धन्यवाद। मैं सिर्फ यह जानना चाहता हूं कि कौन सी विधि सबसे तेज़ है। कौन सा सबसे तेज़ पोस्टिंग की गारंटी देता है। और वहां से मैंने कई एक्सटेंशन जैसे मल्टीप्लोड, अपलोडलोकल, अपलोड विज़ार्ड देखा। क्या आप बताए गए तरीकों से तेज़ हो सकते हैं? – user1849133

+0

@llmari Karonen और यदि वास्तव में सबसे तेज़ तरीका है, तो वह कितना तेज़ है? अगर मेरे पास आकार 10 केबी के साथ 10000 txt फ़ाइलें हैं, तो यह कितनी तेज़ होगी? मैंने परीक्षण किया कि मेरे FTP पर 1.2% 10kb txt फ़ाइल प्रति 1 सेकंड प्रति सेकंड अपलोड करता है। लेकिन वास्तव में उन अपलोड की गई फ़ाइलों को मीडियाविकी में पोस्ट करना कितना तेज़ होगा? – user1849133

+2

यह _really_ धीमी अपलोड गति है। क्या आप 90 के दशक से पुराने मॉडेम का उपयोग कर रहे हैं? MediaWiki में फ़ाइलों को आयात करने के लिए, निश्चित रूप से सर्वर पर फ़ाइलों को अपलोड करने के लिए तेज़ी से होना चाहिए (शायद इसे .zip/.tar.gz संग्रह में तेज़ी से बनाने के लिए) और importTextFile.php (या edit.php का उपयोग करें, जो कि चाहिए एक बॉट का उपयोग करने के बजाय समान रूप से तेज़ हो)। मुझे लगता है कि एक आमंत्रण में सभी फाइलों को आयात करने के लिए स्क्रिप्ट को संशोधित करना भी तेज़ होगा, लेकिन शायद बदलाव करने और उन्हें परीक्षण करने के लिए समय लेने के लिए पर्याप्त नहीं है। –

0

मीडियाविकि 1.27 में, एक नई रखरखाव स्क्रिप्ट है, importTextFiles.php, जो यह कर सकता है। जानकारी के लिए https://www.mediawiki.org/wiki/Manual:ImportTextFiles.php देखें। यह पुराने (अब हटाया गया) importTextFile.php स्क्रिप्ट पर सुधार करता है जिसमें यह फ़ाइल वाइल्डकार्ड को संभाल सकता है, इसलिए यह कई टेक्स्ट फ़ाइलों को एक बार में आयात करने की अनुमति देता है।

संबंधित मुद्दे